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