invalid-signature(无效签名)自查方案

来自    签名与验签 | 
作者:我是个导演  |  更新于:2017-07-31 17:35:43     
一,错误说明:
  1.密钥不匹配(70%都是密钥不匹配导致)
  2.参数错误,例如乱码,不符合支付宝要求,自定义参数,特殊字符
  3.签名方法错误

二,检查流程
  第一步:根据接口查看是否有支付宝官方demo,如果有优先使用官方demo测试(只配置账号和密钥测试,不要对demo做任何修改

  demo列表:
                  接口名称                   支持语言                   demo下载地址
                  电脑网站支付                   java,php                   https://docs.open.alipay.com/270/106291/
                  手机网站支付                   java,php                   https://docs.open.alipay.com/203/105910/
                  APP支付                   iOS,Android                   https://docs.open.alipay.com/54/104509
                  当面付                   java,php,.NET                   https://docs.open.alipay.com/194/105201/

    a.如果使用官方测试,能够正常支付,说明您的密钥密钥和账号没有问题,按照下面步骤继续检查
    b.使用使用官方demo测试,依然报错“无效签名” ,请走第二步密钥检查

 第二步密钥检查:
    首先检查使用的密钥是否匹配按照这个帖子检查:https://openclub.alipay.com/read.php?tid=1486&fid=46
    如果验证失败建议重新生成一对密钥进行商户公钥上传私钥配置到项目中发起测试

  第三步:参数错误
  不管是什么接口,如果报了这个错误,对照官方请求参数文档,只传必填参数,其他参数先注释,缩小错误范围,先保证使用必填参数请求可以成功。
  输出请求参数以&符号(示例如下)和官方请求必填请求参数对比,查看参数中是否有乱码,自定义参数或者特殊字符
total_amount=0.10&timestamp=2016-11-02+18%3A34%3A19&sign=G3WI0czviMAOzS5t0fYaDgK32sGpjkkXYVFTpYMtgX8JaXLiGiUTO%2F2IHogcCFT96jBCLZ6IsNzd%2BmxkB%2FRuwG%2F7naQk1qReuORMkrB5cpBf9U40bIUoCmSNqtANsTE2UPV7GKegYG2RqoCRScTmeFAFHj5L7zsM%2BLuYb9mqN3g%3D&trade_no=2016110221001004330228438026&sign_type=RSA2&auth_app_id=2014073000007292&charset=UTF-8&seller_id=2088411964605312&method=alipay.trade.page.pay.return&app_id=2014073000007292&out_trade_no=20150g320g010101001&version=1.0


  第三步签名方法错误:

    服务端SDK方式签名:(支持java,php,.NET )

   服务端SDK下载地址:https://docs.open.alipay.com/54
     pageExecute:唤起网页进行支付方式,用于手机网站,电脑网站支付接口。
     sdkExecute:生成签名字符串,只能用于APP支付接口
     execute:用于当面付,以及开放平台的大部分接口

   代码详解(php语言为例,其他开发语言调用方式相同):
    pageExecute手机网站为例:
$request = new AlipayTradeWapPayRequest ();
$request->setBizContent("{" .
        "\"subject\":\"测试\"," .
        "\"out_trade_no\":\"201703290000001\"," .
        "\"total_amount\":0.01," .
        "\"product_code\":\"QUICK_WAP_PAY\"" .
        "  }");
 //调用的签名方法
$result = $aop->pageExecute ($request);
echo $result;
   sdkExecute APP支付为例
$request = new AlipayTradeAppPayRequest();
$request->setBizContent("{\"out_trade_no\":\"".$date.$arr[0]."\",\"total_amount\":0.01,\"product_code\":\"QUICK_MSECURITY_PAY\",\"subject\":\"app测试\"}");
//调用的签名方法
$result = $aop->sdkExecute($request);
print_r(htmlspecialchars($result));
   当面付接口调用的签名方法
$request = new AlipayTradePayRequest ();
$request->setBizContent("{\"out_trade_no\":\"2016122300000001\",\"scene\":\"bar_code\",\"auth_code\":
\"289382262657741993\", \"subject\":\"php扫码测试\",\"total_amount\":\"0.01\"}");
    //当面付接口调用的签名方法
$result = $aop->execute ($request);
print_r($result);

如果使用的是原生的签名方法(不使用sdk或者没有sdk),也是按照上面的步骤,先检查密钥在检查请求参数问题

如果大家在集成过程中遇到无效签名问题,可以在这个帖子下面追问(信息不全不回复,请各位同学按照下面格式提问,方便排查问题,谢谢)

正确提问方式:
使用环境(沙箱还是正式环境)+接口名称(中文+英文)+订单号(必填)+appid+请求时间+请求参数(提供&符号连接的格式)
troublesen | 2018-01-12 11:49:55
在本地测试已经通过,线上却报 错误代码 missing-signature 错误原因: 缺少签名参数
troublesen | 2018-01-12 11:50:07
这个可能是什么问题呢
我是个导演 | 2018-01-12 12:19:32
troublesen:在本地测试已经通过,线上却报 错误代码 missing-signature 错误原因: 缺少签名参数回到原帖
建议按照这个自查一下:https://openclub.alipay.com/read.php?tid=2333&fid=69 特别注意一下线上的环境
troublesen | 2018-01-12 13:36:21
我是个导演:建议按照这个自查一下:https://openclub.alipay.com/read.php?tid=2333&fid=69 特别注意一下线上的环境回到原帖
php版本低除了升级版本还有其他的sdk兼容低版本吗
我是个导演 | 2018-01-12 13:45:27
troublesen:php版本低除了升级版本还有其他的sdk兼容低版本吗回到原帖
很抱歉!没有的 。
就决定是你了哦 | 2018-04-04 13:58:49
调试错误,请回到请求来源地,重新发起请求。
错误代码 invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为:alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2016091000480488&charset=UTF-8&format=json&method=alipay.trade.wap.pay&notify_url=http://www.baidu.com/alipay.trade.wap.pay-JAVA-UTF-8/notify_url.jsp&return_url=http://www.baidu.com/alipay.trade.wap.pay-JAVA-UTF-8/return_url.jsp&sign_type=RSA2&timestamp=2018-04-04 11:46:58&version=1.0        PS: 我密钥公钥 验证过了没问题,不必填的 就没有填写。 试过用RSA 和RSA2都不行  求大神帮忙看看
战狼 | 2018-04-04 14:12:32
就决定是你了哦:调试错误,请回到请求来源地,重新发起请求。
错误代码 invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为:alipay_sdk=alipay-sdk-java-d...
回到原帖
你好,建议将amp;去掉试下,可以参照 验签出错-自查方案排查下:https://openclub.alipay.com/read.php?tid=2432&fid=72
或者参考我们的demo测试
手机网站(java版):https://openclub.alipay.com/read.php?tid=1720&fid=40
手机网站(php版):https://openclub.alipay.com/read.php?tid=1711&fid=40
有问题可以再追问
就决定是你了哦 | 2018-04-04 15:03:40
战狼:你好,建议将amp;去掉试下,可以参照 验签出错-自查方案排查下:https://openclub.alipay.com/read.php?tid=2432&fid=72
或者参考我们的demo测试
手机网站(java版):https://...
回到原帖
刚刚哪个问题成功了。。。但是支付完成以后 沙箱用户金额不减。。订单可以一直支付
战狼 | 2018-04-04 15:16:16
就决定是你了哦:刚刚哪个问题成功了。。。但是支付完成以后 沙箱用户金额不减。。订单可以一直支付回到原帖
你好,目前沙箱环境临时维护中,给你带来不便,还请多理解下,如果沙箱环境测试成功了,建议以线上环境测试结果为准
有问题可以再追问
紫霄馆 | 2018-04-16 17:24:40
我这边今天也遇到了网页版的一个提示:调试错误,请回到请求来源地,重新发起请求。
经仔细排查,是因为字符集的问题,应设置为UTF-8。
而服务窗的demo默认设置的字符集为GBK,整合支付业务的时候并没有去修改这个字符集。
战狼 | 2018-04-16 17:36:24
紫霄馆:我这边今天也遇到了网页版的一个提示:调试错误,请回到请求来源地,重新发起请求。
经仔细排查,是因为字符集的问题,应设置为UTF-8。
而服务窗的demo默认设置的字符集为GBK,整合支付业务的时候并没有去修改这个字符集。
回到原帖
你好,你的问题已经解决了吗?
西园兔有 | 2018-05-31 17:20:32
战狼:你好,建议将amp;去掉试下,可以参照 验签出错-自查方案排查下:https://openclub.alipay.com/read.php?tid=2432&fid=72
或者参考我们的demo测试
手机网站(java版):https://...
回到原帖
@就决定是你了哦:老哥,怎么解决的?跪求
我是个导演 | 2018-05-31 18:20:17
西园兔有:@就决定是你了哦:老哥,怎么解决的?跪求回到原帖
建议按照帖子要求提供相关信息方便判断问题
小叶檀菌 | 2018-06-13 10:19:30
后台这边是java,我是直接拿的demo上的代码弄得,密钥和私钥都是拿的正式环境的,但是还是会报无效签名?错误代码 invalid-signature 错误原因: 验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为:alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2018012902103641&biz_content={"body":"benefit Goods","out_trade_no":"DD1000000006","product_code":"QUICK_WAP_PAY","seller_id":"alipay.sellid","subject":"benefit Goods","timeout_express":"2m","total_amount":"0.01"}&charset=UTF-8&format=json&method=alipay.trade.wap.pay&notify_url=alipay.notifyUrl&return_url=alipay.returnUrl&sign_type=RSA2&timestamp=2018-06-13 10:17:45&version=1.0
我的回复
回复数
  15
阅读数
  7148

返回顶部