共需要修改三个文件,教程很详细,需要增加什么通道自行拓展即可
/inc/options/admin-options.php后台菜单开关
/zibpay/functions/zibpay-ajax.php支付处理增加通道
/zibpay/functions/zibpay-func.php前端增加支付方式
废话不多说,上教程。
1/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'),
),
),
array(
'id' => 'pay_USDT_sdk_options',
'default' => 'null',
'title' => 'USDT收款接口',
'class' => 'compact',
'type' => "select",
'options' => array(
'epay' => __('易支付-USDT', 'zib_language'),
'null' => __('关闭USDT收款', 'zib_language'),
),
),
array(
'id' => 'pay_paypal_sdk_s',
'type' => 'switcher',
'class' => 'compact',
'title' => 'PayPal支付(贝宝)' . $new_badge['7.4'],
'label' => '启用后请在下方配置参数',
'default' => false,
),
array(
'id' => 'pay_sdk_custom_title_s',
'type' => 'switcher',
'title' => '自定义收款标题' . $new_badge['8.1'],
'label' => '默认为付款类型加网站名,如需自定义请开启',
'default' => false,
),
array(
'dependency' => array('pay_sdk_custom_title_s', '!=', ''),
'title' => ' ',
'subtitle' => '自定义收款标题',
'desc' => '可使用变量:订单类型<code>%order_type%</code>例如:%order_type%-子比主题<br>注意:请控制总长度,太长会导致部分接口报错',
'class' => 'compact',
'id' => 'pay_sdk_custom_title',
'default' => '',
'type' => 'text',
),
array(
'title' => '收款接口显示顺序',
'subtitle' => '显示顺序依赖于对应开启的接口,并非全部显示',
'id' => 'pay_sdk_order',
'class' => 'sortable-only', //仅仅
'type' => 'sortable',
'sanitize' => false,
'default' => pz('payalipay_sdk_order', array('wechat' => '1', 'alipay' => '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',
),
至此 admin-options.php 文件的修改就结束了,需要增加其他的通道按照相同的格式增加代码即可
2打开 zibpay-ajax.php 文件搜索 准备付款接口 增加USDT通道的接口
[评论可见]隐藏内容 - 管理员可见
/**准备付款接口 */$pay_sdk = '';
switch ($order_data['payment_method']) {
case 'balance':
case 'card_pass':
case 'paypal':
$pay_sdk = $order_data['payment_method'];
break;
case 'USDT':
$pay_sdk = pz('payUSDT_sdk_options');
break;
case 'wechat':
$pay_sdk = pz('paywechat_sdk_options');
break;
case 'alipay':
$pay_sdk = pz('payalipay_sdk_options');
break;
}
//支付接口挂钩
$pay_sdk = apply_filters('zibpay_initiate_paysdk', $pay_sdk, $order_data);
if (!$pay_sdk || 'null' == $pay_sdk) {
return array('error' => 1, 'msg' => '当前订单不支持此方式支付,请联系客服');
}
//支付结果挂钩
$payresult = apply_filters('zibpay_initiate_' . $pay_sdk, $order_data);
$payresult = array_merge($order_data, $payresult);
return $payresult;
}
//PayPal发起支付
function zibpay_zibpay_initiate_paypal($order_data)
{
//获取参数
$config = zibpay_get_payconfig('paypal');
if (empty($config['username']) || empty($config['password']) || empty($config['signature'])) {
return array('error' => 1, 'msg' => 'PayPal接口缺少配置参数');
}
require_once get_theme_file_path('/zibpay/sdk/paypal/paypal.php');
require_once get_theme_file_path('/zibpay/sdk/paypal/httprequest.php');
$total = bcmul($order_data['order_price'], $config['rates'], 2);
$return_url = !empty($order_data['return_url']) ? $order_data['return_url'] : home_url();
$config['cancel'] = add_query_arg(['return_url' => urlencode($return_url), 'cancel' => 'cancel'], ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/paypal/return.php');
$config['return'] = add_query_arg(['return_url' => urlencode($return_url), 'order_num' => $order_data['order_num']], ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/paypal/return.php');
$PayPal = new \PayPal($config);
$result = $PayPal->doExpressCheckout($total, $order_data['order_name'], $order_data['order_num'], $config['currency']);
if (!is_string($result)) {
return array('error' => 1, 'result' => $result, 'msg' => isset($result['L_LONGMESSAGE0']) ? 'PayPal接口错误:' . $result['L_LONGMESSAGE0'] : __('PayPal配置错误,或网络连接失败', 'zibll'));
}
return array('open_url' => true, 'url' => $result);
}
//V免签发起支付
function zibpay_zibpay_initiate_vmqphp($order_data)
{
//获取参数
$config = zibpay_get_payconfig('vmqphp');
if (empty($config['apiurl']) || empty($config['key'])) {
return array('error' => 1, 'msg' => 'V免签接口缺少配置参数');
}
require_once get_theme_file_path('/zibpay/sdk/vmq/vmq.class.php');
//建立请求
$PaySubmit = new vmqphpPay($config);
$payment_method = 'alipay' == $order_data['payment_method'] ? 2 : 1;
$return_url = !empty($order_data['return_url']) ? $order_data['return_url'] : home_url();
$param = $order_data['payment_method'] . '|' . $return_url;
$parameter = array(
"payId" => $order_data['order_num'], //本地订单号
"type" => $payment_method,
"price" => $order_data['order_price'],
'notifyUrl' => ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/vmq/notify.php',
'returnUrl' => ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/vmq/return.php',
"param" => $param,
"isHtml" => 0,
);
if (empty($config['no_open'])) {
$parameter['isHtml'] = 1;
$url = $PaySubmit->buildURL($parameter);
return array('url' => $url, 'open_url' => true);
}
$get_json = $PaySubmit->get($parameter);
if (isset($get_json['code']) && 1 == $get_json['code'] && !empty($get_json['data']['payUrl'])) {
$result['url_qrcode'] = zib_get_qrcode_base64($get_json['data']['payUrl']);
$reallyPrice = !empty($get_json['data']['reallyPrice']) ? round($get_json['data']['reallyPrice'], 2) : $order_data['order_price'];
$result['order_price'] = $reallyPrice;
$result['more_html'] = '<div class="badg btn-block c-yellow em09 padding-h10">请扫码后支付' . $reallyPrice . '元,为了确保支付成功,请注意付款金额请勿出错</div>';
return $result;
}
$msg = !empty($get_json['msg']) ? $get_json['msg'] : '接口请求错误';
return array('error' => 1, 'msg' => $msg);
}
//易支付发起支付
function zibpay_initiate_epay($order_data)
{
//获取参数
$config = zibpay_get_payconfig('epay');
if (empty($config['apiurl']) || empty($config['partner']) || empty($config['key'])) {
return array('error' => 1, 'msg' => '易支付缺少配置参数');
}
require_once get_theme_file_path('/zibpay/sdk/epay/epay.class.php');
switch ($order_data['payment_method']) {
case 'alipay':
$payment_method = 'alipay';
break;
case 'wechat':
$payment_method = 'wxpay';
break;
case 'USDT':
$payment_method = 'EVM_Polygon_USDT_ERC20';
break;
}
3修改 zibpay-func.php 增加前端支付时的选项,也就是类别 搜索 //支付方式 增加以下代码:
[付费阅读]隐藏内容 - 管理员可见
//支付方式function zibpay_get_payment_methods($pay_type = 0)
{
$payment_method_args = zibpay_get_payment_method_args();
$methods = array();
$pay_wechat_sdk = pz('paywechat_sdk_options');
$pay_alipay_sdk = pz('payalipay_sdk_options');
$pay_USDT_sdk = pz('payUSDT_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('paysdk_order', array('wechat' => '1', 'alipay' => '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);
}
//支付方式参数数组
function zibpay_get_payment_method_args()
{
$payment_method_names = array(
'wechat' => array(
'name' => '微信',
'img' => '<img src="' . ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/assets/img/pay-wechat-logo.svg" alt="wechat-logo">',
),
'alipay' => array(
'name' => '支付宝',
'img' => '<img src="' . ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/assets/img/pay-alipay-logo.svg" alt="alipay-logo">',
),
'balance' => array(
'name' => '余额',
'img' => '<img src="' . ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/assets/img/pay-balance-logo.svg" alt="balance-logo">',
),
'USDT' => array(
'name' => 'USDT-Polygon',
'img' => '<img src="https://pay.000000.de/assets/icon/USDT_TRC20.ico" alt="USDT-logo">',
),
至此,你的网站就已经成功增加了易支付USDT通道,可正常进行调用以及回调,如不回调,请检查你的易支付程序回调功能是否正常
评论区