1)拿到prepay_id;
2)确认appId、timeStamp、nonceStr、signType、paySign 参数传入正确的前提下,根据文档要求,用如下命令构造签名串:
str = msg.appId + "\n" + msg.timeStamp + "\n" + msg.nonceStr + "\n" + msg.package + "\n";
或
str= msg.appId + (char)0x0A + msg.timeStamp + (char)0x0A + msg.nonceStr + (char)0x0A + msg.package + (char)0x0A;
3)通过日志,记录了构造的签名串如下:
paySing生成时间--2021-09-08T15:02:38+08:00
构造签名串:
wx1a5babba44467c44
1631084557
CD8B61B0027B40A78667FDD31C1F97BD
prepay_id=wx081502382503533ecc59417bd2e9090000
4)通过日志,记录了paySign签名如下:
paySign-- :RSA签名:
mS4zpyEeGQGrKlAJaMMqBGCBMhCnCWVqG4+/gLNxXpOgXq6cSorNoBDOKrJc6wtwzRQK/M/yLwthsNZYTUDxqGpEIv+KQ55uBQzjhsk8crMUuv3o14PZNH/8VCCwz2daMWlHorUBsuV6GONX31WcFpa0muBSzMkw33YgyY+m5hGcgZ0LY9fLy1+CY9SnWqbKbX9PtVWEACYl6a1OeArFpz6+jpjGhP3XsKre7fQ2M0MNxBzgWrncJoEYLX//UzwlYtxif0i687MuC1HHXu9ZJGJ+dIAWvvz1y7cEa6PRSOEFgnbqe4LQ9P8cuOJiNDmz3qdmEEAiK6UfXF2of4CvbQ==
5)将step 3)的签名串、step 4)的RSA签名值,分别录入”商户平台证书工具v1.0.0“以验证签名,通过验证工具获得”签名验证通过“,附图示;
6)使用的签名算法如下图示:
7)但在调起JSAPI支付中,出现”支付验证签名失败“,特此请求指点和帮助,非常感谢!
在Memory帮助支持下,对证书、参数传递的有效性做了确认后,与后台技术支持进行了沟通,并提供如下日志信息进请求帮助分析诊断:
用户端发出的paySign:
后台收到的paySign:
下一步问题解决方案:
非常感谢Memory、后台技术人员的支持和帮助,为现阶段的“签名验证失败”问题的解决,指明了放心!
至此,“支付验证签名失败”问题解决。
“页面URL未注册”问题将是下一步问题解决方向,相信在Memory及其微信后台技术支持下,问题会解决,我也会第一时间分享更新状况及解决问题步骤,希望在问题解决过程的关键步骤,能对遇到同样问题和困惑的人员有所提示和帮助。
还是要谢谢Memory及其后台技术人员的认真负责的专业精神!
衷心感谢Memory及后台技术支持,他们的专业、敬业精神值得敬佩和学习!