微信支付签名错误
这两天做ecshop微信站,需要用到微信支付,装了个微信支付插件后一直出现支付成功,
但是却总是出现签名错误,导致支付成功后无法改变订单支付状态,仔细检查了所有参数
后发现并没有填写错误的参数,同事正好刚做了个thinkphp的微信支付,用file_put_contents
出来的数组对比了他的正常支付的结果数组,发现我的返回数组多了一个code键。原来是ecshop
支付时需要pay_code来判断走的支付方式,然后就平白多了个键,导致微信sgin加密后解密匹配不上
本地的sgin,从而报错。解决方法:
1.新建个php,直接将code锁定为微信支付,然后支付时不再传递code,直接调用该新php。
2.处理回调xml和回调数组,去掉多与项。
附带正确的回调参数:
array (
‘appid’ => ‘xxxxxxxxxx’,
‘bank_type’ => ‘ICBC_DEBIT’,
‘cash_fee’ => ‘1’,
‘fee_type’ => ‘CNY’,
‘is_subscribe’ => ‘Y’,
‘mch_id’ => ‘xxxxxx’,
‘nonce_str’ => ‘xxxxxxx’,
‘openid’ => ‘xxxxxxx’,
‘out_trade_no’ => ‘xxxx’,
‘result_code’ => ‘SUCCESS’,
‘return_code’ => ‘SUCCESS’,
‘sign’ => ‘xxxxxxxxx’,
‘time_end’ => ‘xxxxxxx’,
‘total_fee’ => ‘1’,
‘trade_type’ => ‘JSAPI’,
‘transaction_id’ => ‘xxxxxxx’,
)
标签:ecshop, PHP