1. 找主题吧首页
  2. 教程
  3. 建站教程
  4. WordPress教程

ripro主题修复解决码支付不回调问题

注意:码支付回调问题修复主要本次修复针对4.6及以下版本的解密版。

修复思路及处理过程:

经过对除码支付外的其他支付模块研究发现,支付回调代码一致,皆为如图所示代码:

ripro主题修复解决码支付不回调问题

那么问题也来了,本人将码支付回调模块中的“send_order_trade_success($out_trade_no,$trade_no);”替换为上图所示代码,支付测试,码支付后台提示通知成功,但网站无回调
通过对返回参数的深入剖悉发现,支付成功后需要先验证数据库是否存在商户本地单号“$out_trade_no”,因此修改“send_order_trade_success($out_trade_no,$trade_no);”为如下格式:

global $wpdb;
global $order_table_name;
$data = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . $order_table_name . " WHERE order_trade_no = %s AND status = 0 ", $out_trade_no));
if($data){
        // 验证通过 获取基本信息
   $ShopOrder = new ShopOrder();
   $order     = $ShopOrder->get($out_trade_no);
        // 是否有效订单 && 订单类型为充值
    if ($order && $order->order_type == 'charge') {
        // 实例化用户信息
        $CaoUser = new CaoUser($order->user_id);
        // 计算充值数量
        $charge_rate  = (int) _cao('site_change_rate'); //充值比例
        $old_money    = $CaoUser->get_balance(); //用户原来余额
        $charge_money = sprintf('%0.2f', $order->order_price * $charge_rate); // 实际充值数量
 
        //更新用户余额信息
        if ($CaoUser->update_balance($charge_money)) {
            // 写入记录
            $Caolog    = new Caolog();
            $new_money = $old_money + $charge_money; //充值后金额
            $note      = '支付宝-在线充值 [¥' . $order->order_price . '] +' . $charge_money;
            $Caolog->addlog($order->user_id, $old_money, $charge_money, $new_money, 'charge', $note);
            //更新订单状态
            $ShopOrder->update($out_trade_no, $trade_no);
            //发放佣金 查找推荐人
            add_to_user_bonus($order->user_id,$charge_money);
            //发送邮件
            $obj_user = get_user_by('ID', $order->user_id);
            _sendMail($obj_user->user_email, '支付成功', $note);
        }
    }
}
OK,问题解决,支付回调成功!!!但是发现这样看起来让人难以接收,而在类“ShopOrder”中我们可以使用“$ShopOrder->get($out_trade_no);” 取得本地单号,这样一来反而是多此一举,后经过多次测试,得出如下结果:
1.保持“send_order_trade_success($out_trade_no,$trade_no);”不变,对其进行申明即可
2.在functions.php 中添加如下声明
[rihide]

function send_order_trade_success($out_trade_no,$trade_no){
         
        $ShopOrder = new ShopOrder();
        $order     = $ShopOrder->get($out_trade_no);
    // 是否有效订单 && 订单类型为充值
    if ($order && $order->order_type == 'charge') {
        // 实例化用户信息
        $CaoUser = new CaoUser($order->user_id);
        // 计算充值数量
        $charge_rate  = (int) _cao('site_change_rate'); //充值比例
        $old_money    = $CaoUser->get_balance(); //用户原来余额
        $charge_money = sprintf('%0.2f', $order->order_price * $charge_rate); // 实际充值数量
 
        //更新用户余额信息
        if ($CaoUser->update_balance($charge_money)) {
            // 写入记录
            $Caolog    = new Caolog();
            $new_money = $old_money + $charge_money; //充值后金额
            $note      = '在线充值'. $charge_money.' 积分成功,收益[¥' . $order->order_price . ']';
            $Caolog->addlog($order->user_id, $old_money, $charge_money, $new_money, 'charge', $note);
            //更新订单状态
            $ShopOrder->update($out_trade_no, $trade_no);
            //发放佣金 查找推荐人
            add_to_user_bonus($order->user_id,$charge_money);
            //发送邮件
            $obj_user = get_user_by('ID', $order->user_id);
            _sendMail($obj_user->user_email, '支付成功', $note);
        }
    }
}

[/rihide]

就此,码支付回调问题完美解决

原创文章,作者:主题哥,如若转载,请注明出处:http://www.lovecger.com/ripro-mazhifu-huidiao-jiejue.html

发表评论

登录后才能评论

评论列表(1条)

联系我们

联系我们

在线咨询:点击这里给我发消息

邮件:themege@163.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部