paypal支付注意事项
公司做出口业务自营网站需要使用paypal支付,最开始一脸懵逼从没有接触过paypal,后来看官网和其它博客加上自己慢慢摸索,实战得出以下注意事项。
1.Q:我的账号的appId和secret在哪里获取?
A:首先要接paypal得有个开发者账号,然后登陆 获取appId和secret地址 使用开发者账号登录即可看到Client ID和Secret,其中Sanbox是沙盒测试环境,live是正式环境。
2.Q:拿到Client ID和Secret后代码怎么配置?
A:已java,springboot环境为例,首先需要在application.yml中填上上面的Client ID和Secret
3.Q:怎么跳转到paypal支付页面。
A:查看paypal的文档我们发现paypal支付分2个步骤,第一个步骤是你把订单信息传给paypal这时payal会返回一个approvalUrl(https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-1JB06386X57112029)给你,使用这个url直接在浏览器访问就可以跳到paypal登录页面。实际开发中这两步可以在同一个接口中即可实现。
第二个步骤就是paypal登录后点击continue按钮才是真正的付款了,此时不需要再输入密码了,跟我们国内的微信和支付宝不一样它们还需要再输入一次密码。
4.Q:关于商品传不传给paypal问题。
A:我们查看paypal的api文档发现paypal并没有要求我们传商品的item过去,也就是非必填项。所以我们是可以不传的。很多人就想问了不传也可以那传和不传差别在哪?
其实差别就在支付点继续的时候能不能看到那个购物车图标。没有传商品的时候没有购物车图标也没有总价显示,传了商品就会有总价并且还会有商品的详情。传不传就看公司的需求了不传就不会有总价显示有好多公司就是这么干的比如Levis商城,传了这里就会掉入paypal的坑!什么坑!paypal的校验(后面会讲)。
5.Q:跳到付款页面不想支付了怎么办?
A:这是个什么情况呢?这就涉及到一点电商网站的运营了。一般支付页面设计有在下单页面也有新开一个页面,大部分网站都是在同一个页面下单,下完单后在同一个页面支付比如国内某宝,在同一个页面的好处就是免得用户点来点去,直接在一个页面就完事了别整那么多花里胡哨的。还有一种就是跳到一个新开的页面去页面大多数就是一个空白页面,只展示订单信息然后一个“去支付”按钮。
说了那么多接下来谈下取消支付这个问题,一般网站为了提高下单支付转换率就不给取消支付的按钮,这个时候用户想取消支付怎么办如果是同一个页面只能点浏览器回退左箭头了,如果是新开的页面直接关了页面就好了。
paypal在接口需要我们传2个url过去,一个是successUrl,一个是cancelUrl,支付成功后会跳到successUrl去,如果取消也会跳到取消页面,传了取消按钮在登录的时候就看到有串文字链接,点击即可取消。
6.Q:支付成功后想做自己的事(比如更新订单信息,插入操作记录等)怎么办?
A:paypal支付成功后会返回一个payment对象给我们,里面就是交易的详情有交易号,支付人信息,收款人信息,地址,商品等信息,如果我们需要在支付成功后再操作订单信息的话那么在支付传参数的时候就要把订单ID或者其它的作为一个自定义参数custom传给paypal,这样支付成功paypal也会返回给我们,有了订单ID就能做后续操作了。
代码就一行:
transaction.setCustom(paymentEx.getOrderId().toString());
7.Q:paypal的参数校验有哪些?
A:paypal接口需要哪些参数官网已经列出来了可以查看paypal接口参数,里面有列出哪些是必填的。但是你以为躲过这些必填的就完事了吗?那就too young to simple了,非必填也有校验然而文档又没有写,真是个坑!分享下我遇到的:
金额:paypal需要我们传总价(total),商品总价(subtotal),税费(tax),运费(shipping),还有其它费用等过去。传过去后paypal就会校验第一个等式,total = subtotal + tax + shipping + 其它,这个等式不满足的话就会报错。
第二个等式,如果传了商品就会校验 subtotal = 产品1单价 * 数量 + 产品2单价 * 数量 + .....
正常情况下我们都能满足这两个等式,传过去你若安好便好,你若是不通过打死你!
但是。。。。。后续讲出现折扣的情况下就要注意了。
电话:paypal收货人电话也是要求非必填的,而且还有两个字段分别是phone和phoneNumber。我就在这栽了跟头我就传了一个电话过去美国电话都是带括号的比如(400)8888这种,一天不知道谁输入了中文的括号进去了,然后就报错了,要不是看日志还真不知道是这个中文括号引起的。
8.Q:paypal支持优惠活动吗?
A:前期网站运营需要拉新,提高知名度都会搞些优惠活动比如优惠码,优惠券之类的,所以我就想看下paypal有没有优惠码之类的功能供我们使用,结果发现没有发邮件问他们也说没有需要我们自己处理,这就坑了~一个支付的平台居然不支持优惠的功能瞬间鄙视它。
没有优惠码怎么办?paypal又要校验那两个等式(total = subtotal + tax +shipping + 其它,subtotal = 产品1单价 * 数量 + 产品2单价 * 数量 + .....),使用了优惠券这些数据都变了我们需要重新来组装让等式成立,一分都不能差差了就报错。