paypal支付详细指南:基于PayPal-PHP-SDK进行接口对接

2018-12-09 21:20 栏目:技术开发 查看(35849)

做过跨境电商或者在海外购物网站逛过的朋友都应该知道PayPal,类似于国内流行的支付宝和微信支付,都属于第三方支付平台。在做外贸支付的时候不得不提到的就是PayPal了,毕竟它在国外的市场占有率摆在哪里,当然据做外贸的朋友介绍在东南亚某些国家和地区支付宝的市场份额反超了PayPal。

背景介绍

由于在国内,做的项目需要使用PayPal的并不多,就算有时候需要做外贸项目,很多选择第四方集成。据做外贸的朋友介绍,之所以选择第四方支付是因为虽然在海外PayPal的市场占有率是最高的,然而这种在线支付的普及率远不如国内。而如果分别对接各种第三方支付或者银行支付,将需要对接很多平台,开发成本太高;而做的项目服务不在乎多一点支付的手续费。比如PayPal的手续费是3.9%+0.3美元(每笔),而第四方的相对高个1%左右;从中也可以看得出虽然我们经常吐槽支付宝和微信手续费是暴利,但从此看来国内的支付公司很良心了。

好了,步入正题,对接PayPal支付有多种支付方式,比如按钮支付之类的,而今天我们要跟大家介绍的就是基于PayPal官方提供的PayPal-PHP-SDK进行支付(也就是REST API Samples的方式)的简洁版指南;希望帮助大家能花尽可能少的时间快速实现支付对接。

前期准备

其实跟微信支付宝类似,就是注册帐号然后成为开发者;当然PayPal跟支付宝一样有沙箱模式,因此在开发阶段我们可以使用沙箱帐号来做开发,这样可以不用签约也可以进行开发工作。主要步骤如下:

1、首先去官网注册一个paypal账号。

2、申请完毕并登录,进入开发者中心(https://developer.paypal.com)。可以进入沙箱帐号:

微信截图_20181209194948

即可看到你申请账号自动配属的两个测试账号,账号类别分别是:卖家帐号和买家帐号,默认就有9999美元,不过跟支付宝一样,都是虚拟的用于测试,也可以手工修改余额。

微信截图_20181209195252

然后给两个账号设置密码,点击账号展开,然后点击Profile,会弹出账号信息框,里面可以设置密码等一堆属性。

微信截图_20181209195412

2、进入我的应用程序和证书(My Apps & Credentials)申请APP(不是app客户端,意思是应用,跟支付宝开放平台的应用概念类似)。

微信截图_20181209195702

然后点击REST API apps栏目下面的Create App按钮,写进一个APP名称,然后选择一个测试账户作为此APP绑定的账号,如果你在上一步没有申请新的测试账号(也可以另外创建测试的卖家帐号和买家帐号的,比如创建一个美国地区的卖家帐号和一个日本地区的买家帐号),那么这里默认就是选择了卖家帐号。

微信截图_20181209195826

3、然后打开创建的应用,可以看到应用的Client ID和Secret。

微信截图_20181209195954

4、paypal的沙箱模式测试环境域名为sandbox.paypal.com,正式域名为www.paypal.com。如果是使用官方的SDK,那么直接设置mode为sandbox就是沙箱模式,而设置为live,也就是线上的意思。

5、官方提供了web开发的SDK,包括Java、.net、node、php、Python、Ruby等,也包含移动客户端开发的ios和安卓的。这里的指南是以php为例。

官方SDK地址为:https://developer.paypal.com/docs/api/rest-sdks/。这个地址包含所有SDK的下载入口,都是托管到github上面的。

微信截图_20181209201017

6、设置异步通知地址,推荐的方式是在获取应用的Client ID和Secret的页面下面部分可以设置回调通知的url,如图所示。也可以在卖家帐号中设置PIN的url,经过测试,如果设置了这个就以PIN为准,而且两个地方paypal异步通知的数据包参数并不一样。关于paypal异步通知设置后续如果有机会跟大家详细介绍。

微信截图_20181209204158

对接过程

1、创建一个支付,发送到paypal服务端以获取用户授权url。具体代码我就不帖了,SDK的demo代码中都有,下面的地址就是从paypal服务端获取的用户授权url,注意这并不是类似支付宝那样的支付url,别掉这坑里了。

微信截图_20181209201730

 

其中在发起支付的时候除了设置商品及金额信息外,还需要设置两个url,一个是支付url,另外一个是取消支付的url。这里的url并不是类似支付宝支付的同步回调地址,支付宝的同步回调地址访问前实际上支付已经完成了,而这里是需要到达支付页面完成支付的。

这个地方一定要注意了,这也是跟支付宝支付一个不太一样的地方。支付宝的只要获取支付url,然后去支付宝网站里面就可以完成支付,然后异步通知。而paypal首先去其官网仅仅是获取用户的授权而已,最终字符还是要回到自己的网站再一次请求paypal的支付接口。

微信截图_20181209202108

 

2、使用以上paypal返回的url,进入paypal去登录买家帐号进行用户授权。如果没有帐号需要先登录买家帐号,如果已经登录了并且选择支付类型(余额或者信用卡),就会显示如下的界面(这个买家帐号是另外创建的沙箱买家帐号,日本地区的所以显示的是日文):

微信截图_20181209202834

3、在上述步骤中点击统一支付,这时候如果是支付宝是完成支付的,而在这里并没有完成支付。而是跳转到第一步中设置的ReturnUrl,也就是ExecutePayment.php?success=true。在这个url里面我们需要再一次请求paypal,来完成支付。支付后可以在买家和卖家帐号中看到交易记录,下图问买家帐号的交易记录:

微信截图_20181209205039

 

注意事项

paypal的支付流程跟国内的支付宝支付还是有区别的,总体而言我感觉支付方式不管开发体验还是使用体验都不如国内的支付宝和微信支付。下面把过程中几个可能被大家误解的地方说明下,防止大家入坑。

1、支付的基本流程是:创建一个支付,发送到paypal服务端并返回一个用户授权地址(在客户端,即我们自己的服务端,并设置一个支付)–>转链到用户授权地址(paypal网站)–>用户授权用户授权完毕(paypal网站,用户登录帐号并同意支付)–>paypal返回到客户端设置的execute地址(这个地址是第一步设置的,在客户端),付款实现。

2、在上述流程的第一步设置的url,并不是类似微信或支付宝那样的回调url,而是后续返回到客户端完成支付的url。

3、paypal貌似不支持人民币支付,也就是在上述步骤中第一步创建支付的时候设置货币类型,可以设置美元等其他货币,但不能设置人民币(CNY),因此如果是系统货币单位为人民币需要在服务端转化为美元然后再创建支付。据说是由于paypal在中国大陆地区没有获得支付牌照的原因。

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:paypal支付详细指南:基于PayPal-PHP-SDK进行接口对接 - 微构网络
分享: