站点图标 度崩网-几度崩溃

WordPress主题RiPro 优化(第二期:码支付)

WordPress主题RiPro 优化(第二期:码支付
本期内容:修复解密版 码支付 回调问题(支持4.6及以下版本)
修复思路及处理过程
经过对除码支付外的其他支付模块研究发现,支付回调代码一致,皆为如图所示代码
那么问题也来了,本人将码支付回调模块中的“send_order_trade_success($out_trade_no,$trade_no);”替换为上图所示代码,支付测试,码支付后台提示通知成功,但网站无回调
通过对返回参数的深入剖悉发现,支付成功后需要先验证数据库是否存在商户本地单号“$out_trade_no”,因此修改“send_order_trade_success($out_trade_no,$trade_no);”为如下格式
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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 中添加如下声明
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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);
        }
    }
}
就此,码支付回调问题完美解决
若有其他不足之处或建议,欢迎指出,若觉得有用,请大家给点评分,不甚感激
转载自吾爱破解