jasl / wx_pay

An unofficial simple wechat pay gem

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

支付成功之后通知回调验证失败

huxinghai opened this issue · comments

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

那支付实际成功了没?返回啥信息了

commented

支付成功了,微信返回的那些信息都有

如果你确定支付成功,那就以支付成功微信给的结构体的模式作为判断支付成功的依据咯

commented

谢谢!可以了,因为我的key没有传入,我用的是多账户所以没有配置全局key