如果你在对接 USDT 支付时使用了源支付接口,请避免启用 mapi.php
(即非跳转二维码收款方式)。由于源支付未优化 USDT 的 mapi
接口,扫码可能会提示参数错误。此教程专注于对接 USDT 支付通道,其他支付接口可以参考此流程。
步骤详解
1. 在 admin-options.php
中添加 USDT 支付接口:
- 打开子比主题文件:
inc/options/admin-options.php
。
- 打开子比主题文件:
- 找到现有的支付宝接口配置:
array(
'id' => 'pay_alipay_sdk_options',
'default' => 'null',
'title' => '支付宝收款接口',
'class' => 'compact',
'type' => "select",
'options' => array(
'xhpay' => __('迅虎PAY-支付宝', 'zib_language'),
'payjs' => __('PAYJS-支付宝', 'zib_language'),
'xunhupay_alipay' => __('虎皮椒V3-支付宝', 'zib_language'),
'official_alipay' => __('支付宝企业支付/当面付', 'zib_language'),
'codepay_alipay' => __('码支付-支付宝', 'zib_language'),
'epay' => __('易支付-支付宝', 'zib_language'),
'vmqphp' => __('V免签-支付宝', 'zib_language'),
'null' => __('关闭支付宝收款', 'zib_language'),
),
),
2. 添加 USDT 支付选项:
- 在支付宝部分的下方,增加一个 USDT 支付选项,代码如下:
array(
'id' => 'pay_usdt_sdk_options',
'default' => 'null',
'title' => 'USDT收款接口',
'class' => 'compact',
'type' => "select",
'options' => array(
'epay' => __('易支付-USDT', 'zib_language'),
'null' => __('关闭USDT收款', 'zib_language'),
),
),
3. 更新支付接口显示顺序:
- 向下滚动至支付接口显示顺序配置处,添加 USDT 选项以控制其显示顺序:
array(
'title' => '收款接口显示顺序',
'subtitle' => '显示顺序依赖于对应开启的接口,并非全部显示',
'id' => 'pay_sdk_order',
'class' => 'sortable-only',
'type' => 'sortable',
'sanitize' => false,
'default' => _pz('pay_alipay_sdk_order', array('wechat' => '1', 'alipay' => '1', 'usdt' => '1', 'paypal' => '1', 'balance' => '1', 'card_pass' => '1'), 'enabled'),
'fields' => array(
array('title' => '微信', 'id' => 'wechat', 'type' => 'checkbox'),
array('title' => '支付宝', 'id' => 'alipay', 'type' => 'checkbox'),
array('title' => 'USDT', 'id' => 'usdt', 'type' => 'checkbox'),
array('title' => 'PayPal(贝宝)', 'id' => 'paypal', 'type' => 'checkbox'),
array('title' => '余额', 'id' => 'balance', 'type' => 'checkbox'),
array('title' => '卡密', 'id' => 'card_pass', 'type' => 'checkbox'),
),
),
4. 更新支付处理代码:
- 打开
zibpay/functions/zibpay-ajax.php
,找到准备付款接口部分。
- 打开
- 在支付宝的
case
语句下方,添加一个 USDT 的case
:
- 在支付宝的
case 'usdt':
$pay_sdk = _pz('pay_usdt_sdk_options');
break;
- 继续查找 易支付发起支付 代码部分,在支付函数中增加 USDT 通道的处理(具体实现会因配置不同而有所不同)。
5. 更新支付方式排序:
- 在
zibpay-func.php
中找到zibpay_get_payment_methods
函数。
- 在
- 使用以下代码确保支付方式按照设定顺序显示:
//支付方式
function zibpay_get_payment_methods($pay_type = 0)
{
$payment_method_args = zibpay_get_payment_method_args();
$methods = array();
$pay_wechat_sdk = _pz('pay_wechat_sdk_options');
$pay_alipay_sdk = _pz('pay_alipay_sdk_options');
$pay_usdt_sdk = _pz('pay_usdt_sdk_options');
if ($pay_wechat_sdk && 'null' != $pay_wechat_sdk) {
$methods['wechat'] = $payment_method_args['wechat'];
}
if ($pay_alipay_sdk && 'null' != $pay_alipay_sdk) {
$methods['alipay'] = $payment_method_args['alipay'];
}
if ($pay_usdt_sdk && 'null' != $pay_usdt_sdk) {
$methods['usdt'] = $payment_method_args['usdt'];
}
if (_pz('pay_paypal_sdk_s')) {
$methods['paypal'] = $payment_method_args['paypal'];
}
if (zibpay_is_allow_balance_pay($pay_type)) {
$methods['balance'] = $payment_method_args['balance'];
}
if (zibpay_is_allow_card_pass_pay($pay_type)) {
$methods['card_pass'] = $payment_method_args['card_pass'];
}
//排序
$pay_sdk_order = _pz('pay_sdk_order', array('wechat' => '1', 'alipay' => '1', 'usdt' => '1', 'paypal' => '1', 'balance' => '1', 'card_pass' => '1'));
if ($pay_sdk_order && is_array($pay_sdk_order)) {
foreach ($pay_sdk_order as $k => $v) {
if (isset($methods[$k])) {
$new[$k] = $methods[$k];
unset($methods[$k]);
$methods = array_merge($new, $methods);
}
}
}
return apply_filters('zibpay_payment_methods', $methods, $pay_type);
}
6. 为 USDT 支付方式添加图标:
- 找到定义支付图标的数组,为 USDT 添加一个带有合适图片的选项。例如:
'usdt' => array(
'name' => 'USDT',
'img' => '<img src="' . ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/assets/img/pay-usdt-logo.svg" alt="usdt-logo">',
),
到这里,后台就可以配置 USDT 支付通道,前台也会显示 USDT 选项。建议进行测试支付,以确保一切正常运行。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容