在骚扰了PayPal的技术支持好几天之后终于成功对接了PayPal支付,非常感谢PayPal的技术支持人员,没有她估计一周都搞不定。记录一下这个过程。
接到这个任务联系了PayPal的技术之后,第一件事就是向她要了一些文档。PayPal提供了一个demo商店https://demo.paypal.com/c2/demo/navigation?merchant=bigbox&page=shoppingCart&locale.x=zh_XC&token=EC-8F899625FB177521V
,首先我在上面体验了一把PayPal支付的整个流程,登录sandbox账号然后支付就行了,可以看下面的截图感受一下,
sandbox账号是你注册了企业账号之后PayPal送给你的两个测试用账号,你可以在sandbox环境中测试你的代码,当然你也可以自己注册sandbox账号,当商务部给我一个企业账号密码时,我登录https://developer.paypal.com/developer/accounts?event=linkAccountAssociated
可以看到里面的sandbox账户,我选择新建一个自己的sandbox商家账户,与live环境同样且必须要做的是申请签名:https://www.sandbox.paypal.com/webapps/customerprofile/summary.view
(切记!!!sandbox环境用live环境的签名会报"security header is not valid",这是sandbox的签名,同样的,live环境只需要域名中去掉
sandbox即可找到),如下图
PayPal的API有提供两种调用方式,NVP和SOAP,我选择了前者。支持方式是IPN,一般都是选择IPN,因为我们开发基本上都要根据支付平台的结果处理一下自己的业务,在看了IPN这个文档https://www.paypal-biz.com/product/pdf/PayPal_IPN&PDT_Guide_V1.0.pdf之后,大致了解了和PayPal的交互流程,文档中的notify_url是PayPal在你调用DoEC后回调你的链接,PayPal会在请求你链接时带上一些订单的参数,详请点击
https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNandPDTVariables/
做了这些准备工作之后我们可以开始写代码了。
此处应当插入个时序图的-_-!!
调用API都会用到的公共参数是:"USER=""PWD=""SIGNATURE=""VERSION=",后面不再赘述
下订单调用PayPal的SetExpressCheckout方法,可以参考这个已经过验证的示例(密码签名记得用自己申请的哦_):
附上你