diff --git a/wchat/qq/Recharge.php b/wchat/qq/Recharge.php index e777e8e..a435cb3 100644 --- a/wchat/qq/Recharge.php +++ b/wchat/qq/Recharge.php @@ -10,107 +10,106 @@ namespace wchat\qq; use Exception; use Kiri\Client; -use wchat\common\HttpClient; use wchat\common\Result; use wchat\common\Help; class Recharge extends SmallProgram { - private $money = 0; + private float $money = 0; - private $orderNo; + private string $orderNo; - private $data = []; + private array $data = []; - private $spill_create_ip = ''; + private string $spill_create_ip = ''; - private $uniformer = 'https://qpay.qq.com/cgi-bin/pay/qpay_unified_order.cgi'; + private string $uniformer = '/cgi-bin/pay/qpay_unified_order.cgi'; - /** - * @param $value - */ - public function setSpillCreateIp($value) - { - $this->spill_create_ip = $value; - } + /** + * @param $value + */ + public function setSpillCreateIp($value) + { + $this->spill_create_ip = $value; + } - /** - * @param int $money - * @param string $orderNo - * @param string $openId - * @return Result - * @throws - */ - public function recharge(int $money, string $orderNo, string $openId = ''): Result - { - if ($money < 0) { - return new Result(code: 500, message: '充值金额不能小于0.'); - } - $this->money = $money; - $this->orderNo = $orderNo; - $this->data['openid'] = $openId; + /** + * @param int $money + * @param string $orderNo + * @param string $openId + * @return Result + * @throws + */ + public function recharge(int $money, string $orderNo, string $openId = ''): Result + { + if ($money < 0) { + return new Result(code: 500, message: '充值金额不能小于0.'); + } + $this->money = $money; + $this->orderNo = $orderNo; + $this->data['openid'] = $openId; - $client = new Client('qpay.qq.com', 443, true); - $client->withHeader(['Content-Type' => 'application/xml']); - $client->withBody($this->builder()); - $client->post($this->uniformer); - $client->close(); + $client = new Client('qpay.qq.com', 443, true); + $client->withHeader(['Content-Type' => 'application/xml']); + $client->withBody($this->builder()); + $client->post($this->uniformer); + $client->close(); - if (!in_array($client->getStatusCode(), [101, 200, 201])) { - return new Result(code: 505, message: 'network error.'); - } + if (!in_array($client->getStatusCode(), [101, 200, 201])) { + return new Result(code: 505, message: 'network error.'); + } - $data = Help::toArray($client->getBody()); - if (isset($data['return_code']) && $data['return_code'] != 'SUCCESS') { - return new Result(code: 503, message: $data['return_msg']); - } - if ($data['result_code'] != 'SUCCESS') { - return new Result(code: 504, message: $data['err_code_des']); - } + $data = Help::toArray($client->getBody()); + if (isset($data['return_code']) && $data['return_code'] != 'SUCCESS') { + return new Result(code: 503, message: $data['return_msg']); + } + if ($data['result_code'] != 'SUCCESS') { + return new Result(code: 504, message: $data['err_code_des']); + } - return new Result(code: 0, data: $this->reception($data['prepayid'])); - } + return new Result(code: 0, data: $this->reception($data['prepayid'])); + } - /** - * @param string $prepay_id - * @return string - */ - public function reception(string $prepay_id): string - { - return Help::sign([ - 'signType' => $this->config->getSignType(), - 'package' => 'prepay_id=' . $prepay_id, - 'nonceStr' => Help::random(32), - 'timestamp' => time() - ], $this->getConfig()->getKey(), $this->getConfig()->getSignType()); - } + /** + * @param string $prepay_id + * @return string + */ + public function reception(string $prepay_id): string + { + return Help::sign([ + 'signType' => $this->config->getSignType(), + 'package' => 'prepay_id=' . $prepay_id, + 'nonceStr' => Help::random(32), + 'timestamp' => time() + ], $this->getConfig()->getKey(), $this->getConfig()->getSignType()); + } - /** - * @return string - */ - protected function builder(): string - { - $data = [ - 'appid' => $this->config->getAppid(), - 'mch_id' => $this->config->getMchId(), - 'nonce_str' => Help::random(32), - 'body' => $this->config->getBody(), - 'out_trade_no' => $this->orderNo, - 'total_fee' => $this->money, - 'spbill_create_ip' => $this->spill_create_ip, - 'notify_url' => $this->config->getNotifyUrl(), - 'trade_type' => $this->config->getTradeType(), - ]; + /** + * @return string + */ + protected function builder(): string + { + $data = [ + 'appid' => $this->config->getAppid(), + 'mch_id' => $this->config->getMchId(), + 'nonce_str' => Help::random(32), + 'body' => $this->config->getBody(), + 'out_trade_no' => $this->orderNo, + 'total_fee' => $this->money, + 'spbill_create_ip' => $this->spill_create_ip, + 'notify_url' => $this->config->getNotifyUrl(), + 'trade_type' => $this->config->getTradeType(), + ]; - $this->data = array_merge($data, $this->data); + $this->data = array_merge($data, $this->data); - $key = $this->config->getKey(); - $sign_type = $this->config->getSignType(); + $key = $this->config->getKey(); + $sign_type = $this->config->getSignType(); - $this->data['sign_type'] = $this->config->getSignType(); - $this->data['sign'] = Help::sign($this->data, $key, $sign_type); + $this->data['sign_type'] = $this->config->getSignType(); + $this->data['sign'] = Help::sign($this->data, $key, $sign_type); - return Help::toXml($this->data); - } + return Help::toXml($this->data); + } } diff --git a/wchat/qq/Redhat.php b/wchat/qq/Redhat.php index f165f31..4a58010 100644 --- a/wchat/qq/Redhat.php +++ b/wchat/qq/Redhat.php @@ -431,7 +431,7 @@ class Redhat extends SmallProgram */ public function redEnvelopes(): Result { - $client = new Client('qpay.qq.com', 443, true); + $client = new Client('api.qpay.qq.com', 443, true); $client->withHeader(['Content-Type' => 'application/json']); $client->post($this->sendUrl, $this->generate()); $client->close();