paypal支付对接相关问题总结

来源:互联网 发布:如何描述淘宝店铺 编辑:程序博客网 时间:2024/06/01 09:48

最近在做对接paypal支付的项目。项目的开发时间紧,但paypal开发者文档内容又很多,并且是英文的,这无疑增加了开发难度。有句古话,欲速则不达。因为对开发者文档理解不够,浪费了不少时间。接入心得总结如下,避免后来者重复踩坑。

首先,需要确定采用paypal支付的何种方式?paypal提供了多种支付方式,如标准支付和快速支付,其中标准支付誉为最佳实践。标准支付主要特点是只需要集成paypal按钮,所有的付款流程由paypal控制,接入方不需要关心支付细节。当用户完成支付后,paypal会通过同步PDT或者异步IPN机制来通知接入方,这种方式比较轻量级,对接难度最小,而且对借入方的入侵较小。而快速支付相对复杂,支付过程由接入方控制,通过调用3个接口来实现。从接入方网页跳转到paypal支付页面前,第一个接口触发,用于向paypal申请支付token。接着用户进入paypal支付页面,并进行支付授权,授权接口中会提交上一步获取的支付token,这个过程由paypal控制,并且没有进行实际支付,接着接入方调用第二个接口,用于获取用户的授权信息,包括支付金额,支付产品等信息,这些基础信息核对无误后,调用第三个接口,进行实际付费扣款,扣款成功后,paypal同样会进行同步PDT和异步IPN通知,这种方式很灵活,控制力强,但编码复杂度较高,入侵性较大。从实际情况考虑,我们选择了采标标准支付方式接入paypal支付。

第二步,需要了解paypal支付的IPN和PDT两种通知方式,IPN异步通知,可能会有时延,但可靠性高,当接入方主机不可达时,有重试机制保证IPN通知尽量抵达接入方服务器。接入方收到IPN通知后,需要对其确认。确认方法为,把接收到的IPN通知原封不动的作为请求体,调用IPN确认接口。PDT通知是是实时的,但可靠性不高,因为只会通知一次,没有重试机制,一旦接入方出现主机不可达,这样的消息将会被丢失。官方推荐,IPN通知和PDT通知最好混合使用,以满足时效性和可靠性的保证。我们采用了IPN和PDT两种通知机制。

第三步,在对paypal支付方式和付款通知机制了解以后,就可以进入到开发阶段。开发完成后,最重要的是如何进行paypal支付的沙盒测试。我在这一步困顿了很久,在这里需要重点说明一下,paypal的账号体系。通过https://www.paypal.com注册的账号是真实账号。如果仅用于测试,那么这个真实账号既可以是个人账号,又可以是企业账号。紧接着利用这个真实账号登录https://developer.paypal.com,登录之后点击右上角的Dashboard,接着点击左侧Sandbox下面的Accounts如下图所示,



这时,你看到已经默认创建好的两个沙盒账号,一个是Busness商家沙盒账号,另一个是personal买家沙盒账号,这两个账号就是用于沙盒环境测试的两个账号。现在这两个沙盒账号,并没有与测试账号进行关联,如果不关联的话,利用这个沙盒账号并不能收到IPN通知和PDT通知。如何做关联呢?点击上图中蓝色链接log in with PayPal,这个链接会跳转到一个页面,在这个页面,你需要用你的沙盒账号进行登录,沙盒账号的登录密码,可以通过选中沙盒账号,这时会出现profile,点击profile进行更改设置。当登录成功以后,沙盒账号就和测试账号进行关联了,Business账号和Personal账号都需要做这样的关联。沙盒Business账号作为服务端使用,沙盒Personal账号作为支付账号。这样就可以顺利的接收到IPN通知,并且验证通过。PDT通知还需要单独设置,设置过程如下,利用沙盒Business账号登录https://www.sandbox.paypal.com/home,登录之后,点击销售工具,如下图,



接着点击网站习惯设定中的更新按钮,如下图



只需调整自动返回和付款数据传输两项设置,并设置为开启,另外返回URL填入PDT回调的通知接口,需要能够被外网访问到。设置完成后,点击下面的保存按钮,这时会返回到上一层页面。当再次以同样的方式打开这个页面,就会在付款数据传输这一栏下面显示身份标识,这个身份标识用于PDT通知校验的token。到此,PDT通知机制已经配置完成。

总之,paypal支付集成最大的困难不是开发本身,而是弄清楚paypal支付方式,IPN和PDT通知机制,以及沙盒账号的创建,并如何把沙盒账号与测试账号进行关联。搞清楚这些,开发就很简单了。




0 0
原创粉丝点击