php购物网站支付paypal使用方法


Posted in PHP onNovember 28, 2010

详细参考:

https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_Appx_websitestandard_htmlvariables

定义常量paypalurl

const PAYPAL_URL = 'https://www.sandbox.paypal.com/';

将要传送的数据记录为一个数组

$paypalData = array(
                   'add'                => 1,
                    'cmd'               => '_ext-enter',
                    'redirect_cmd'    => '_xclick',
                    'business'            => $paypalAccount, --------liangliangfeng211@gmail.com这个是收款人的paypal账号
                    'item_name'       => '51customimprint shopping cart',
                    'item_number'   => $order->id,
                    'first_name'        => $address->first_name,
                    'last_name'         => $address->last_name,
                    'address1'           => $address->address1,
                    'city'                     => $address->city,
                    'state'                  => $address->state_or_province,
                    'zip'                      => $address->zip_code,
                    'amount'            => $order->subtotal,
                    'shipping'          => $order->shipping_fee,
                    'no_note'            => 1,
                    'currency_code'    => 'USD',
                    'lc'                      => 'US'
                );

将这个数组转化为一个url地址

$paypalArguments = array();
                foreach($paypalData as $k => $v){
                    array_push($paypalArguments, $k . '=' . urlencode($v));
                }
                $paypalUrl = self::PAYPAL_URL . '?' . implode('&', $paypalArguments);
                $this->_redirect($paypalUrl);

接下来,我们测试的时候,应该将Paypal接口的地址设置为:

https://www.sandbox.paypal.com/cgi-bin/webscr

基本的流程
当客户向您付款时,PayPal将向位于指定 URL (type=”hidden” name=”notify_url” value=” “)的服务器发送一个通知。此通知中将包括您的客户的所有付款信息(例如,客户名称、金额),以及一段加密代码。当服务器收到通知时,它随后会将该信息(包括加密代码)发送回安全的PayPal URL。PayPal将通过检查加密字符串对交易进行身份验证。这种将 IPN 数据传回PayPal的操作防止了“欺骗”,因此您可以确保 IPN 来自PayPal。在进行验证时,PayPal会将其合法性的确认信息发送回您的服务器。

提示:要启用即时付款通知,您将需要输入一个 URL,通过它您可以接收到来自您的用户信息的通知。

启用了即时付款通知后,每次当您接收付款时您的服务器都会收到一个通知,此通知将以隐藏的“FORM POST”的方式发送到指定的 URL,并将包括所有付款信息。此页面的底部列出了通知的 FORM 变量。

每次收到来自PayPal的 IPN 时,您必须在实施订单之前完成如下所述的通知确认过程。确认列出的信息将可确保交易合法。

通知确认IPN
为了确保付款已进入您的PayPal账户,您必须验证用作“receiver_email”的电子邮件地址是否已在您的PayPal账户中注册并得到确认。

服务器收到即时付款通知后,您将需要通过构建一个发送到PayPal的 HTTP POST 对其进行确认。您的 POST 应发送到 https://www.paypal.com/cgi-bin/webscr

您必须完全按照收到表单变量时的原样发送所有收到的表单变量。您还需要将一个值为“_notify-validate”的名为“cmd”变量(例如,cmd=_notify-validate)附加到 POST 字符串。

PayPal将回复该 POST,并在回复的正文中包含一个单词“VERIFIED”或“INVALID”。当您收到 VERIFIED 回复时,您需要在实施订单之前执行若干检查:

确认“payment_status”为“Completed”,因为系统也会为其他结果(如“Pending”或“Failed”)发送 IPN。
检查“txn_id”是否未重复,以防止欺诈者重复使用旧的已完成的交易。
验证“receiver_email”是已在您的PayPal账户中注册的电子邮件地址,以防止将付款发送到欺诈者的账户 。
检查其他交易详情(如物品号和价格),以确认价格未改变完成了以上检查后,您可以使用 IPN 数据更新您的数据库,并处理购物。
如果收到“无效”通知,则应将其视为可疑通知,并应对其进行调查。

PHP 相关文章推荐
PHP的FTP学习(一)
Oct 09 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
Mar 19 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
php中session退出登陆问题
Feb 27 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
PHP制作万年历
Jan 07 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
IP攻击升级,程序改进以对付新的攻击
Nov 23 #PHP
php下封装较好的数字分页方法
Nov 23 #PHP
php下使用iconv需要注意的问题
Nov 20 #PHP
批量修改RAR文件注释的php代码
Nov 20 #PHP
为PHP初学者的8点有效建议
Nov 20 #PHP
PHP程序员最常犯的11个MySQL错误小结
Nov 20 #PHP
Windows 下的 PHP-PEAR 安装方法
Nov 20 #PHP
You might like
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
smarty实例教程
2006/11/19 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
node.js基础知识汇总
2020/08/25 Javascript
python 实现归并排序算法
2012/06/05 Python
优化Python代码使其加快作用域内的查找
2015/03/30 Python
Python文件如何引入?详解引入Python文件步骤
2018/12/10 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
PHP如何删除一个Cookie值
2012/11/15 面试题
母亲节感恩活动记录
2014/03/16 职场文书
服装发布会策划方案
2014/05/22 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
整改落实自查报告
2014/11/05 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python