收藏
回答

微信小程序虚拟支付退款接口提示签名验证失败,验证多次生成的都是这个,怎么解决?

我这边在进行微信虚拟支付的道具订单退款时出现了问题,提示签名验证失败

https://developers.weixin.qq.com/miniprogram/dev/server/API/VirtualPayment/api_refund_order.html

接口文档是这个,我按照文档创建参数,生成签名后,提示签名验证失败

代码如下:

$signData=[

            'openid'=>"o25D46_hm2ve1J4AH0Hk2agXKBus",

            'order_id'=>"20260520163407331250",

            'refund_order_id'=>"21ttmn93op",

            'left_fee'=>100,

            'refund_fee'=>100,

            'biz_meta'=>"lx",

            'refund_reason'=>"0",

            'req_from'=>"1",

            'env'=>1,

        ];

        print_r($signData);

        $signDataJson=json_encode($signData,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);

        echo($signDataJson."<br/>");

        $signStr='/xpay/refund_order&'.$signDataJson;

        echo hash_hmac('sha256',$signStr,"8yvTBqJGhKOJTxNUmX3RnRy1JywxsMlR");

生成的签名:df420ce8d7fbbd99c3c74d76d09d121204ed5a34412c9fdc5792074a286fc9a0

我自己生成了很多次都是这个结果,不知道哪里错了,应该怎么解决?

回答关注问题邀请回答
收藏

2 个回答

  • Memory (私信不回复)
    Memory (私信不回复)
    1天前

    这种一般是请求参数和计算参数不一致导致的

    1天前
    有用
    回复 3
    • 名字好难想
      名字好难想
      1天前
      谢谢,我找到原因了,请求的数据应该是json后的数据,我直接把数组传过去了,所以不成功,接口文档里没找到具体的示例,所以困扰了我好久。
      1天前
      回复
    • Memory (私信不回复)
      Memory (私信不回复)
      1天前回复名字好难想
      群里就是我回的
      1天前
      回复
    • 名字好难想
      名字好难想
      1天前回复Memory (私信不回复)
      谢谢大佬,膜拜
      1天前
      回复
  • 智能回答 智能回答 本次回答由AI生成
    1天前
    有用
    回复 1
    • 名字好难想
      名字好难想
      1天前
      报错信息:
      {
       "errcode": 268490003,
       "errmsg": "支付签名(pay_sig)校验失败 rid: 6a0eb387-52a638a2-0a42ee40"
      }
      1天前
      回复
登录 后发表内容