PayPal:是海外的一家支付平台。

PayPal官网地址

官网:https://paypal.com

开发者网站:https://developer.paypal.com

沙盒地址:https://www.sandbox.paypal.com/

Demo地址:https://demo.paypal.com

 接口文档参考:PayPal Demo

开发流程图:

Paypal支付java官方文档 paypal支付接口步骤_paypal

 

 

我们就是要做上图这么一件事,下面是详细的开发步骤。

一、注册个人账号

注册地址:https://www.paypal.com/us/webapps/mpp/account-selection

选择即可。

 

 

Paypal支付java官方文档 paypal支付接口步骤_开发者_02

Paypal支付java官方文档 paypal支付接口步骤_开发者_03

只需按部就班填写即可,此处不再截图注册流程。

二、创建测试账号

开发者网站:https://developer.paypal.com/

用上面注册的账户登录开发者网站,在工作台上创建一个商户账号和一个买家账号,用于开发和测试。

 

Paypal支付java官方文档 paypal支付接口步骤_支付_04

在创建买家账户的时候,别忘了给买家账户里多加一些钱。

三、获取clientId和secret

在调用REST API时要在请求头中加入token,而token是用clientId和secret获取的。

 

Paypal支付java官方文档 paypal支付接口步骤_接口文档_05

Paypal支付java官方文档 paypal支付接口步骤_paypal_06

四、获取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

 

Paypal支付java官方文档 paypal支付接口步骤_paypal_07

其中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