fix(epay): 补发 /pay/submit 请求触发插件 submit() 写入 usdtpro 金额
This commit is contained in:
@@ -175,19 +175,33 @@ trait epayPay
|
||||
'uid:' . $user_id
|
||||
);
|
||||
|
||||
if (!is_array($apiResult) || empty($apiResult['url'])) {
|
||||
// mapi.php 返回格式:
|
||||
// {code:0, trade_no, pay_type:'jump', pay_info:'/pay/submit/TRADE_NO/'} 或
|
||||
// {code:0, trade_no, payurl:'/pay/submit/TRADE_NO/'} (default 分支)
|
||||
// {code:1, trade_no, payurl:'...'} (部分旧版)
|
||||
$submitUrl = '';
|
||||
$trade_no = '';
|
||||
if (is_array($apiResult)) {
|
||||
if (!empty($apiResult['trade_no'])) $trade_no = strval($apiResult['trade_no']);
|
||||
if (!empty($apiResult['payurl'])) $submitUrl = $apiResult['payurl'];
|
||||
elseif (!empty($apiResult['pay_info'])) $submitUrl = $apiResult['pay_info'];
|
||||
elseif (!empty($apiResult['url'])) $submitUrl = $apiResult['url'];
|
||||
}
|
||||
|
||||
if (!$submitUrl || !$trade_no) {
|
||||
$errMsg = is_array($apiResult) ? (isset($apiResult['msg']) ? $apiResult['msg'] : json_encode($apiResult, JSON_UNESCAPED_UNICODE)) : 'mapi 无响应';
|
||||
addLogToFile('epay mapi 下单失败:order=' . $pay_orderid . ' err=' . $errMsg, 'epay_error', 'epay');
|
||||
$data = encrypt_data(['status' => 0, 'message' => 'Khởi tạo thanh toán thất bại: ' . $errMsg]);
|
||||
return json(['Success' => 1, 'Data' => $data]);
|
||||
}
|
||||
|
||||
// epay 的 jump url 形如 https://pay.g7g7.top/pay/leader/2026041623400011168/
|
||||
$payUrl = $apiResult['url'];
|
||||
$trade_no = '';
|
||||
if (preg_match('#/pay/leader/(\d+)/?#', $payUrl, $m)) {
|
||||
$trade_no = $m[1];
|
||||
}
|
||||
// 触发 plugin::submit() 把 usdtpro 指纹金额写入 pre_order
|
||||
// mapi 模式 Plugin::loadForSubmit 只调 mapi() 方法,usdtpro 插件没这个方法,
|
||||
// 所以 usdtpro 不会被写入。必须再访问一次 /pay/submit/TRADE_NO/ 让插件 submit() 跑一次
|
||||
$this->epay_trigger_plugin_submit($submitUrl);
|
||||
|
||||
// 跳转到用户看的页面(pay/leader/TRADE_NO/)
|
||||
$payUrl = str_replace('/pay/submit/', '/pay/leader/', $submitUrl);
|
||||
|
||||
// 默认返回结构(若后续读取 usdtpro 失败仍可回退跳转)
|
||||
$qrcode = null;
|
||||
@@ -238,6 +252,30 @@ trait epayPay
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 触发 epay plugin::submit() 写入 usdtpro 指纹金额
|
||||
* 只请求不处理响应(epay 会返回 302 或 HTML,我们只要副作用)
|
||||
*/
|
||||
private function epay_trigger_plugin_submit($submitUrl)
|
||||
{
|
||||
try {
|
||||
$ch = curl_init($submitUrl);
|
||||
curl_setopt_array($ch, [
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_FOLLOWLOCATION => false,
|
||||
CURLOPT_CONNECTTIMEOUT => 3,
|
||||
CURLOPT_TIMEOUT => 6,
|
||||
CURLOPT_SSL_VERIFYPEER => false,
|
||||
CURLOPT_SSL_VERIFYHOST => false,
|
||||
CURLOPT_USERAGENT => 'OG-EpayInternal/1.0',
|
||||
]);
|
||||
curl_exec($ch);
|
||||
curl_close($ch);
|
||||
} catch (\Exception $e) {
|
||||
addLogToFile('epay_trigger_plugin_submit 异常:' . $e->getMessage(), 'epay_error', 'epay');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 易支付 - 订单状态轮询
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user