///此段教程适用子比主题使用易支付的场景
起因:
因目前使用的易支付平台免跳转扫码 qrcode.php 接口变更为mapi.php 这就导致了到目前为止最新 7.4 所有版本的子比主题无法使用该平台的免跳转扫码功能。
搜遍所有网也没有人发过这个教程!!!PHP 一窍不通!!!这里感谢 CHATGPT 一路指导!!!人类之光!!!
该教程适用的条件有两条
一:你的平台可以用"https://payapi.xxxzf.com/pay/submit/订单号/"这种格式的URL打开收款界面
二:检查你收款平台的开发文档,找到 API 接口支付下面的返回结果有无:订单号 trade_no 的返回变量
如有,接着往下看,一共两步
第 ① 步,在主题文件编辑器找到以下路径
子比主题: <color=Red>zibpay-ajax.php (zibpay/functions/zibpay-ajax.php) 在第 500 行的位置插入以下代码
if (empty($result['qrcode'])) { $code_url = "https://payapi.xxxzf.com/pay/submit/" . $result['trade_no'] . "/"; $result['qrcode'] = $code_url; }
改完记得保存
第二步,在主题文件编辑器找到以下路径
子比主题:epay.class.php (zibpay/sdk/epay/epay.class.php)
function get_real_ip_address(){
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
$_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}
return $_SERVER['REMOTE_ADDR'];
}
修改第 232 行的位置的代码
原代码$this->alipay_qrcode = $this->alipay_config['apiurl'] . 'qrcode.php?';
修改为$this->alipay_qrcode = $this->alipay_config['apiurl'] . 'mapi.php?';
在第 269 行的位置插入以下代码
$client_ip = get_real_ip_address(); $para_filter['clientip'] = $client_ip;
改完记得保存
最后在子比主题设置,商城&付费->收款接口里面,将易支付的 PC 端扫码支付打开,兼容模式不要开,点保存
现在,你可以优雅的使用易支付免跳转扫码收款啦~
完结撒花
第二个问题,使用子比主题里的易支付无法调用支付如何解决?
首先找到子比主题里易支付文件路径如:zibpay 这个文件里的 functions/zibpay-ajax.php
第 775 行代码如下:
//易支付发起支付
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'); $payment_method = 'alipay' == $order_data['payment_method'] ? 'alipay' : 'wxpay';
$parameter = array( "pid" => trim($config['partner']), "type" => $payment_method, 'notify_url' => ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/epay/notify.php',
'return_url' => add_query_arg(['redirect_url' => urlencode($order_data['return_url'])], ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/epay/notify.php'), "out_trade_no" => $order_data['order_num'],
//本地订单号
"name" => $order_data['order_name'], "money" => $order_data['order_price'],
"sitename" => get_bloginfo('name'),
"clientip" => zib_get_remote_ip_addr() ?: '127.0.0.1', );
把这段代码注释掉如:
//易支付发起支付
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'); $payment_method = 'alipay' == $order_data['payment_method'] ? 'alipay' : 'wxpay';
$parameter = array( "pid" => trim($config['partner']), "type" => $payment_method, 'notify_url' => ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/epay/notify.php',
'return_url' => add_query_arg(['redirect_url' => urlencode($order_data['return_url'])], ZIB_TEMPLATE_DIRECTORY_URI . '/zibpay/shop/epay/notify.php'), "out_trade_no" => $order_data['order_num'],
//本地订单号
"name" => $order_data['order_name'], "money" => $order_data['order_price'],
// "sitename" => get_bloginfo('name'),
//"clientip" => zib_get_remote_ip_addr() ?: '127.0.0.1', );