我晕, 最近这个用 paypal 付款的功能搞了我 2 天, 还没搞完郁闷死了
先做个笔记, 把已经搞定的部分写下来, 省的以后忘了
1 注册 SandBox 账号, 并且建立两个虚拟账号, 可以选择自动建立的那一项一个 buyer, 一个 seller 以供 开发的时候测试使用
2 实现快速购买的代码链接暂时指向 SandBox 便于开发时的测试以后再改成正式的
代码如下:
- if(!defined("_f_afficherButtonPayPal"))
- { define("_f_afficherButtonPayPal",1);
- function afficherButtonPayPal($nbr_point,$montant)
- {
- echo" ";
- echo "
- // 这个是刚才建立的 seller 的账号
- // 付款的币种, 我写的是欧元
- // 快速付款的总金额
- // 显示的 paypal 图片
- ";
- }
- }
3 将已经付款的信息传回去, 应该是要用 IPN, 还没搞定, 再接再励
补充资料:
从参考文档得知:
Paypal 专门开发了 Sandbox 给开发人员进行开发测试
首先到 https://developer.paypal.com/ 注册一个开发帐号,
再进入 Sandbox 建立测试用的 Paypal 虚拟帐号(至少应该建立一个 Business 的和一个 Personal 的),
这种账号注册方法和 Paypal 的流程一样, 信息可以是假的, 包括银行帐号信用卡(其实 Paypal Sandbox 会自动生成
一些随机的号码)接着激活 Paypal Sandbox 的虚拟帐号, 注意, 这里不管你在 Paypal Sanbox 注册时填什么邮件地
址, 有任何发送到虚拟帐号所填邮箱的邮件都存会在开发帐号的管理界面中的 Email 页 (导航栏上有) 中登录 Sandbox
的虚拟 Paypal 环境, 还需要验证虚拟帐号的银行, 这里可以随便填, 然后通过 Add Funds 来给账户充值(想填多少填多
少)然后, 还需要激活 IPN 的选项, 在 Business 的那个账户的 Profile 设置页面中, 点击, 然后点击 Edit 按钮, 打开
IPN, 这里如果你使用的是固定的 IPN Handle, 可以直接将地址填入
接下来, 我们测试的时候, 应该将 Paypal 接口的地址设置为 https://www.sandbox.paypal.com/cgi-bin/webscr
最后基本的流程为:
用户在我们的网站上选择商品放入购物车, 然后检查准备支付
网站根据购物车中的商品, 生成 Paypal 的支付表单(也是提交到上面 IPN 用的 Paypal 接口地址), 包含了此次交易的一
些信息 (下次会专门找机会解释一下) 并在自己的数据库中生成一张订单记录
Paypal 在 Session 中记录下这些交易信息
用户用 Paypal 账户登录 Paypal(Sandbox 用 Sandbox 的虚拟帐号), 复查明细, 点击 Pay 按钮
Paypal 进行交易处理, 如果我们的 Paypal 收款帐号在接受帐款上没有什么问题(没有特别的需要 Accept 的地方), 交易
完成, 那么 Paypal 会发送一个 IPN, 并发送提示邮件
我们 IPN Handler 接受到信息, 首先向 Paypal 进行校验, 如果信息正确, 然后根据信息和自己数据库中进行比对, 如果
无误, 可以将支付信息保存, 并修改订单状态
然后 Paypal 会显示一个界面表示交易完成, 此时如果用户点击 Return 按钮, Paypal 会将用户送回我们网站指定地点
我们网站迎接用户回来, 向用户表示感谢, 并进行提醒, 给出订单号等等
应为我最后需求的只是要一个总价的结算, 并不需要和网店接合. 所以简单了很多. 只要把总价生成, 放进 paypal 里就基本算
完成了. 如果网店的话还需要在 paypal 里设置一大堆的参数. 比较麻烦.
来源: https://www.php1.cn/detail/php-1714921c98.html