PayPal:是海外的一家支付平台。
PayPal官网地址
官网:https://paypal.com
开发者网站:https://developer.paypal.com
沙盒地址:https://www.sandbox.paypal.com/
Demo地址:https://demo.paypal.com
接口文档参考:PayPal Demo
开发流程图:
我们就是要做上图这么一件事,下面是详细的开发步骤。
一、注册个人账号
注册地址:https://www.paypal.com/us/webapps/mpp/account-selection
选择即可。
只需按部就班填写即可,此处不再截图注册流程。
二、创建测试账号
开发者网站:https://developer.paypal.com/
用上面注册的账户登录开发者网站,在工作台上创建一个商户账号和一个买家账号,用于开发和测试。
在创建买家账户的时候,别忘了给买家账户里多加一些钱。
三、获取clientId和secret
在调用REST API时要在请求头中加入token,而token是用clientId和secret获取的。
四、获取token
其中tokenUrl为:https://api.sandbox.paypal.com/v1/oauth2/token
对应接口文档地址:https://developer.paypal.com/docs/api/overview/#make-your-first-call
注意:token具有时效性。
五、预交易(下单)
这是一个预交易接口,即调用后不会真正的发生金钱交易,只是告诉PayPal有个用户一会要支付1000元买手机,你给我生成一个支付链接,我把这个链接给用户,让他去到你网站支付。调用此接口后会返回支付链接和查询此交易的查询链接。
是一个实体类,和接口文档中的请求json结构一致。
是用户确认付支付后,PayPal向我们商户跳转的连接,PayPal会带有一些参数,同时我们也可以把我们的流水号放进去。
是用户在paypal界面点击取消付款后,paypal想我们商户跳转的连接。
到此,用户已经拿到了付款连接,可以跳转到paypal进行付款了。
对应接口文档地址:https://developer.paypal.com/docs/api/payments/v1/#payment_create
六、执行付款
当用户在paypal界面完成付款后,paypal就会重定向到我们送给他的:
其中executeUrl为:https://api.sandbox.paypal.com/v1/payments/payment
注意:不能在此方法内调用商户系统进行发货,因为这个请求可能不是paypal发来的,我们应该是后台通知时再通知商户系统发货。
对应的接口文档地址:https://developer.paypal.com/docs/api/payments/v1/#payment_execute
后台通知
可以使用卖家账户登录沙盒环境,点击”卖家习惯设定“ > “收款和管理我的风险” > “即时付款通知”。
直达链接:https://www.sandbox.paypal.com/c2/cgi-bin/webscr?cmd=_profile-display-handler&tab_id=SELLER_PREFERENCES
其中checkUrl:https://www.sandbox.paypal.com/cgi-bin/webscr
对应接口文档地址:https://www.paypal.com/us/cgi-bin/webscr?cmd=p/acc/ipn-info-outside
七、单笔查询
如果我们没收到后台通知怎么办?这时候就可以通过单笔查询主动去paypal查询订单状态。
其中queryUrl:https://api.sandbox.paypal.com/v1/payments/payment
paymentId是在预交易接口返回的。
对应接口文档地址:https://developer.paypal.com/docs/api/payments/v1/#payment_get
批量查询
如果需要日终对账,那么就要用到批量查询接口。也可以循环使用单笔查询代替的。
对应接口文档地址:https://developer.paypal.com/docs/api/payments/v1/#payment_list