文档地址:https://pay.weixin.qq.com/doc/v2/merchant/4011987320
详细过程如下:
一、接入前提条件:
微信支付【委托代扣】实现连续包月功能, 委托代扣相关的权限后台都已申请通过,协议模板也已经创建完成。
二、接入过程(支付中签约):
预下单:商家服务端,调用微信支付“支付中签约”接口(https://api.mch.weixin.qq.com/pay/contractorder),成功下单(return_code 和result_code都为SUCCESS),此接口是V2版本的支付委托代扣(文档中V3版本未提及,且已经咨询过平台(开发助手转人工的回复),委托代扣只有V2版本的接入,但是在社区的看到有回复说“不是所有场景都支持,说联系BD沟通(时间是2024-12-10回复的)”,也有说就是预约扣款,实际可能是独立产品);
二次签名:服务端 获取 prepay_id, 进行二次签名(已严格按照appid、partnerid、prepayid、package、noncestr、timestamp), 且签名方式都为(MD5), 然后将二次签名的结果和签名的参数封装返回给APP端调起支付;
APP端调用:APP使用服务端返回的参数(没有增加其他参数),调用结果是 提示“支付验证签名失败”,无法唤起微信签约支付页面;
自行排查过程:
1、 开放平台设置的app应用签名是否正确:结果正确(大小写不同,md5大小写应该是忽略的)
2、 检查签名参数的拼写,下单接口和二次签名的参数key拼写规则不同(前者采用plan_id 下划线形式,后者是partnerid全小写形式),且已确认是正确的(另: 签名验证工具验证,结果一致,不过这个只能说明参数格式正确)
2、 APIV2 签名key 检查,支付签约接口下单正常(不只是请求成功, 同时return_code 和result_code都为SUCCESS,说明api key 正确)
3、 检查APP端的调试使用的应用签名是否和开放平台设置的应用签名是否一致(确认release、debug使用的和平台一致)
4、 使用APIV3的app支付和扫码支付都是正常的,说明证书正确;
通过以上检查, APP端调用微信支付, 仍无法调起微信支付页面, 弹出“支付验证签名失败”;
我需要的帮助是:
1)目前还有哪些地方需要检查(目前看错误的定位大概在哪个步骤)导致调用支付失败,无法调起微信的支付页面?
另外 因为V2版本API已不再维护,对应SDK已无法下载,相关的测试代码文档中也未找到 委托代扣(支付中签约)的详细说明和调试(这个问题前两天咨询过,说向你们开发提交工单,补充文档,估计短时间也没更新);
2)APP端调用参数是否只需要(appid、partnerid、prepayid、package、noncestr、timestamp、二次签名的sign), 是否根据prepayid 判断是否是委托代扣,唤起不同的支付页面?
3)开放平台设置的app应用签名,备用签名,可用于需进行签名轮换场景,和直接修改有什么区别?(也尝试将备用签名填的是大小的应用包签名,结果也是提示“支付验证签名失败”)
4)APIV3版本是否有委托代扣的文档或者接口支持,“预约扣款”这个产品是独立产品还是就是V2版本的“委托代扣”?
感谢耐心查看。

调起时提示“支付签名验证失败”,是调起的签名有问题导致的。
可以把调起的参数按文档参数规则,放到在线验签工具https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1进行验签。验签通过的话,可以参数写死去前端调起,以免传递的过程中参数被篡改。
如果参数传递一致的话仍无法调起,检查下商户号和v2密钥是否准确对应,签名工具不校验密钥正确性,只校验参数格式。
注意:不能使用下单返回的签名值,调起的签名值需要重新计算的