修复acg-faka用epusdt收款验签失败的错误
问题描述
acg-faka用epusdt收款会验签失败,有人已经给官方提交issue,官方暂时没有回应,我自己修复了一下,修复后可以正常收款了。并且我已经给官方提交了PR。
修复方法
修改文件app/Controller/User/Api/Order.php
和app/Controller/User/Api/RechargeNotification.php
,在public function callback(): string
方法中,添加以下代码:
if (empty($data) && isset($_SERVER['CONTENT_TYPE']) && $_SERVER['CONTENT_TYPE'] == 'application/json') {
$json_string = file_get_contents('php://input');
$data = json_decode($json_string, true);
}
修改后callback
方法完整代码如下:
public function callback(): string
{
$handle = $_GET['_PARAMETER'][0];
$data = $_POST;
if (empty($data)) {
$data = $_REQUEST;
unset($data['s']);
}
if (empty($data) && isset($_SERVER['CONTENT_TYPE']) && $_SERVER['CONTENT_TYPE'] == 'application/json') {
$json_string = file_get_contents('php://input');
$data = json_decode($json_string, true);
}
return $this->order->callback($handle, $data);
}
还需要修改acg-faka的epusdt插件:
路径:app/Pay/Epusdt/Impl/Signature.php
public static function generateSignature(array $data, string $key): string
{
ksort($data);
reset($data);
$sign = '';
foreach ($data as $k => $v) {
if ($v == '') continue;
$sign .= $k . '=' . $v . '&';
}
$sign = trim($sign, '&');
return md5($sign . $key);
}
我的修改已经提交到github,可以直接下载使用。