Code Duplication    Length = 180-180 lines in 3 locations

src/Payment/LuckyMoney/API.php 1 location

@@ 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

src/Payment/Luckymoney/API.php 1 location

@@ 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

src/Payment/luckymoney/API.php 1 location

@@ 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