<?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; } }