收藏
回答

JSAPI下单接口报错SIGN_ERROR怎么办?

参考链接:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml
用shell写的测试程序

METHOD='POST'
URL_PATH='/v3/pay/transactions/jsapi'
TIMESTAMP=`date +%s`
NONCE_STR=`hexdump -n 16 -e '4/4 "%08X" 1 "\n"' /dev/random`

POST_DATA="{\"mchid\":\"$MCHID\",\"out_trade_no\":\"$ORDER_ID\",\"appid\":\"$APPID\",\"description\":\"$GOODS_DESC\",\"notify_url\":\"$NOTIFY_URL\",\"amount\":{\"total\":$MONEY,\"currency\":\"CNY\"},\"payer\":{\"openid\":\"$OPENID\"}}"

oneline="$METHOD\n$URL_PATH\n$TIMESTAMP\n$NONCE_STR\n$POST_DATA\n"
echo $oneline

signstr=`echo -n -e "$oneline" | openssl dgst -sha256 -sign "$PRIV_KEY" | openssl base64 -A`
echo $signstr

curl -s 'https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi' \
	-H 'Content-Type: application/json' \
	-H "Authorization: WECHATPAY2-SHA256-RSA2048 mchid=\"$MCHID\",serial_no=\"$CERT_SN\",nonce_str=\"$NONCE_STR\",timestamp=\"$TIMESTAMP\",signature=\"$signstr\"" \
	--data-raw "$POST_DATA"

问题已经解决,之前的错误是因为Authorization字串中每个字段值没有做双引号包裹导致的
另:强烈建议平台文档用shell或者伪代码的方式进行举例,一目了然。现在的java-demo、php-demo、go-demo看得人云里雾里,头都炸了


最后一次编辑于  2023-01-27
回答关注问题邀请回答
收藏

1 个回答

  • 头上有个光圈
    头上有个光圈
    2023-01-27

    用签名验证工具验证也没有问题啊,为什么要报signature错误?

    2023-01-27
    有用
    回复
登录 后发表内容