Commit 992064fa097f657624bfbfdbb9e8ea174c0a8974

Authored by Jun Jiang
2 parents ee0099fd 92d3bb42
Exists in master

Merge pull request #18 from yijiasu/master

加入撤销订单的功能
Showing 1 changed file with 60 additions and 0 deletions   Show diff stats
lib/wx_pay/service.rb
@@ -66,6 +66,66 @@ module WxPay @@ -66,6 +66,66 @@ module WxPay
66 r 66 r
67 end 67 end
68 68
  69 + INVOKE_REVERSE_REQUIRED_FIELDS = %i(out_trade_no)
  70 + def self.invoke_reverse(params)
  71 + params = {
  72 + appid: WxPay.appid,
  73 + mch_id: WxPay.mch_id,
  74 + nonce_str: SecureRandom.uuid.tr('-', '')
  75 + }.merge(params)
  76 +
  77 + check_required_options(params, INVOKE_REVERSE_REQUIRED_FIELDS)
  78 +
  79 + # 微信退款需要双向证书
  80 + # https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4
  81 + # https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3
  82 +
  83 + WxPay.extra_rest_client_options = {
  84 + ssl_client_cert: WxPay.apiclient_cert.certificate,
  85 + ssl_client_key: WxPay.apiclient_cert.key,
  86 + verify_ssl: OpenSSL::SSL::VERIFY_NONE
  87 + }
  88 +
  89 + r = invoke_remote "#{GATEWAY_URL}/secapi/pay/reverse", make_payload(params)
  90 +
  91 + yield(r) if block_given?
  92 +
  93 + r
  94 + end
  95 +
  96 + INVOKE_MICROPAY_REQUIRED_FIELDS = %i(body out_trade_no total_fee spbill_create_ip auth_code)
  97 + def self.invoke_micropay(params)
  98 + params = {
  99 + appid: WxPay.appid,
  100 + mch_id: WxPay.mch_id,
  101 + nonce_str: SecureRandom.uuid.tr('-', '')
  102 + }.merge(params)
  103 + puts params
  104 + check_required_options(params, INVOKE_MICROPAY_REQUIRED_FIELDS)
  105 +
  106 + r = invoke_remote "#{GATEWAY_URL}/pay/micropay", make_payload(params)
  107 +
  108 + yield(r) if block_given?
  109 +
  110 + r
  111 + end
  112 +
  113 + ORDER_QUERY_REQUIRED_FIELDS = %i(out_trade_no)
  114 + def self.order_query(params)
  115 + params = {
  116 + appid: WxPay.appid,
  117 + mch_id: WxPay.mch_id,
  118 + nonce_str: SecureRandom.uuid.tr('-', '')
  119 + }.merge(params)
  120 + puts params
  121 + check_required_options(params, ORDER_QUERY_REQUIRED_FIELDS)
  122 +
  123 + r = invoke_remote "#{GATEWAY_URL}/pay/orderquery", make_payload(params)
  124 +
  125 + yield(r) if block_given?
  126 +
  127 + r
  128 + end
69 129
70 private 130 private
71 131