Commit 04edd39f1bc753fe81b4395d6b52704ddc213f32

Authored by qicaisheng
1 parent b8ad7aa4
Exists in master

add the code for trade_type is app

Showing 1 changed file with 17 additions and 0 deletions   Show diff stats
lib/wx_pay/service.rb
@@ -17,6 +17,23 @@ module WxPay @@ -17,6 +17,23 @@ module WxPay
17 17
18 r = invoke_remote("#{GATEWAY_URL}/unifiedorder", make_payload(params)) 18 r = invoke_remote("#{GATEWAY_URL}/unifiedorder", make_payload(params))
19 19
  20 + # when trade_type is app, signing again is needed, the sigin params are below
  21 + # appid,partnerid,prepayid,noncestr,timestamp,package。
  22 + # notice: package is "Sign=WXPay", noncestr is the same as the params[:nonce_str]
  23 + # prepayid is the r["prepay_id"]
  24 + if params[:trade_type] == 'APP' && r["return_code"] == "SUCCESS" && r["result_code"] == "SUCCESS"
  25 + sign_again_params = {
  26 + appid: params[:appid],
  27 + noncestr: params[:nonce_str],
  28 + package: 'Sign=WXPay',
  29 + partnerid: params[:mch_id],
  30 + timestamp: Time.now.to_i.to_s,
  31 + prepayid: r["prepay_id"]
  32 + }
  33 + r["sign"] = Sign.generate(sign_again_params)
  34 +
  35 + end
  36 +
20 yield r if block_given? 37 yield r if block_given?
21 38
22 r 39 r