@@ 13-49 (lines=37) @@ | ||
10 | use Yansongda\Pay\Gateways\Alipay; |
|
11 | use Yansongda\Supports\Collection; |
|
12 | ||
13 | class MiniGateway extends Gateway |
|
14 | { |
|
15 | /** |
|
16 | * Pay an order. |
|
17 | * |
|
18 | * @author xiaozan <[email protected]> |
|
19 | * |
|
20 | * @param string $endpoint |
|
21 | * |
|
22 | * @throws GatewayException |
|
23 | * @throws InvalidArgumentException |
|
24 | * @throws InvalidConfigException |
|
25 | * @throws InvalidSignException |
|
26 | * |
|
27 | * @see https://docs.alipay.com/mini/introduce/pay |
|
28 | */ |
|
29 | public function pay($endpoint, array $payload): Collection |
|
30 | { |
|
31 | $biz_array = json_decode($payload['biz_content'], true); |
|
32 | if (empty($biz_array['buyer_id'])) { |
|
33 | throw new InvalidArgumentException('buyer_id required'); |
|
34 | } |
|
35 | if ((Alipay::MODE_SERVICE === $this->mode) && (!empty(Support::getInstance()->pid))) { |
|
36 | $biz_array['extend_params'] = is_array($biz_array['extend_params']) ? array_merge(['sys_service_provider_id' => Support::getInstance()->pid], $biz_array['extend_params']) : ['sys_service_provider_id' => Support::getInstance()->pid]; |
|
37 | } |
|
38 | $payload['biz_content'] = json_encode($biz_array); |
|
39 | $payload['method'] = 'alipay.trade.create'; |
|
40 | $payload['sign'] = Support::generateSign($payload); |
|
41 | ||
42 | Events::dispatch(new Events\PayStarted('Alipay', 'Mini', $endpoint, $payload)); |
|
43 | ||
44 | return Support::requestApi($payload); |
|
45 | } |
|
46 | } |
|
47 |
@@ 13-44 (lines=32) @@ | ||
10 | use Yansongda\Pay\Gateways\Alipay; |
|
11 | use Yansongda\Supports\Collection; |
|
12 | ||
13 | class ScanGateway extends Gateway |
|
14 | { |
|
15 | /** |
|
16 | * Pay an order. |
|
17 | * |
|
18 | * @author yansongda <[email protected]> |
|
19 | * |
|
20 | * @param string $endpoint |
|
21 | * |
|
22 | * @throws GatewayException |
|
23 | * @throws InvalidArgumentException |
|
24 | * @throws InvalidConfigException |
|
25 | * @throws InvalidSignException |
|
26 | */ |
|
27 | public function pay($endpoint, array $payload): Collection |
|
28 | { |
|
29 | $payload['method'] = 'alipay.trade.precreate'; |
|
30 | $biz_array = json_decode($payload['biz_content'], true); |
|
31 | if ((Alipay::MODE_SERVICE === $this->mode) && (!empty(Support::getInstance()->pid))) { |
|
32 | $biz_array['extend_params'] = is_array($biz_array['extend_params']) ? array_merge(['sys_service_provider_id' => Support::getInstance()->pid], $biz_array['extend_params']) : ['sys_service_provider_id' => Support::getInstance()->pid]; |
|
33 | } |
|
34 | $payload['biz_content'] = json_encode(array_merge($biz_array, ['product_code' => ''])); |
|
35 | $payload['sign'] = Support::generateSign($payload); |
|
36 | ||
37 | Events::dispatch(new Events\PayStarted('Alipay', 'Scan', $endpoint, $payload)); |
|
38 | ||
39 | return Support::requestApi($payload); |
|
40 | } |
|
41 | } |
|
42 |