Passed
Pull Request — master (#688)
by
unknown
02:16
created

QueryBatchIdPlugin::getUri()   B

Complexity

Conditions 8
Paths 2

Size

Total Lines 39
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 23
c 2
b 0
f 0
dl 0
loc 39
rs 8.4444
cc 8
nc 2
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yansongda\Pay\Plugin\Wechat\Fund\Transfer;
6
7
use Yansongda\Pay\Exception\Exception;
8
use Yansongda\Pay\Exception\InvalidParamsException;
9
use Yansongda\Pay\Plugin\Wechat\GeneralPlugin;
10
use Yansongda\Pay\Rocket;
11
12
/**
13
 * @see https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_2.shtml
14
 */
15
class QueryBatchIdPlugin extends GeneralPlugin
16
{
17
    protected function getMethod(): string
18
    {
19
        return 'GET';
20
    }
21
22
    protected function doSomething(Rocket $rocket): void
23
    {
24
        $rocket->setPayload(null);
25
    }
26
27
    /**
28
     * @throws \Yansongda\Pay\Exception\InvalidParamsException
29
     */
30
    protected function getUri(Rocket $rocket): string
31
    {
32
        $payload = $rocket->getPayload();
33
34
        if (is_null($payload->get('batch_id'))) {
35
            throw new InvalidParamsException(Exception::MISSING_NECESSARY_PARAMS);
36
        }
37
38
        if ($payload->get('need_query_detail')=='true' || $payload->get('need_query_detail') == true) {
39
            if (is_null($payload->get('detail_status'))) {
40
                $payload->detail_status = 'ALL';
41
            } else {
42
                switch ($payload->get('detail_status')) {
43
                    case 'ALL':
44
                        //ALL:全部。需要同时查询转账成功和转账失败的明细单
45
                        break;
46
    
47
                    case 'SUCCESS':
48
                        //SUCCESS:转账成功。只查询转账成功的明细单
49
                        break;
50
    
51
                    case 'FAIL':
52
                        // FAIL:转账失败。只查询转账失败的明细单
53
                        break;
54
                    
55
                    default:
56
                            throw new InvalidParamsException(Exception::PARAMS_ERROR);
57
                        break;
58
                }
59
            }
60
        }else{
61
            $payload->need_query_detail = 'false';
62
        }
63
64
        $batch_id = $payload->get('batch_id');
65
        unset($payload->batch_id);
66
67
        return 'v3/transfer/batches/batch-id/'.$batch_id.
68
            '?'.$payload->query();
69
    }
70
71
    /**
72
     * @throws \Yansongda\Pay\Exception\InvalidParamsException
73
     */
74
    protected function getPartnerUri(Rocket $rocket): string
75
    {
76
        $payload = $rocket->getPayload();
77
78
        if (is_null($payload->get('batch_id')) || is_null($payload->get('need_query_detail'))) {
79
            throw new InvalidParamsException(Exception::MISSING_NECESSARY_PARAMS);
80
        }
81
82
        return 'v3/partner-transfer/batches/batch-id/'.$payload->get('batch_id').
83
            '?'.$payload->query();
84
    }
85
}
86