H5处理支付宝接口返回form

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了H5处理支付宝接口返回form相关的知识,希望对你有一定的参考价值。

参考技术A 最近H5对接后端从支付宝返回的form。踩了一些坑。
支付宝支付返回的form结构大概是这样的:

这可以看成是一个完整的html文档。

如果是在PC端处理,这种方式是没问题的。但是需要注意三个问题:

对于H5来说第二种方案兼容性更好。
需要注意的是:
一开始我将form的target设置为了_blank

导致了在ios上的浏览器(微信环境,safari,UC)都无法实现form表单的提交。
改成_self之后,问题解决。

支付宝接口零碎知识

@参考文章

同步返回处理(return_url):是一种可视化的返回,ie页面跳转通知,只要支付成功,支付宝通过get方式跳转到这个地址,并且带有参数给这个页面。客户获取信息受到买家操作的影响。如果买家支付完
成后客户服务器响应比较慢,买家在显示支付宝提示的“即时到账支付成功“时关闭页面,那么客户网站是获取不到信息,我们这边称为” 掉单“。而且这个返回处理是一次性调取,即支付成功后才调取同步返回处理。
异步返回处理(notify_url):它的数据交互是通过服务器间进行数据交互,必须将其放置在服务器上(公网)测试,服务器post消息到异步返回处理页面,需要客户技术在异步返回处理页面处理相关的数据处理
,然后每一步操作都要返回给支付宝success(不能包含其他的HTML脚本语言,不可以做页面跳转。)这个返回处理如果集成OK,那么基本不会出现掉单,因为支付宝会在24小时之内分6~10次将订单信息返回
个给客户网站,直到支付宝捕获success。
备注:同步返回处理则会受到买家操作的影响:
假如买家在操作的时候,支付宝完毕进入支付宝提示成功页面,这个时候由于服务器相应比较慢,那么买家有可能会关闭这个页面,这个时候您们就会接受不到支付宝返回的信息,还有有些网银支付后也不会调取支付宝的同步返
回处理页面,这样您在同步做数据处理同样接受不到数据。

处理支付宝返回通知失败几种情况:
1、SIGN与MYSIGN不等,responseTxt为invalid命令参数不对,该错误 是由于合作伙伴ID(parnterID)与安全校验码(key)未填,或填错导致
2、SIGN与MYSIGN相等,responseTxt为false,是由于服务器、端口等因素导致,这时请检查
a.防火墙是否屏蔽支付宝的IP(支付宝锁使用的IP地址是:121.0.26.11,范围:121.026.0~255)
b.端口80或者443端口开放没有或者被其他服务占用
c.以上如果都没有问题,可能会是网络验证超时导致(支付宝验证时间是1分钟,SIGN与MYSIGN不等会导致超时),需要等待网络稳定再确定问题
3、SIGN与MYSIGN不等,responseTxt为true,此时只有两种情况会出现:
其一:传递参数时格式不符合(例如:带自定义参数)导致签名不一致
其二:编码格式出现问题,这时候请检查服务器编码和网站编码是否一致,可以写编码过滤解决也可以在返回页面强制编码转换

以上是关于H5处理支付宝接口返回form的主要内容,如果未能解决你的问题,请参考以下文章

vue调用h5支付宝支付时无法调用问题

vue调用h5支付宝支付时无法调用问题

vue调用h5支付宝支付时无法调用问题

H5网站接入支付宝的支付接口

php thinkphp怎么集成支付宝接口

支付宝支付-手机浏览器H5支付