我这边在进行微信虚拟支付的道具订单退款时出现了问题,提示签名验证失败
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
我自己生成了很多次都是这个结果,不知道哪里错了,应该怎么解决?

这种一般是请求参数和计算参数不一致导致的
{
"errcode": 268490003,
"errmsg": "支付签名(pay_sig)校验失败 rid: 6a0eb387-52a638a2-0a42ee40"
}