前提:我的微信支付使用的是V2的接口
1. 我的小程序绑定了两个商户,其中一个商户A不用了,另外一个商户B正常使用
2. 我的APP微信支付正常使用,连接的商户B
3. 微信统一下单接口,正常下单,参数如下:
param:{
nonce_str=f3a72d3eb44f45d6826bc6a7f5474687,
openid=oPSMY0XPhn1DAJkubA3gnIW40YOQ,
sign=BBBFAC4462D95998F804A0657093DC41,
mch_id=1465558***,
body=客户订单支付,
notify_url=*******,
spbill_create_ip=125.121.43.85,
out_trade_no=test20230606191149060-656172,
appid=wx1f5*******,
total_fee=1,
trade_type=JSAPI,
sign_type=MD5
}
4. 我给小程序端返回的内容如下:
resultMap:
{
package=prepay_id=wx06191149663964bccc5b6cbe9438250000,
paySign=2B637B4F24F7DC013705DCDEE50309BB,
appid=wx1f5555bdb*****,
signType=MD5,
partnerid=1465558***,
prepayid=wx06191149663964bccc5b6cbe9438250000,
noncestr=b73QK6PhbEdVT8gl,
timestamp=1686049909
}
这里要说明的是,
1.sign的校验,我通过官方工具已经测试,没有问题
2.下单的appid和后面生成sign的appId的问题,我已经避免且测试
3.尝试将统一下单和发送给小程序的noncestr保持移植
4.下单的signType和返回给前端的signType保持了一致
现在的情况时,微信小程序的前端可以拉去支付,但是付款,提示验证签名失败
小程序调起支付没有partnerid,也没有APPID,nonceStr和timeStamp的S是大写
巨坑:小程序appId 、时间戳、随机字符串、订单详情扩展字符串 这个4个顺序不能错,必须按照这个顺序签名才对。重点、重点、重点 顺序(appId、timeStamp、nonceStr、package)