<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;

function Mirai_epay_pay($order, $paymentMethod) {
    $options = Mirai_opt();

    $epayApi = $options->epayApi;
    $epayPid = $options->epayPid;
    $epayVersion = $options->epayVersion;

    if (empty($epayApi) || empty($epayPid)) {
        Mirai_payLog("epay配置缺失 API或PID为空", 'error');
        return ['success' => false, 'message' => '支付配置不完整'];
    }

    if (substr($epayApi, -1) !== '/') {
        $epayApi .= '/';
    }

    $notifyUrl = $options->siteUrl . '?mirai_api=pay_notify&gateway=epay';
    $returnUrl = $options->siteUrl . '?mirai_api=pay_return&gateway=epay';

    $type = 'alipay';
    if ($paymentMethod === 'wechat') {
        $type = 'wxpay';
    } elseif ($paymentMethod === 'qq') {
        $type = 'qqpay';
    }

    $expireTime = Mirai_payOrderExpireSeconds();

    if ($epayVersion == '1') {
        $epayKey = $options->epayKey;
        if (empty($epayKey)) {
            Mirai_payLog("epay MD5配置缺失 请在主题设置中配置商户密钥", 'error');
            return ['success' => false, 'message' => '支付配置不完整，请在主题设置中配置易支付商户密钥'];
        }
        require_once __DIR__ . '/lib/EpayCore.class.php';
        $epay = new \Mirai\Payment\Epay\V1\EpayCore(['pid' => $epayPid, 'key' => $epayKey, 'apiurl' => $epayApi]);
        $param = [
            'pid' => $epayPid,
            'type' => $type,
            'out_trade_no' => $order['order_no'],
            'name' => $order['product_title'],
            'money' => $order['amount'],
            'notify_url' => $notifyUrl,
            'return_url' => $returnUrl,
            'clientip' => Mirai_getClientIp()
        ];
    } else {
        $epayPlatformPublicKey = $options->epayPlatformPublicKey;
        $epayMerchantPrivateKey = $options->epayMerchantPrivateKey;
        if (empty($epayPlatformPublicKey) || empty($epayMerchantPrivateKey)) {
            Mirai_payLog("epay RSA配置缺失 请在主题设置中配置公钥和私钥", 'error');
            return ['success' => false, 'message' => '支付配置不完整，请在主题设置中配置易支付RSA密钥'];
        }
        require_once __DIR__ . '/lib/EpayCoreV2.class.php';
        $epayPlatformPublicKey = Mirai_payFormatRsaKey($epayPlatformPublicKey, 'public');
        $epayMerchantPrivateKey = Mirai_payFormatRsaKey($epayMerchantPrivateKey, 'private');
        $epay = new \Mirai\Payment\Epay\V2\EpayCore(['apiurl' => $epayApi, 'pid' => $epayPid, 'platform_public_key' => $epayPlatformPublicKey, 'merchant_private_key' => $epayMerchantPrivateKey]);
        $param = [
            'type' => $type,
            'out_trade_no' => $order['order_no'],
            'name' => $order['product_title'],
            'money' => $order['amount'],
            'notify_url' => $notifyUrl,
            'return_url' => $returnUrl,
            'clientip' => Mirai_getClientIp()
        ];
    }

    // 获取支付跳转URL
    $payLink = $epay->getPayLink($param);
    
    return [
        'success' => true,
        'type' => 'redirect',
        'url' => $payLink,
        'expire' => $expireTime
    ];
}