Issues (1482)

src/service/decent/EJiAoFei.php (2 issues)

Severity
1
<?php
2
3
namespace DtApp\ThinkLibrary\service\decent;
4
5
use DtApp\ThinkLibrary\exception\DtaException;
6
use DtApp\ThinkLibrary\facade\Xmls;
7
use DtApp\ThinkLibrary\Service;
8
use think\exception\HttpException;
9
10
/**
11
 * 缴费平台
12
 * Class EJiAoFei
13
 * @package DtApp\ThinkLibrary\service\decent
14
 */
15
class EJiAoFei extends Service
16
{
17
    /**
18
     * 待请求的链接
19
     * @var string
20
     */
21
    private $api, $method = '';
22
23
    /**
24
     * 由鼎信商务提供
25
     * @var
26
     */
27
    private $userid, $pwd, $key = '';
28
29
    /**
30
     * 需要发送的的参数
31
     * @var
32
     */
33
    private $param;
34
35
    /**
36
     * 响应内容
37
     * @var
38
     */
39
    private $output;
40
41
    /**
42
     * ip:端口
43
     * @param string $api
44
     * @return $this
45
     */
46
    public function api(string $api): self
47
    {
48
        $this->api = $api;
49
        return $this;
50
    }
51
52
    /**
53
     * 由鼎信商务提供
54
     * @param string $userid
55
     * @return $this
56
     */
57
    public function userid(string $userid): self
58
    {
59
        $this->userid = $userid;
60
        return $this;
61
    }
62
63
    /**
64
     * 由鼎信商务提供
65
     * @param string $pwd
66
     * @return $this
67
     */
68
    public function pwd(string $pwd): self
69
    {
70
        $this->pwd = $pwd;
71
        return $this;
72
    }
73
74
    /**
75
     * 由鼎信商务提供
76
     * @param string $key
77
     * @return $this
78
     */
79
    public function key(string $key): self
80
    {
81
        $this->key = $key;
82
        return $this;
83
    }
84
85
    /**
86
     * 话费充值
87
     * @param string $orderid 用户提交的订单号    用户提交的订单号,最长32位(用户保证其唯一性)
88
     * @param int $face 充值面值    以元为单位,包含10、20、30、50、100、200、300、500 移动联通电信
89
     * @param string $account 手机号码    需要充值的手机号码
90
     * @param int $amount 购买数量    只能为1
91
     * @return $this
92
     */
93
    public function chongZhi(string $orderid, int $face, string $account, int $amount = 1): self
94
    {
95
        $this->method = 'chongzhi_jkorders';
96
        $this->param = "userid={$this->userid}&pwd={$this->pwd}&orderid={$orderid}&face={$face}&account={$account}&amount={$amount}";
97
        return $this;
98
    }
99
100
    /**
101
     * 通用查询
102
     * @param string $orderid 用户提交的订单号    用户提交的订单号,最长32位(用户保证其唯一性)
103
     * @return $this
104
     */
105
    public function query(string $orderid): self
106
    {
107
        $this->method = 'query_jkorders';
108
        $this->param = "userid={$this->userid}&pwd={$this->pwd}&orderid={$orderid}";
109
        return $this;
110
    }
111
112
    /**
113
     * 用户余额查询
114
     * @return $this
115
     */
116
    public function money(): self
117
    {
118
        $this->method = 'money_jkuser';
119
        $this->param = "userid={$this->userid}&pwd={$this->pwd}";
120
        return $this;
121
    }
122
123
    /**
124
     * 腾讯充值
125
     * @param string $orderid 用户提交的订单号    用户提交的订单号,最长32位(用户保证其唯一性)
126
     * @param string $account QQ号    需要充值的QQ号
127
     * @param int $productid 产品id    可以通过queryTXproduct查询
128
     * @param int $amount 购买数量
129
     * @param string $ip 充值QQ号ip    可以为空
130
     * @param string $times 时间戳    格式:yyyyMMddhhmmss
131
     * @return $this
132
     */
133
    public function txchongzhi(string $orderid, string $account, int $productid, int $amount, string $ip, string $times): self
134
    {
135
        $this->method = 'txchongzhi';
136
        $this->param = "userid={$this->userid}&pwd={$this->pwd}&orderid={$orderid}&account={$account}&productid={$productid}&amount={$amount}&ip={$ip}&times={$times}";
137
        return $this;
138
    }
139
140
    /**
141
     * 可充值腾讯产品查询
142
     * @return $this
143
     */
144
    public function queryTXproduct(): self
145
    {
146
        $this->method = 'queryTXproduct';
147
        $this->param = "userid={$this->userid}&pwd={$this->pwd}";
148
        return $this;
149
    }
150
151
    /**
152
     * 流量充值
153
     * @param string $orderid 用户提交的订单号    用户提交的订单号,最长32位(用户保证其唯一性)
154
     * @param string $account 充值手机号    需要充值的手机号
155
     * @param int $gprs 充值流量值    单位:MB(具体流量值请咨询商务)
156
     * @param int $area 充值流量范围    0 全国流量,1 省内流量
157
     * @param int $effecttime 生效日期    0 即时生效,1次日生效,2 次月生效
158
     * @param int $validity 流量有效期    传入月数,0为当月有效
159
     * @param string $times 时间戳    格式:yyyyMMddhhmmss
160
     * @return $this
161
     */
162
    public function gprsChongzhiAdvance(string $orderid, string $account, int $gprs, int $area, int $effecttime, int $validity, string $times): self
163
    {
164
        $this->method = 'gprsChongzhiAdvance';
165
        $this->param = "userid={$this->userid}&pwd={$this->pwd}&orderid={$orderid}&account={$account}&gprs={$gprs}&area={$area}&effecttime={$effecttime}&validity={$validity}&times={$times}";
166
        return $this;
167
    }
168
169
    /**
170
     * 会员订单成本价查询
171
     * @param string $orderid 用户订单号    用户提交订单号
172
     * @return $this
173
     */
174
    public function checkCost(string $orderid): self
175
    {
176
        $this->method = 'checkCost';
177
        $this->param = "userid={$this->userid}&pwd={$this->pwd}&orderid={$orderid}";
178
        return $this;
179
    }
180
181
    /**
182
     * @throws DtaException
183
     */
184
    public function toArray()
185
    {
186
        //首先检测是否支持curl
187
        if (!extension_loaded("curl")) {
188
            throw new HttpException(404, '请开启curl模块!');
189
        }
190
        if (empty($this->api)) {
191
            throw new DtaException('请检查api参数');
192
        }
193
        $this->http();
194
        // 正常
195
        if (is_array($this->output)) {
0 ignored issues
show
The condition is_array($this->output) is always false.
Loading history...
196
            return $this->output;
197
        }
198
        if (is_object($this->output)) {
0 ignored issues
show
The condition is_object($this->output) is always false.
Loading history...
199
            $this->output = json_encode($this->output, JSON_UNESCAPED_UNICODE);
200
        }
201
        $this->output = json_decode($this->output, true);
202
        return $this->output;
203
    }
204
205
    /**
206
     * 网络请求
207
     */
208
    private function http(): void
209
    {
210
        //生成签名
211
        $sign = $this->createSign();
212
        //组织参数
213
        $this->param .= '&userkey=' . $sign;
214
        $url = "http://" . $this->api . "/" . $this->method . ".do?{$this->param}";
215
        $result = file_get_contents($url);
216
        $result = Xmls::toArray($result);
217
        $this->output = $result;
218
    }
219
220
    /**
221
     * 签名
222
     * @return string
223
     */
224
    private function createSign(): string
225
    {
226
        $sign = str_replace(array("&", "="), array("", ""), $this->param);
227
        $sign .= $this->key;
228
        $sign = strtoupper(md5($sign));
229
        return $sign;
230
    }
231
}