@@ 32-211 (lines=180) @@ | ||
29 | /** |
|
30 | * Class API. |
|
31 | */ |
|
32 | class API extends AbstractAPI |
|
33 | { |
|
34 | /** |
|
35 | * Merchant instance. |
|
36 | * |
|
37 | * @var Merchant |
|
38 | */ |
|
39 | protected $merchant; |
|
40 | ||
41 | // api |
|
42 | const API_SEND = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack'; |
|
43 | const API_SEND_GROUP = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack'; |
|
44 | const API_QUERY = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo'; |
|
45 | const API_PREPARE = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/hbpreorder'; |
|
46 | ||
47 | // LuckyMoney type |
|
48 | const TYPE_NORMAL = 'NORMAL'; |
|
49 | const TYPE_GROUP = 'GROUP'; |
|
50 | ||
51 | // Risk control type. |
|
52 | const RISK_NORMAL = 'NORMAL'; |
|
53 | const RISK_IGN_FREQ_LMT = 'IGN_FREQ_LMT'; |
|
54 | const RISK_IGN_DAY_LMT = 'IGN_DAY_LMT'; |
|
55 | const RISK_IGN_FREQ_DAY_LMT = 'IGN_FREQ_DAY_LMT'; |
|
56 | ||
57 | /** |
|
58 | * API constructor. |
|
59 | * |
|
60 | * @param \EasyWeChat\Payment\Merchant $merchant |
|
61 | */ |
|
62 | public function __construct(Merchant $merchant) |
|
63 | { |
|
64 | $this->merchant = $merchant; |
|
65 | } |
|
66 | ||
67 | /** |
|
68 | * Prepare luckymoney. |
|
69 | * |
|
70 | * |
|
71 | * @return Collection |
|
72 | */ |
|
73 | public function prepare(array $params) |
|
74 | { |
|
75 | $params['wxappid'] = $this->merchant->app_id; |
|
76 | ||
77 | //This parameter is fixed and can not be changed. |
|
78 | $params['auth_mchid'] = '1000052601'; |
|
79 | //This parameter is fixed and can not be changed. |
|
80 | $params['auth_appid'] = 'wxbf42bd79c4391863'; |
|
81 | ||
82 | $params['amt_type'] = 'ALL_RAND'; |
|
83 | ||
84 | return $this->request(self::API_PREPARE, $params); |
|
85 | } |
|
86 | ||
87 | /** |
|
88 | * Query luckymoney. |
|
89 | * |
|
90 | * @param string $mchBillNo |
|
91 | */ |
|
92 | public function query($orderNo) |
|
93 | { |
|
94 | $params = [ |
|
95 | 'appid' => $this->merchant->app_id, |
|
96 | 'mch_billno' => $orderNo, |
|
97 | 'bill_type' => 'MCHT', |
|
98 | ]; |
|
99 | ||
100 | return $this->request(self::API_QUERY, $params); |
|
101 | } |
|
102 | ||
103 | /** |
|
104 | * Send Luckymoney. |
|
105 | * |
|
106 | * @param array $params |
|
107 | * @param string $type |
|
108 | */ |
|
109 | public function send(array $params, $type = self::TYPE_NORMAL) |
|
110 | { |
|
111 | if ($type === self::TYPE_NORMAL) { |
|
112 | $api = self::API_SEND; |
|
113 | } else { |
|
114 | $api = self::API_SEND_GROUP; |
|
115 | } |
|
116 | ||
117 | $params['wxappid'] = $this->merchant->app_id; |
|
118 | ||
119 | return $this->request($api, $params); |
|
120 | } |
|
121 | ||
122 | /** |
|
123 | * Send normal lucnymoney. |
|
124 | * |
|
125 | * @param array $params |
|
126 | * |
|
127 | * @return Collection |
|
128 | */ |
|
129 | public function sendNormal($params) |
|
130 | { |
|
131 | $params['total_num'] = 1; |
|
132 | $params['client_ip'] = $params['client_ip'] ?: $_SERVER['HTTP_CLIENT_IP']; |
|
133 | ||
134 | return $this->send($params, self::TYPE_NORMAL); |
|
135 | } |
|
136 | ||
137 | /** |
|
138 | * Send group luckymoney. |
|
139 | * |
|
140 | * @param array $params |
|
141 | * |
|
142 | * @return Collection |
|
143 | */ |
|
144 | public function sendGroup($params) |
|
145 | { |
|
146 | $params['amt_type'] = 'ALL_RAND'; |
|
147 | $params['client_ip'] = $params['client_ip'] ?: $_SERVER['HTTP_CLIENT_IP']; |
|
148 | ||
149 | return $this->send($params, self::TYPE_GROUP); |
|
150 | } |
|
151 | ||
152 | /** |
|
153 | * Merchant setter. |
|
154 | * |
|
155 | * @param Merchant $merchant |
|
156 | * |
|
157 | * @return $this |
|
158 | */ |
|
159 | public function setMerchant(Merchant $merchant) |
|
160 | { |
|
161 | $this->merchant = $merchant; |
|
162 | } |
|
163 | ||
164 | /** |
|
165 | * Merchant getter. |
|
166 | * |
|
167 | * @return Merchant |
|
168 | */ |
|
169 | public function getMerchant() |
|
170 | { |
|
171 | return $this->merchant; |
|
172 | } |
|
173 | ||
174 | /** |
|
175 | * Make a API request. |
|
176 | * |
|
177 | * @param string $api |
|
178 | * @param array $params |
|
179 | * @param string $method |
|
180 | * |
|
181 | * @return Collection |
|
182 | */ |
|
183 | protected function request($api, array $params, $method = 'post') |
|
184 | { |
|
185 | $params['mch_id'] = $this->merchant->merchant_id; |
|
186 | $params['nonce_str'] = uniqid(); |
|
187 | $params['sign'] = \EasyWeChat\Payment\generate_sign($params, $this->merchant->key, 'md5'); |
|
188 | ||
189 | $options['body'] = XML::build($params); |
|
190 | $options['cert'] = $this->merchant->get('cert_path'); |
|
191 | $options['ssl_key'] = $this->merchant->get('key_path'); |
|
192 | ||
193 | return $this->parseResponse($this->getHttp()->request($api, $method, $options)); |
|
194 | } |
|
195 | ||
196 | /** |
|
197 | * Parse Response XML to array. |
|
198 | * |
|
199 | * @param string $response |
|
200 | * |
|
201 | * @return Collection |
|
202 | */ |
|
203 | protected function parseResponse($response) |
|
204 | { |
|
205 | if ($response instanceof ResponseInterface) { |
|
206 | $response = $response->getBody(); |
|
207 | } |
|
208 | ||
209 | return new Collection((array) XML::parse($response)); |
|
210 | } |
|
211 | } |
|
212 |
@@ 32-211 (lines=180) @@ | ||
29 | /** |
|
30 | * Class API. |
|
31 | */ |
|
32 | class API extends AbstractAPI |
|
33 | { |
|
34 | /** |
|
35 | * Merchant instance. |
|
36 | * |
|
37 | * @var Merchant |
|
38 | */ |
|
39 | protected $merchant; |
|
40 | ||
41 | // api |
|
42 | const API_SEND = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack'; |
|
43 | const API_SEND_GROUP = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack'; |
|
44 | const API_QUERY = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo'; |
|
45 | const API_PREPARE = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/hbpreorder'; |
|
46 | ||
47 | // LuckyMoney type |
|
48 | const TYPE_NORMAL = 'NORMAL'; |
|
49 | const TYPE_GROUP = 'GROUP'; |
|
50 | ||
51 | // Risk control type. |
|
52 | const RISK_NORMAL = 'NORMAL'; |
|
53 | const RISK_IGN_FREQ_LMT = 'IGN_FREQ_LMT'; |
|
54 | const RISK_IGN_DAY_LMT = 'IGN_DAY_LMT'; |
|
55 | const RISK_IGN_FREQ_DAY_LMT = 'IGN_FREQ_DAY_LMT'; |
|
56 | ||
57 | /** |
|
58 | * API constructor. |
|
59 | * |
|
60 | * @param \EasyWeChat\Payment\Merchant $merchant |
|
61 | */ |
|
62 | public function __construct(Merchant $merchant) |
|
63 | { |
|
64 | $this->merchant = $merchant; |
|
65 | } |
|
66 | ||
67 | /** |
|
68 | * Prepare luckymoney. |
|
69 | * |
|
70 | * |
|
71 | * @return Collection |
|
72 | */ |
|
73 | public function prepare(array $params) |
|
74 | { |
|
75 | $params['wxappid'] = $this->merchant->app_id; |
|
76 | ||
77 | //This parameter is fixed and can not be changed. |
|
78 | $params['auth_mchid'] = '1000052601'; |
|
79 | //This parameter is fixed and can not be changed. |
|
80 | $params['auth_appid'] = 'wxbf42bd79c4391863'; |
|
81 | ||
82 | $params['amt_type'] = 'ALL_RAND'; |
|
83 | ||
84 | return $this->request(self::API_PREPARE, $params); |
|
85 | } |
|
86 | ||
87 | /** |
|
88 | * Query luckymoney. |
|
89 | * |
|
90 | * @param string $mchBillNo |
|
91 | */ |
|
92 | public function query($orderNo) |
|
93 | { |
|
94 | $params = [ |
|
95 | 'appid' => $this->merchant->app_id, |
|
96 | 'mch_billno' => $orderNo, |
|
97 | 'bill_type' => 'MCHT', |
|
98 | ]; |
|
99 | ||
100 | return $this->request(self::API_QUERY, $params); |
|
101 | } |
|
102 | ||
103 | /** |
|
104 | * Send Luckymoney. |
|
105 | * |
|
106 | * @param array $params |
|
107 | * @param string $type |
|
108 | */ |
|
109 | public function send(array $params, $type = self::TYPE_NORMAL) |
|
110 | { |
|
111 | if ($type === self::TYPE_NORMAL) { |
|
112 | $api = self::API_SEND; |
|
113 | } else { |
|
114 | $api = self::API_SEND_GROUP; |
|
115 | } |
|
116 | ||
117 | $params['wxappid'] = $this->merchant->app_id; |
|
118 | ||
119 | return $this->request($api, $params); |
|
120 | } |
|
121 | ||
122 | /** |
|
123 | * Send normal lucnymoney. |
|
124 | * |
|
125 | * @param array $params |
|
126 | * |
|
127 | * @return Collection |
|
128 | */ |
|
129 | public function sendNormal($params) |
|
130 | { |
|
131 | $params['total_num'] = 1; |
|
132 | $params['client_ip'] = $params['client_ip'] ?: $_SERVER['HTTP_CLIENT_IP']; |
|
133 | ||
134 | return $this->send($params, self::TYPE_NORMAL); |
|
135 | } |
|
136 | ||
137 | /** |
|
138 | * Send group luckymoney. |
|
139 | * |
|
140 | * @param array $params |
|
141 | * |
|
142 | * @return Collection |
|
143 | */ |
|
144 | public function sendGroup($params) |
|
145 | { |
|
146 | $params['amt_type'] = 'ALL_RAND'; |
|
147 | $params['client_ip'] = $params['client_ip'] ?: $_SERVER['HTTP_CLIENT_IP']; |
|
148 | ||
149 | return $this->send($params, self::TYPE_GROUP); |
|
150 | } |
|
151 | ||
152 | /** |
|
153 | * Merchant setter. |
|
154 | * |
|
155 | * @param Merchant $merchant |
|
156 | * |
|
157 | * @return $this |
|
158 | */ |
|
159 | public function setMerchant(Merchant $merchant) |
|
160 | { |
|
161 | $this->merchant = $merchant; |
|
162 | } |
|
163 | ||
164 | /** |
|
165 | * Merchant getter. |
|
166 | * |
|
167 | * @return Merchant |
|
168 | */ |
|
169 | public function getMerchant() |
|
170 | { |
|
171 | return $this->merchant; |
|
172 | } |
|
173 | ||
174 | /** |
|
175 | * Make a API request. |
|
176 | * |
|
177 | * @param string $api |
|
178 | * @param array $params |
|
179 | * @param string $method |
|
180 | * |
|
181 | * @return Collection |
|
182 | */ |
|
183 | protected function request($api, array $params, $method = 'post') |
|
184 | { |
|
185 | $params['mch_id'] = $this->merchant->merchant_id; |
|
186 | $params['nonce_str'] = uniqid(); |
|
187 | $params['sign'] = \EasyWeChat\Payment\generate_sign($params, $this->merchant->key, 'md5'); |
|
188 | ||
189 | $options['body'] = XML::build($params); |
|
190 | $options['cert'] = $this->merchant->get('cert_path'); |
|
191 | $options['ssl_key'] = $this->merchant->get('key_path'); |
|
192 | ||
193 | return $this->parseResponse($this->getHttp()->request($api, $method, $options)); |
|
194 | } |
|
195 | ||
196 | /** |
|
197 | * Parse Response XML to array. |
|
198 | * |
|
199 | * @param string $response |
|
200 | * |
|
201 | * @return Collection |
|
202 | */ |
|
203 | protected function parseResponse($response) |
|
204 | { |
|
205 | if ($response instanceof ResponseInterface) { |
|
206 | $response = $response->getBody(); |
|
207 | } |
|
208 | ||
209 | return new Collection((array) XML::parse($response)); |
|
210 | } |
|
211 | } |
|
212 |
@@ 32-211 (lines=180) @@ | ||
29 | /** |
|
30 | * Class API. |
|
31 | */ |
|
32 | class API extends AbstractAPI |
|
33 | { |
|
34 | /** |
|
35 | * Merchant instance. |
|
36 | * |
|
37 | * @var Merchant |
|
38 | */ |
|
39 | protected $merchant; |
|
40 | ||
41 | // api |
|
42 | const API_SEND = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack'; |
|
43 | const API_SEND_GROUP = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack'; |
|
44 | const API_QUERY = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo'; |
|
45 | const API_PREPARE = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/hbpreorder'; |
|
46 | ||
47 | // LuckyMoney type |
|
48 | const TYPE_NORMAL = 'NORMAL'; |
|
49 | const TYPE_GROUP = 'GROUP'; |
|
50 | ||
51 | // Risk control type. |
|
52 | const RISK_NORMAL = 'NORMAL'; |
|
53 | const RISK_IGN_FREQ_LMT = 'IGN_FREQ_LMT'; |
|
54 | const RISK_IGN_DAY_LMT = 'IGN_DAY_LMT'; |
|
55 | const RISK_IGN_FREQ_DAY_LMT = 'IGN_FREQ_DAY_LMT'; |
|
56 | ||
57 | /** |
|
58 | * API constructor. |
|
59 | * |
|
60 | * @param \EasyWeChat\Payment\Merchant $merchant |
|
61 | */ |
|
62 | public function __construct(Merchant $merchant) |
|
63 | { |
|
64 | $this->merchant = $merchant; |
|
65 | } |
|
66 | ||
67 | /** |
|
68 | * Prepare luckymoney. |
|
69 | * |
|
70 | * |
|
71 | * @return Collection |
|
72 | */ |
|
73 | public function prepare(array $params) |
|
74 | { |
|
75 | $params['wxappid'] = $this->merchant->app_id; |
|
76 | ||
77 | //This parameter is fixed and can not be changed. |
|
78 | $params['auth_mchid'] = '1000052601'; |
|
79 | //This parameter is fixed and can not be changed. |
|
80 | $params['auth_appid'] = 'wxbf42bd79c4391863'; |
|
81 | ||
82 | $params['amt_type'] = 'ALL_RAND'; |
|
83 | ||
84 | return $this->request(self::API_PREPARE, $params); |
|
85 | } |
|
86 | ||
87 | /** |
|
88 | * Query luckymoney. |
|
89 | * |
|
90 | * @param string $mchBillNo |
|
91 | */ |
|
92 | public function query($orderNo) |
|
93 | { |
|
94 | $params = [ |
|
95 | 'appid' => $this->merchant->app_id, |
|
96 | 'mch_billno' => $orderNo, |
|
97 | 'bill_type' => 'MCHT', |
|
98 | ]; |
|
99 | ||
100 | return $this->request(self::API_QUERY, $params); |
|
101 | } |
|
102 | ||
103 | /** |
|
104 | * Send Luckymoney. |
|
105 | * |
|
106 | * @param array $params |
|
107 | * @param string $type |
|
108 | */ |
|
109 | public function send(array $params, $type = self::TYPE_NORMAL) |
|
110 | { |
|
111 | if ($type === self::TYPE_NORMAL) { |
|
112 | $api = self::API_SEND; |
|
113 | } else { |
|
114 | $api = self::API_SEND_GROUP; |
|
115 | } |
|
116 | ||
117 | $params['wxappid'] = $this->merchant->app_id; |
|
118 | ||
119 | return $this->request($api, $params); |
|
120 | } |
|
121 | ||
122 | /** |
|
123 | * Send normal lucnymoney. |
|
124 | * |
|
125 | * @param array $params |
|
126 | * |
|
127 | * @return Collection |
|
128 | */ |
|
129 | public function sendNormal($params) |
|
130 | { |
|
131 | $params['total_num'] = 1; |
|
132 | $params['client_ip'] = $params['client_ip'] ?: $_SERVER['HTTP_CLIENT_IP']; |
|
133 | ||
134 | return $this->send($params, self::TYPE_NORMAL); |
|
135 | } |
|
136 | ||
137 | /** |
|
138 | * Send group luckymoney. |
|
139 | * |
|
140 | * @param array $params |
|
141 | * |
|
142 | * @return Collection |
|
143 | */ |
|
144 | public function sendGroup($params) |
|
145 | { |
|
146 | $params['amt_type'] = 'ALL_RAND'; |
|
147 | $params['client_ip'] = $params['client_ip'] ?: $_SERVER['HTTP_CLIENT_IP']; |
|
148 | ||
149 | return $this->send($params, self::TYPE_GROUP); |
|
150 | } |
|
151 | ||
152 | /** |
|
153 | * Merchant setter. |
|
154 | * |
|
155 | * @param Merchant $merchant |
|
156 | * |
|
157 | * @return $this |
|
158 | */ |
|
159 | public function setMerchant(Merchant $merchant) |
|
160 | { |
|
161 | $this->merchant = $merchant; |
|
162 | } |
|
163 | ||
164 | /** |
|
165 | * Merchant getter. |
|
166 | * |
|
167 | * @return Merchant |
|
168 | */ |
|
169 | public function getMerchant() |
|
170 | { |
|
171 | return $this->merchant; |
|
172 | } |
|
173 | ||
174 | /** |
|
175 | * Make a API request. |
|
176 | * |
|
177 | * @param string $api |
|
178 | * @param array $params |
|
179 | * @param string $method |
|
180 | * |
|
181 | * @return Collection |
|
182 | */ |
|
183 | protected function request($api, array $params, $method = 'post') |
|
184 | { |
|
185 | $params['mch_id'] = $this->merchant->merchant_id; |
|
186 | $params['nonce_str'] = uniqid(); |
|
187 | $params['sign'] = \EasyWeChat\Payment\generate_sign($params, $this->merchant->key, 'md5'); |
|
188 | ||
189 | $options['body'] = XML::build($params); |
|
190 | $options['cert'] = $this->merchant->get('cert_path'); |
|
191 | $options['ssl_key'] = $this->merchant->get('key_path'); |
|
192 | ||
193 | return $this->parseResponse($this->getHttp()->request($api, $method, $options)); |
|
194 | } |
|
195 | ||
196 | /** |
|
197 | * Parse Response XML to array. |
|
198 | * |
|
199 | * @param string $response |
|
200 | * |
|
201 | * @return Collection |
|
202 | */ |
|
203 | protected function parseResponse($response) |
|
204 | { |
|
205 | if ($response instanceof ResponseInterface) { |
|
206 | $response = $response->getBody(); |
|
207 | } |
|
208 | ||
209 | return new Collection((array) XML::parse($response)); |
|
210 | } |
|
211 | } |
|
212 |