支付宝异步通知验签失败解决方案

原贴地址:https://openclub.alipay.com/read.php?tid=1598&fid=69,欢迎大家访问

说明: 

    验签只需要使用到支付宝公钥 ,而不是使用应用公钥!

错误原因: 
  1.支付宝公钥使用错误导致 
  2.验签方法使用错误 
  3.参数错误导致,例如乱码,带自定义参数,编码格式。 


自查流程(按照推荐流程检查) 

     第一步(重点检查):支付宝公钥使用是否错误

     第二步:验签方法错误(请使用下方的demo中的地址接收异步通知进行验签测试) 

说明: 
    正常接口使用 AlipaySignature.rsaCheckV1,sign_type不参与签名 
    特殊说明:AlipaySignature.rsaCheckV2方法生活号异步通知需要使用,会保留sign_type参数参与验签。 


    异步demo分享(适用于所有支付类接口异步验签)

     java,php,.NET验签demo下载地址:https://docs.open.alipay.com/203/105910 

    注意:请大家使用手机网站demo进行验签测试即可,使用文件中的notify_url相关的文件和方法 

   自行实现验签参考:https://docs.open.alipay.com/200/106120

  第三步:异步通知返回参数检查 
      说明: 

      1.支付返回的通知不会乱码,一般java语言可能会在接收以后出现中文乱码,这个需要自己处理,demo中也给了一个方案(notify_url.jsp页面中。如果出现乱码就开启再测试):   

//获取支付宝POST过来反馈信息
Map<String,String> params = new HashMap<String,String>();
Map<String,String[]> requestParams = request.getParameterMap();
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {String name = (String) iter.next();String[] values = (String[]) requestParams.get(name);String valueStr = "";for (int i = 0; i < values.length; i++) {valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ",";}//乱码解决,这段代码在出现乱码时使用//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");params.put(name, valueStr);
}


分享一个验签成功的示例:

一、验签准备
1.原始报文:
【gmt_create=2018-04-20 17:50:32&charset=utf-8&seller_email=888@ymgxjy.com&subject=1元礼包&sign=UDKYin8FiNt74XERScJ1/Aw9byEa7Zyc73B0wa3b+TB8zjGY1TiEFgjkt52yQa4l0QBPH7nPj/lxCkXJ3iNCbdtI33llRIbVRw6HSKokrKXRDhLtcC6mRAQxihVPQGCCHU0FaB5kyCDALExT15Liw2We4UPj2RhqTQcK2J+dFfAd/9y1op7652wUz4fTqeag1NnsWW4/8n9U/HCnOcgSKms1W2V/uKeITUu+xGD53Kc5FiuHfhKTncvE8r0d5yiuJIwwMHB1UtwMWb3lDptqfe4RyYIbLAmRZRr3C71Jrsd2buPt/Wfk+7g3bYDmXoLO0uqf/SWgQGj4j5SsAgJBpw==&body=购买1元礼包&buyer_id=2088002909593621&invoice_amount=1.00¬ify_id=53d06fe330f23412ffadf96bedf4b2eksd&fund_bill_list=[{"amount":"1.00","fundChannel":"ALIPAYACCOUNT"}]¬ify_type=trade_status_sync&trade_status=TRADE_SUCCESS&receipt_amount=1.00&app_id=2018041202546065&buyer_pay_amount=1.00&sign_type=RSA2&seller_id=2088031750966038&gmt_payment=2018-04-20 17:50:33¬ify_time=2018-04-20 17:54:23&version=1.0&out_trade_no=102&total_amount=1.00&trade_no=2018042021001004620551077378&auth_app_id=2018041202546065&buyer_logon_id=xie***@126.com&point_amount=0.00】2.验签公钥:
【MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj2loMvw06Q7ENphqLI/L/zMq+GbybavY6/zrmMvI3Jbk/U2D/CYRnBwPM0iLvOu1Y/sILeDtsQc7jeKPBYwOWnbO0eXYe6WnEuKSzj1zR+Za2Z4aBBKx/oIp99qvAE6oTk+LtQB5adcvrlLEiiyjD5Ilips+lr7A01AnWeIJ2hlXnDDmWUiMLCFzb6XXovuT2Hl/DqJBO3EAgMlfXSdtpWB41ppXIepIrdmL0hq/Vgvv6sAuqBYqjg+1gaEo6sq9Ev8JRqgCkQJsmhkwz206EBAtAkV4WCQN3tFEvtUBxiCRuNaoObPD+e7S1VTjFzCEyOKIl/RTQpRqhC0SvdyyxQIDAQAB】3.从报文取出签名值sign:
【UDKYin8FiNt74XERScJ1/Aw9byEa7Zyc73B0wa3b+TB8zjGY1TiEFgjkt52yQa4l0QBPH7nPj/lxCkXJ3iNCbdtI33llRIbVRw6HSKokrKXRDhLtcC6mRAQxihVPQGCCHU0FaB5kyCDALExT15Liw2We4UPj2RhqTQcK2J+dFfAd/9y1op7652wUz4fTqeag1NnsWW4/8n9U/HCnOcgSKms1W2V/uKeITUu+xGD53Kc5FiuHfhKTncvE8r0d5yiuJIwwMHB1UtwMWb3lDptqfe4RyYIbLAmRZRr3C71Jrsd2buPt/Wfk+7g3bYDmXoLO0uqf/SWgQGj4j5SsAgJBpw==】二、组成待验签串:
1.剔除空值参数:
【gmt_create=2018-04-20 17:50:32&charset=utf-8&seller_email=888@ymgxjy.com&subject=1元礼包&sign=UDKYin8FiNt74XERScJ1/Aw9byEa7Zyc73B0wa3b+TB8zjGY1TiEFgjkt52yQa4l0QBPH7nPj/lxCkXJ3iNCbdtI33llRIbVRw6HSKokrKXRDhLtcC6mRAQxihVPQGCCHU0FaB5kyCDALExT15Liw2We4UPj2RhqTQcK2J+dFfAd/9y1op7652wUz4fTqeag1NnsWW4/8n9U/HCnOcgSKms1W2V/uKeITUu+xGD53Kc5FiuHfhKTncvE8r0d5yiuJIwwMHB1UtwMWb3lDptqfe4RyYIbLAmRZRr3C71Jrsd2buPt/Wfk+7g3bYDmXoLO0uqf/SWgQGj4j5SsAgJBpw==&body=购买1元礼包&buyer_id=2088002909593621&invoice_amount=1.00¬ify_id=53d06fe330f23412ffadf96bedf4b2eksd&fund_bill_list=[{"amount":"1.00","fundChannel":"ALIPAYACCOUNT"}]¬ify_type=trade_status_sync&trade_status=TRADE_SUCCESS&receipt_amount=1.00&app_id=2018041202546065&buyer_pay_amount=1.00&sign_type=RSA2&seller_id=2088031750966038&gmt_payment=2018-04-20 17:50:33¬ify_time=2018-04-20 17:54:23&version=1.0&out_trade_no=102&total_amount=1.00&trade_no=2018042021001004620551077378&auth_app_id=2018041202546065&buyer_logon_id=xie***@126.com&point_amount=0.00】2.剔除sign、sign_type参数:
【gmt_create=2018-04-20 17:50:32&charset=utf-8&seller_email=888@ymgxjy.com&subject=1元礼包&body=购买1元礼包&buyer_id=2088002909593621&invoice_amount=1.00¬ify_id=53d06fe330f23412ffadf96bedf4b2eksd&fund_bill_list=[{"amount":"1.00","fundChannel":"ALIPAYACCOUNT"}]¬ify_type=trade_status_sync&trade_status=TRADE_SUCCESS&receipt_amount=1.00&app_id=2018041202546065&buyer_pay_amount=1.00&seller_id=2088031750966038&gmt_payment=2018-04-20 17:50:33¬ify_time=2018-04-20 17:54:23&version=1.0&out_trade_no=102&total_amount=1.00&trade_no=2018042021001004620551077378&auth_app_id=2018041202546065&buyer_logon_id=xie***@126.com&point_amount=0.00】3、排序:
【app_id=2018041202546065&auth_app_id=2018041202546065&body=购买1元礼包&buyer_id=2088002909593621&buyer_logon_id=xie***@126.com&buyer_pay_amount=1.00&charset=utf-8&fund_bill_list=[{"amount":"1.00","fundChannel":"ALIPAYACCOUNT"}]&gmt_create=2018-04-20 17:50:32&gmt_payment=2018-04-20 17:50:33&invoice_amount=1.00¬ify_id=53d06fe330f23412ffadf96bedf4b2eksd¬ify_time=2018-04-20 17:54:23¬ify_type=trade_status_sync&out_trade_no=102&point_amount=0.00&receipt_amount=1.00&seller_email=888@ymgxjy.com&seller_id=2088031750966038&subject=1元礼包&total_amount=1.00&trade_no=2018042021001004620551077378&trade_status=TRADE_SUCCESS&version=1.0】三、验签结果:
【验签成功】




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作96:当前页面拿id

reject(){putAction("/order/"this.ListId"/status",{status:-1,remark:""}).then(res>{this.$message({message: 审核撤回状态修改,type: success});this.close();})},/*审核通过的方法 定义在混入里面*/approve(){/*控制审核状态成功*/putA…

使用ftp上传文件到Unix系统注意事项

使用ftp上传文件到Unix系统注意事项 在使用FTP客户端上传文件到Unix系统时&#xff0c;应该注意将传输模式设置为二进制&#xff08;Binary&#xff09;传输模式&#xff0c;否则有可能造成传输到Unix系统的文件与实际文件大小不一致&#xff0c;文件无法使用。

度度熊回家

一个数轴上共有N个点&#xff0c;第一个点的坐标是度度熊现在位置&#xff0c;第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。但是除了0号坐标和N-1号坐标&#xff0c;他可以在其余的N-2个坐标中选出一个点&#xff0c;并直接将这个点忽略掉&#xff0c;问度…

微信地图 leaflet 腾讯地图

本来在微信项目中使用的高德地图&#xff0c;发现不是想象中的好用&#xff0c;而且用了微信&#xff0c;感觉使用腾讯地图会比较方便&#xff0c;所以&#xff0c;索性使用leaflet腾讯地图的底图来实现。 其中关于正确使用腾讯地图参考了https://github.com/wuxiashuangji/TX…

支付宝会员卡开卡表单模板配置(alipay.marketing.card.formtemplate.set)JAVA版本demo

官方接口文档&#xff1a; https://docs.open.alipay.com/251/105668/ &#xff0c;我这里写的是开卡组件前两步的操作流程&#xff0c; 仅供参考1. 调用接口前的准备工作(创建应用等)参考该文档 &#xff1a;https://docs.open.alipay.com/251/105731/2.核心代码&#xff0c;这…

AIX 6.1安装JDK6环境变量设置

AIX 6.1安装JDK6环境变量设置 1、将JDK6_64.sdk.tar.gz上通过FTP以二进制&#xff08;Binary&#xff09;模式上传到服务器上2、解压JDK&#xff1a;gunzip -c JDK6_64.sdk.tar.gz | tar -xvf -3、通过 SMIT&#xff1a;运行 smitt install。 选择 Install and Update Software…

微信获取位置 转化为 高德地图 位置 地址

从高德地图转到直接使用QQ地图了&#xff0c;留下在微信网页开发中的代码片段 async getLocation () {// 1、获取微信的坐标const { latitude, longitude } await new Promise((resolve, reject) > {wx.getLocation({type: wgs84, // 默认为wgs84的gps坐标&#xff0c;如果…

web项目从Myeclipse迁移到idea的二三事

今天新接手了一个myeclipse项目&#xff0c;想把这个项目从myeclipse迁移到idea&#xff0c;花了点时间&#xff0c;也遇到一些新的问题&#xff0c;打算记录下来。 这是myeclipse的项目结构 我整理一下 整理的时候&#xff0c;我碰到了一下的一下的一些问题&#xff1a; 1 . m…

微信公众平台无法使用支付宝收付款的解决方案

微信中无法打开支付宝收款是微信浏览器限制所致&#xff0c;可以参考下图方法引导用户转到系统浏览器&#xff0c;即可用支付宝收款。点此下载。 1、引导用户选择在浏览器中打开支付链接&#xff0c;以完成支付。如图1所示&#xff1a;图12、用支付宝继续完成支付&#xff0c;如…

vux radio 改造为 tree 代码片段

思路&#xff1a;用全角空格和半角空格做区分。 1、自己写的部分 this.toOptions arr.map(x > {let kong for (let i 1; i < x.level; i i 1) {kong kong  }kong kong let icon https://s1.ax1x.com/2018/09/27/iML0BD.pngif (x.level 1) {icon https://s1…

Linux下部署多个Tomcat

Linux下部署多个Tomcat 1.环境&#xff1a;1.1.Centos 5.01.2.apache-tomcat-6.0.182.需要解决一下几个问题2.1.不同的tomcat启动和关闭监听不同的端口2.2.不同的tomcat的启动文件startup.sh 中要指定各自的CATALINA_HOME和CATALINA_BASE这两个环境变量。3.解决步骤&#xff1a…

将检索出来的列按逗号拼接起来

(STUFF((select , USER_NAME from TBL_BIZ_TRSBILLS_DETAIL where TRANSPORT_CODE TB.TRANSPORT_CODE and USER_TYPE 司机 for xml path()),1,1, )) AS DRIVER_NAMES 这个语句的意思是&#xff1a;用‘&#xff0c;’将查询到的司机姓名拼接起来&#xff0c;然后用 替换掉…

maven已支持支付宝开放平台SDK

「好消息通知」开放平台SDK 标准版 以官方的名义上传了中央仓库&#xff01;支持maven引入调用&#xff01;开发者可以参考使用中央仓库地址&#xff1a;https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java 后续在 https://docs.open.alipay.com/54/103419/ …

工作99:任务加1逻辑

/*控制任务的添加功能*/addFrom(index,item) {var tasks {name: "",start_time: null}this.form.departmentList[index].accounts[item].tasks.push(tasks);},

mac 查看端口并终结

1、查看 lsof -i tcp:80812、显示结果如下 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 96952 caowei 14u IPv4 0xa209f905c4d41d47 0t0 TCP *:sunproxyadmin (LISTEN)3、使用kill终结 kill 96952

ODP.net与Oracle连接

ODP.net是Oracle提供的数据库访问类库&#xff0c;其功能和效率上都有所保证&#xff0c;它还有一个非常方便特性&#xff1a;在客户端上&#xff0c;可以不用安装Oracle客户端&#xff0c;直接拷贝即可使用。以下内容转载自&#xff1a;http://blog.ywxyn.com/index.php/archi…

支付宝后台如何查看自己的签约详情

第一步&#xff1a;登录蚂蚁金服商家服务中心https://b.alipay.com/&#xff0c;点击产品中心&#xff0c;如下图第二步&#xff0c;点击我的产品-已生效-产品详情&#xff0c;&#xff08;如果在已生效界面看不到自己调用接口对应签约的产品&#xff0c;那么你的签约已经失效&…