webman/app/Utils/API/Payment.php

98 lines
3.2 KiB
PHP

<?php
namespace App\Utils\API;
use GuzzleHttp\Client;
/**
* 第三方api转账
*/
class Payment
{
public static function generate_encrypt_value($data, $secret_key) {
// 1. 过滤掉 EncryptValue 和值为 null 的参数
$filtered_data = array_filter($data, function($v, $k) {
return $k !== "EncryptValue" && $v !== null;
}, ARRAY_FILTER_USE_BOTH);
// 2. 按照 A~Z 顺序排序 key
ksort($filtered_data);
// 3. 拼接 key=value 形式的字符串,并加上 HashKey=密钥
$param_str = http_build_query($filtered_data) . "&HashKey=$secret_key";
// 4. 转换为小写
$param_str = strtolower($param_str);
// 5. 计算 sha256 哈希
$hash_value = hash('sha256', $param_str);
// 6. 转换为大写返回
return strtoupper($hash_value);
}
/**
* 转账
*/
public static function pushMoney($money,$payeeAccountName,$payeeAccountNumber,$payeeBankName)
{
$client = new Client();
$PaymentChannelId = 0;
if($payeeBankName == "bKash"){
$PaymentChannelId = 34;
}else{
$PaymentChannelId = 35;
}
$secret_key = "sZ2wAfh1lMkxBVrlY4uZY8Fj92E4scFf";
$url = "https://mdf.hr5688.com/api/createPaymentOrder";
$headers = [
"accept" => "application/json",
"content-type" => "application/json"
];
// 请求数据
$payload = [
"Amount" => $money,
"CurrencyId" => 11,
"IsTest" => false,
"PayeeAccountName" => $payeeAccountName,
"PayeeAccountNumber" => $payeeAccountNumber,
"PayeeBankName" => $payeeBankName,
"PayeeIFSCCode" => "abc123",
"PaymentChannelId" => $PaymentChannelId,
"ShopInformUrl" => "http://127.0.0.1/api/withdraw/callback",
"ShopOrderId" => "10",
"ShopRemark" => "", // 留空时可不给此参数
"ShopUserLongId" => "776ae472-d4fc-435c-9639-be5763138d95"
];
$encrypt_value = self::generate_encrypt_value($payload, $secret_key);
$payload["EncryptValue"] = $encrypt_value;
var_dump(111111111111111);
var_dump($payload);
$response = $client->post($url, [
'json' => $payload, // 以 JSON 格式发送数据
'headers' => $headers
]);
var_dump($response);
// $json_payload = json_encode($payload);
// $ch = curl_init();
// curl_setopt($ch, CURLOPT_URL, $url);
// curl_setopt($ch, CURLOPT_POST, true);
// curl_setopt($ch, CURLOPT_POSTFIELDS, $json_payload);
// curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// $response = curl_exec($ch);
// $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// var_dump(1111111111111111111);
// var_dump($response);
// if ($http_code == 200) {
// echo $response;
// } else {
// echo "Error: HTTP Code $http_code\n";
// echo $response;
// }
// curl_close($ch);
return $response;
}
}