add clear

This commit is contained in:
2022-09-09 16:42:55 +08:00
parent ad76b45b45
commit 7273fe1ce5
63 changed files with 2625 additions and 5287 deletions
+41 -41
View File
@@ -9,6 +9,7 @@
namespace wchat\qq;
use Exception;
use Kiri\Client;
use wchat\common\HttpClient;
use wchat\common\Result;
use wchat\common\Help;
@@ -35,47 +36,60 @@ class Recharge extends SmallProgram
/**
* @param int $money
* @param $orderNo
* @param $openId
* @return array|mixed|Result
* @param string $orderNo
* @param string $openId
* @return Result
* @throws
*/
public function recharge(int $money, $orderNo, $openId = '')
public function recharge(int $money, string $orderNo, string $openId = ''): Result
{
if ($money < 0) {
return new Result(['code' => 500, 'message' => '充值金额不能小于0.']);
return new Result(code: 500, message: '充值金额不能小于0.');
}
$this->money = $money;
$this->orderNo = $orderNo;
$this->data['openid'] = $openId;
$this->request->setCallback(function ($result, $body) {
$data = Help::toArray($result);
if (isset($data['sign'])) {
$sign = $data['sign'];
unset($data['sign']);
}
if (!isset($sign)) {
$return['code'] = -1;
$return['message'] = '返回数据签名验证失败';
} else {
$return['code'] = 0;
$return['data'] = $data;
$return['data']['postBody'] = $body;
if ($data['return_code'] == 'FAIL') {
$return['code'] = -1;
$return['message'] = $data['return_msg'];
}
}
return new Result($return);
});
return $this->send($this->uniformer, $this->builder());
$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.');
}
$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']));
}
/**
* @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()
protected function builder(): string
{
$data = [
'appid' => $this->config->getAppid(),
@@ -99,18 +113,4 @@ class Recharge extends SmallProgram
return Help::toXml($this->data);
}
/**
* @param $url
* @param $data
* @return array|mixed|Result
* @throws Exception
*/
private function send($url, $data)
{
$this->request->setIsSSL(true);
$this->request->setMethod(HttpClient::POST);
$this->request->addHeader('Content-Type', 'text/xml');
return $this->request->send($url, $data);
}
}