支付成功之后通知回调验证失败
huxinghai opened this issue · comments
kaka commented
Hi @jasl
我在公众号H5页面上调用微信支付,当支付成功之后微信回调通知验证数据时,不通过麻烦帮忙分析一下。
生成支付密钥使用下面这种方式
params = {
prepayid: '1101000000140415649af9fc314aa427',
noncestr: '1101000000140429eb40476f8896f4c9'
}
r = WxPay::Service.generate_js_pay_req params, {appid: 'APPID', mch_id: 'MCH_ID', key: 'KEY'}
验证支付成功回调通知
def notify
result = Hash.from_xml(request.body.read)["xml"]
Rails.logger.info("weixin notify: #{result}")
begin
if WxPay::Sign.verify?(result)
payid = result["out_trade_no"]
PayNotifyWorker.perform_async(payid, result)
render :xml => {return_code: "SUCCESS"}.to_xml(root: 'xml', dasherize: false)
else
Rails.logger.error("pay notify verify FAIL")
render :xml => {return_code: "FAIL", return_msg: "签名失败"}.to_xml(root: 'xml', dasherize: false)
end
rescue Exception => e
Rails.logger.error("pay notify error: #{e.message}")
render :xml => {return_code: "FAIL", return_msg: "处理失败! #{e.message}"}.to_xml(root: 'xml', dasherize: false)
end
end
Jun Jiang commented
那支付实际成功了没?返回啥信息了
kaka commented
支付成功了,微信返回的那些信息都有
Jun Jiang commented
如果你确定支付成功,那就以支付成功微信给的结构体的模式作为判断支付成功的依据咯
kaka commented
谢谢!可以了,因为我的key没有传入,我用的是多账户所以没有配置全局key