Commit 29e1ea212f9276ffe92f942735c2302872221e03
1 parent
76960590
Exists in
master
refactor
Showing
1 changed file
with
45 additions
and
54 deletions
Show diff stats
lib/wx_pay/service.rb
... | ... | @@ -8,14 +8,14 @@ module WxPay |
8 | 8 | INVOKE_UNIFIEDORDER_REQUIRED_FIELDS = %i(body out_trade_no total_fee spbill_create_ip notify_url trade_type) |
9 | 9 | def self.invoke_unifiedorder(params, options = {}) |
10 | 10 | params = { |
11 | - appid: options[:appid] || WxPay.appid, | |
12 | - mch_id: options[:mch_id] || WxPay.mch_id, | |
11 | + appid: options.delete(:appid) || WxPay.appid, | |
12 | + mch_id: options.delete(:mch_id) || WxPay.mch_id, | |
13 | 13 | nonce_str: SecureRandom.uuid.tr('-', '') |
14 | 14 | }.merge(params) |
15 | 15 | |
16 | 16 | check_required_options(params, INVOKE_UNIFIEDORDER_REQUIRED_FIELDS) |
17 | 17 | |
18 | - r = invoke_remote("#{GATEWAY_URL}/pay/unifiedorder", make_payload(params)) | |
18 | + r = invoke_remote("#{GATEWAY_URL}/pay/unifiedorder", make_payload(params), options) | |
19 | 19 | |
20 | 20 | yield r if block_given? |
21 | 21 | |
... | ... | @@ -25,8 +25,8 @@ module WxPay |
25 | 25 | GENERATE_APP_PAY_REQ_REQUIRED_FIELDS = %i(prepayid noncestr) |
26 | 26 | def self.generate_app_pay_req(params, options = {}) |
27 | 27 | params = { |
28 | - appid: options[:appid] || WxPay.appid, | |
29 | - partnerid: options[:mch_id] || WxPay.mch_id, | |
28 | + appid: options.delete(:appid) || WxPay.appid, | |
29 | + partnerid: options.delete(:mch_id) || WxPay.mch_id, | |
30 | 30 | package: 'Sign=WXPay', |
31 | 31 | timestamp: Time.now.to_i.to_s |
32 | 32 | }.merge(params) |
... | ... | @@ -38,24 +38,25 @@ module WxPay |
38 | 38 | params |
39 | 39 | end |
40 | 40 | |
41 | - INVOKE_REFUND_REQUIRED_FIELDS = %i(out_refund_no total_fee refund_fee) | |
41 | + INVOKE_REFUND_REQUIRED_FIELDS = %i(out_refund_no total_fee refund_fee op_user_id) | |
42 | 42 | def self.invoke_refund(params, options = {}) |
43 | 43 | params = { |
44 | - appid: options[:appid] || WxPay.appid, | |
45 | - mch_id: options[:mch_id] || WxPay.mch_id, | |
44 | + appid: options.delete(:appid) || WxPay.appid, | |
45 | + mch_id: options.delete(:mch_id) || WxPay.mch_id, | |
46 | 46 | nonce_str: SecureRandom.uuid.tr('-', ''), |
47 | - op_user_id: options[:mch_id] || WxPay.mch_id | |
48 | 47 | }.merge(params) |
49 | 48 | |
49 | + params[:op_user_id] ||= params[:mch_id] | |
50 | + | |
50 | 51 | check_required_options(params, INVOKE_REFUND_REQUIRED_FIELDS) |
51 | 52 | |
52 | - r = invoke_remote "#{GATEWAY_URL}/secapi/pay/refund", | |
53 | - make_payload(params), | |
54 | - { | |
55 | - ssl_client_cert: options[:apiclient_cert] || WxPay.apiclient_cert, | |
56 | - ssl_client_key: options[:apiclient_key] || WxPay.apiclient_key, | |
57 | - verify_ssl: OpenSSL::SSL::VERIFY_NONE | |
58 | - } | |
53 | + options = { | |
54 | + ssl_client_cert: options.delete(:apiclient_cert) || WxPay.apiclient_cert, | |
55 | + ssl_client_key: options.delete(:apiclient_key) || WxPay.apiclient_key, | |
56 | + verify_ssl: OpenSSL::SSL::VERIFY_NONE | |
57 | + }.merge(options) | |
58 | + | |
59 | + r = invoke_remote("#{GATEWAY_URL}/secapi/pay/refund", make_payload(params), options) | |
59 | 60 | |
60 | 61 | yield(r) if block_given? |
61 | 62 | |
... | ... | @@ -65,20 +66,20 @@ module WxPay |
65 | 66 | INVOKE_TRANSFER_REQUIRED_FIELDS = %i(partner_trade_no openid check_name amount desc spbill_create_ip) |
66 | 67 | def self.invoke_transfer(params, options = {}) |
67 | 68 | params = { |
68 | - mch_appid: options[:appid] || WxPay.appid, | |
69 | - mchid: options[:mch_id] || WxPay.mch_id, | |
69 | + mch_appid: options.delete(:appid) || WxPay.appid, | |
70 | + mchid: options.delete(:mch_id) || WxPay.mch_id, | |
70 | 71 | nonce_str: SecureRandom.uuid.tr('-', '') |
71 | 72 | }.merge(params) |
72 | 73 | |
73 | 74 | check_required_options(params, INVOKE_TRANSFER_REQUIRED_FIELDS) |
74 | 75 | |
75 | - r = invoke_remote "#{GATEWAY_URL}/mmpaymkttransfers/promotion/transfers", | |
76 | - make_payload(params), | |
77 | - { | |
78 | - ssl_client_cert: options[:apiclient_cert] || WxPay.apiclient_cert, | |
79 | - ssl_client_key: options[:apiclient_key] || WxPay.apiclient_key, | |
80 | - verify_ssl: OpenSSL::SSL::VERIFY_NONE | |
81 | - } | |
76 | + options = { | |
77 | + ssl_client_cert: options.delete(:apiclient_cert) || WxPay.apiclient_cert, | |
78 | + ssl_client_key: options.delete(:apiclient_key) || WxPay.apiclient_key, | |
79 | + verify_ssl: OpenSSL::SSL::VERIFY_NONE | |
80 | + }.merge(options) | |
81 | + | |
82 | + r = invoke_remote("#{GATEWAY_URL}/mmpaymkttransfers/promotion/transfers", make_payload(params), options) | |
82 | 83 | |
83 | 84 | yield r if block_given? |
84 | 85 | |
... | ... | @@ -88,30 +89,20 @@ module WxPay |
88 | 89 | INVOKE_REVERSE_REQUIRED_FIELDS = %i(out_trade_no) |
89 | 90 | def self.invoke_reverse(params, options = {}) |
90 | 91 | params = { |
91 | - appid: options[:appid] || WxPay.appid, | |
92 | - mch_id: options[:mch_id] || WxPay.mch_id, | |
92 | + appid: options.delete(:appid) || WxPay.appid, | |
93 | + mch_id: options.delete(:mch_id) || WxPay.mch_id, | |
93 | 94 | nonce_str: SecureRandom.uuid.tr('-', '') |
94 | 95 | }.merge(params) |
95 | 96 | |
96 | 97 | check_required_options(params, INVOKE_REVERSE_REQUIRED_FIELDS) |
97 | 98 | |
98 | - # ๅพฎไฟก้ๆฌพ้่ฆๅๅ่ฏไนฆ | |
99 | - # https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4 | |
100 | - # https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3 | |
101 | - | |
102 | - WxPay.extra_rest_client_options = { | |
103 | - ssl_client_cert: WxPay.apiclient_cert.certificate, | |
104 | - ssl_client_key: WxPay.apiclient_cert.key, | |
99 | + options = { | |
100 | + ssl_client_cert: options.delete(:apiclient_cert) || WxPay.apiclient_cert, | |
101 | + ssl_client_key: options.delete(:apiclient_key) || WxPay.apiclient_key, | |
105 | 102 | verify_ssl: OpenSSL::SSL::VERIFY_NONE |
106 | - } | |
103 | + }.merge(options) | |
107 | 104 | |
108 | - r = invoke_remote "#{GATEWAY_URL}/secapi/pay/reverse", | |
109 | - make_payload(params), | |
110 | - { | |
111 | - ssl_client_cert: options[:apiclient_cert] || WxPay.apiclient_cert, | |
112 | - ssl_client_key: options[:apiclient_key] || WxPay.apiclient_key, | |
113 | - verify_ssl: OpenSSL::SSL::VERIFY_NONE | |
114 | - } | |
105 | + r = invoke_remote("#{GATEWAY_URL}/secapi/pay/reverse", make_payload(params), options) | |
115 | 106 | |
116 | 107 | yield(r) if block_given? |
117 | 108 | |
... | ... | @@ -121,20 +112,20 @@ module WxPay |
121 | 112 | INVOKE_MICROPAY_REQUIRED_FIELDS = %i(body out_trade_no total_fee spbill_create_ip auth_code) |
122 | 113 | def self.invoke_micropay(params, options = {}) |
123 | 114 | params = { |
124 | - appid: options[:appid] || WxPay.appid, | |
125 | - mch_id: options[:mch_id] || WxPay.mch_id, | |
115 | + appid: options.delete(:appid) || WxPay.appid, | |
116 | + mch_id: options.delete(:mch_id) || WxPay.mch_id, | |
126 | 117 | nonce_str: SecureRandom.uuid.tr('-', '') |
127 | 118 | }.merge(params) |
128 | 119 | |
129 | 120 | check_required_options(params, INVOKE_MICROPAY_REQUIRED_FIELDS) |
130 | 121 | |
131 | - r = invoke_remote "#{GATEWAY_URL}/pay/micropay", | |
132 | - make_payload(params), | |
133 | - { | |
134 | - ssl_client_cert: options[:apiclient_cert] || WxPay.apiclient_cert, | |
135 | - ssl_client_key: options[:apiclient_key] || WxPay.apiclient_key, | |
136 | - verify_ssl: OpenSSL::SSL::VERIFY_NONE | |
137 | - } | |
122 | + options = { | |
123 | + ssl_client_cert: options.delete(:apiclient_cert) || WxPay.apiclient_cert, | |
124 | + ssl_client_key: options.delete(:apiclient_key) || WxPay.apiclient_key, | |
125 | + verify_ssl: OpenSSL::SSL::VERIFY_NONE | |
126 | + }.merge(options) | |
127 | + | |
128 | + r = invoke_remote("#{GATEWAY_URL}/pay/micropay", make_payload(params), options) | |
138 | 129 | |
139 | 130 | yield(r) if block_given? |
140 | 131 | |
... | ... | @@ -144,14 +135,14 @@ module WxPay |
144 | 135 | ORDER_QUERY_REQUIRED_FIELDS = %i(out_trade_no) |
145 | 136 | def self.order_query(params, options = {}) |
146 | 137 | params = { |
147 | - appid: options[:appid] || WxPay.appid, | |
148 | - mch_id: options[:mch_id] || WxPay.mch_id, | |
138 | + appid: options.delete(:appid) || WxPay.appid, | |
139 | + mch_id: options.delete(:mch_id) || WxPay.mch_id, | |
149 | 140 | nonce_str: SecureRandom.uuid.tr('-', '') |
150 | 141 | }.merge(params) |
151 | 142 | |
152 | 143 | check_required_options(params, ORDER_QUERY_REQUIRED_FIELDS) |
153 | 144 | |
154 | - r = invoke_remote "#{GATEWAY_URL}/pay/orderquery", make_payload(params) | |
145 | + r = invoke_remote("#{GATEWAY_URL}/pay/orderquery", make_payload(params), options) | |
155 | 146 | |
156 | 147 | yield(r) if block_given? |
157 | 148 | ... | ... |