支付宝支付接口遇到的问题总结

   最近公司的项目有用到调用支付宝接口的功能,业务场景和对应的接口分别以下java

1用户经过网页支付向商家打钱 https://doc.open.alipay.com/doc2/detail?treeId=60&articleId=103564&docType=1浏览器

2用户提现的功能(商家向用户打钱)https://doc.open.alipay.com/doc2/detail?treeId=64&articleId=103569&docType=1安全

 

这两个接口都必须先和阿里签约才能调用下面把开发遇到的问提总结一下:服务器

 

1.网页支付接口,在官方提供的java版本demo工程里不容许传自定义连接,我如今想调用支付宝接口后再执行本身的工程里的业务代码而且跳转到我本身的项目工程里,查了下官方API可在商品描述body字段里传本身项目的业务连接和回调url,可是这样在签名return_url..jsp的校验  AlipayNotify.verify(params) 里返回false,缘由是在getSignVeryfy签名校验的body字段传入了&等特殊符号,看了下代码只能把AlipayNotify.java 里的        if (isSign && responseTxt.equals("true"))改为   if (i responseTxt.equals("true"))  那么AlipayNotify.verify(params)就能够返回true。app

 

return_url.jsp里是等交易完成后同步跳到这个jsp进行咱们本身后的台业务处理,这样有个问题若是用户提早手动关闭交易完成的界面,会出现支付宝支付成功,可是后台未扣款的状况,解决办法是把业务处理的模拟http请求写在notify_url.jsp异步通知页面,这样不用等用户按完成或者等一段时间自动跳转到return_url.jsp里,而是输入支付密码后定时跳到notify_url.jsp异步

 

下面是支付宝官方文档关于异步通知页面的描述的描述:jsp

有一点须要注意的是跳到notify_url.jsp的url必须是公网客访问的域名或则ip不然支付宝服务器没法跳转,调试的时候可用第三方域名代理工具natapp(https://natapp.cn/) ide

注意点:工具

①natapp已经不可用url

②在通常系统中,差错处理分为两种,一种人工来处理,一种系统自动来处理。

主要有以下状况:

本地未支付,支付渠道已支付。这主要是本地未正确接收到渠道下发的异步通知致使。 通常处理是将本地状态修改成已支付,并作响应的后续处理,好比通知业务方等。

本地已支付,支付渠道已支付,可是金额不一样,这个须要人工核查。

本地已支付,可是支付渠道中无记录;或者本地无记录,支付渠道有记录。在排除跨日因素外,这种状况很是少见,须要了解具体缘由后作处理。

基本的思路是写一个定时器,凌晨的时候分别以平台订单为基准对帐,银行订单为基准对帐

③防止订单重复提交

 

2.商家向用户打钱调用的是批量转帐接口,这个接口须要先在本身的浏览器里安装安全证书才能调用。

相关文章
相关标签/搜索