支付宝接口手机网站支付验证返回字符串以及签名验证不通过的原因总结
来源:互联网 发布:网络运维与管理杂志 编辑:程序博客网 时间:2024/04/28 16:48
已经不是第一次做支付接口开发了,每次做支付接口开发其实都会遇到一些麻烦。最主要的地方还是在验签(验证签名)部分。
验签的作用是判别支付结果的回调(同步返回,get方式)或者通知(异步post方式)是否真的是由支付宝的服务器发出的。
在这里有2个目的:1是记录一下这个通知的返回内容,2是列举一下目前支付宝接口开发过程中遇到的,可能影响验签通过的原因。
1.同步回调(get方式)返回的数据
以php为例,var_dump($_GET)得到的数组如下:
array 'body' => string '用户账户充值' (length=18) 'is_success' => string 'T' (length=1) 'notify_id' => string '一长串balabalbabab的东西' (length=70) 'notify_time' => string '2016-12-26 16:37:47' (length=19) 'notify_type' => string 'trade_status_sync' (length=17) 'out_trade_no' => string '20161226163712111782' (length=20) 'payment_type' => string '1' (length=1) 'seller_id' => string '2088521242126500' (length=16) 'service' => string 'alipay.wap.create.direct.pay.by.user' (length=36) 'subject' => string '用户账户充值' (length=18) 'total_fee' => string '0.01' (length=4) 'trade_no' => string '2016122621001004720297207882' (length=28) 'trade_status' => string 'TRADE_SUCCESS' (length=13) 'sign' => string '签名' (length=172) 'sign_type' => string 'RSA' (length=3)
同步通知验签不能通过的原因:
1.生成密钥的方式不对,上传密钥的方式也不对,这点请按照开发文档的说明仔细检查。
2.返回的参数不干净,比如thinkphp的$_GET数组实际上会在数组结尾加上一个'_URL_'=>array(0=>'分组',1=>'控制器',2=>'方法')的数组项,所以在验签之前,要先unset($_GET['_URL_'])。
异步接口验签不通过的原因:
1.密钥生成和上传方式不对,请按照文档仔细检查。
2.防火墙原因,拦截了支付宝服务器的post请求,导致无法收到异步结果
3.异步结果的调试务必放到公网可以访问的服务器上进行调试,否则你是无法收到异步通知的,原因自己去想。
4.你的开发过程中,传递过去的异步通知url不能带有类似pay.php?id=1这样的参数,必须是到一个最终的处理脚本的地址,比如:http://www.xyservice.com/pay/ 或者 http://www.xyservice.com/pay.php
5.确保你的异步通知路径是可以访问的,如果访问不了,比如你的接口可能有权限验证,但支付宝接口直接post过来数据你认为没有登录,程序直接拒绝了而且302跳转到登录页面去了,或者有些主机商拦截了支付宝的post请求。
还有一点,有人说cacert.pem的路径不对也会影响验签,其实笔者在调试的时候因为需要刻意注释掉了cacert.pem的路径,结果在demo演示的时候,demo内容已经换成了笔者的pid和密钥信息之后,居然可以验签通过,所以就目前来看,这个ca证书的路径问题可能不是影响支付宝接口验签不通过的主要原因,当然,即便是这样您在开发过程中也要确保ca证书的路径正确,万一哪天接口开始验证ca证书了呢?
这是目前笔者在实际的开发过程中遇到的情况,记录下来,一是给遇到同样麻烦的朋友一个参考,二是给自己做个笔记。
- 支付宝接口手机网站支付验证返回字符串以及签名验证不通过的原因总结
- 支付宝电脑网站支付,回调时签名验证失败
- 支付宝支付时不验证签名的危害
- 支付宝签名验证机制
- 支付宝即时到账接口调用签名验证失败
- 支付宝回调验证签名
- 支付宝的手机网站支付接口的应用
- 支付宝手机网站支付接口集成的经验小结
- 支付宝服务窗验证签名
- 微信支付 支付验证签名失败
- 支付宝回调验证签名失败
- 验证支付宝来帐签名 MD5
- 微信统一支付接口返回“签名错误”的可能原因
- 微信公众号支付支付验证签名失败及公众号支付总结
- 【签名验证】支付宝即时到帐验证体系
- 使用OpenSSL做RSA签名验证 支付宝移动快捷支付 的服务器异步通知
- 使用OpenSSL做RSA签名验证 支付宝移动快捷支付 的服务器异步通知
- 微信支付SDK “支付验证签名失败”,怎么也找不到原因?
- jquery一些实用的小技巧
- 文章标题
- <转>Java Web提交任务到Spark
- Kaptcha是一个基于SimpleCaptcha的验证码开源项目。
- pc机获取 手机 data/data/<packageName>/下数据库文件
- 支付宝接口手机网站支付验证返回字符串以及签名验证不通过的原因总结
- SparkSQL schema创建DataFrame
- 使用Jquery的cropper插件http报错500的解决小结
- extjs学习笔记
- Android Studio方法红色的解决办法
- 浅析html+css+javascript之间的关系与作用 三者间的关系
- Android项目快速编译之Freeline-Android的配置与集成
- bind函数绑定
- mybatis学习笔记之resultMap