fix: resolve PHPStan static analysis warnings

This commit is contained in:
xboard
2025-04-14 02:12:42 +08:00
parent 3d254c02c1
commit 2d3e4b4a95
84 changed files with 2330 additions and 1190 deletions
+113
View File
@@ -0,0 +1,113 @@
<?php
namespace App\Payments;
class HiiCashPayment
{
protected $config;
public function __construct($config)
{
$this->config = $config;
}
public function form()
{
return [
'rate' => [
'label' => '汇率',
'description' => 'HiiCash支付单位为美元,如果您站点金额单位不为美元则需要填写汇率',
'type' => 'input',
'default' => '2333'
],
'pid' => [
'label' => '商户号',
'description' => '',
'type' => 'input',
],
'appid' => [
'label' => '应用ID',
'description' => '',
'type' => 'input'
],
'key' => [
'label' => '私钥',
'description' => '',
'type' => 'input',
]
];
}
public function pay($order)
{
$request = [
"mchNo" => $this->config["pid"],
"appId" => $this->config["appid"],
"mchOrderNo" => $order["trade_no"],
"amount" => ceil(($order["total_amount"] * 100) / ($this->config['rate'] ?? "1")) / 100,
"payDataType" => "Cashier",
"currency" => "USD",
"subject" => $order["trade_no"],
"notifyUrl" => $order["notify_url"],
"returnUrl" => $order["return_url"],
];
$headers = [
"HiicashPay-Timestamp" => (int)(string)floor(microtime(true) * 1000),
"HiicashPay-Nonce" => \Str::random(32),
"HiicashPay-AppId" => $this->config["appid"]
];
$body = json_encode($request, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
$payload = $headers['HiicashPay-Timestamp'] . chr(0x0A) . $headers['HiicashPay-Nonce'] . chr(0x0A) . $body . chr(0x0A);
$signature = $this->generate_signature($payload, $this->config['key']);
$headers["HiicashPay-Signature"] = $signature;
$jsonStr = json_encode($request, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
$httpHeaders = [];
foreach ($headers as $key => $header) {
$httpHeaders[] = $key . ': ' . $header;
}
$httpHeaders[] = 'Content-Type: application/json; charset=utf-8';
$httpHeaders[] = 'Content-Length: ' . strlen($jsonStr);
$ch = curl_init(file_get_contents('https://hiicash.oss-ap-northeast-1.aliyuncs.com/gateway.txt') . 'pay/order/create');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeaders);
$response = curl_exec($ch);
curl_close($ch);
if (!$response) {
abort(400, '支付失败,请稍后再试');
}
$res = json_decode($response, true);
if (!is_array($res) || !isset($res['data'])) {
abort(400, '支付失败,请稍后再试');
}
if (!is_array($res['data']) || !isset($res['data']['payData'])) {
abort(400, '支付失败,请稍后再试');
}
return [
'type' => 1, // 0:qrcode 1:url
'data' => $res['data']['payData']
];
}
public function notify($params)
{
if (!isset($params['mchOrderNo']) || !isset($params['mchOrderNo'])) {
return false;
}
return [
'trade_no' => $params['mchOrderNo'],
'callback_no' => $params['payOrderId'],
'custom_result' => '{"returnCode": "success","returnMsg": ""}'
];
}
// 使用 HMAC-SHA512 算法生成签名
function generate_signature(string $payload, string $secret_key)
{
$hash = hash_hmac("sha512", $payload, $secret_key, true);
// 将签名转换为大写字符串
return strtoupper(bin2hex($hash));
}
}