/**
 * 支付成功的后置业务逻辑
 */
function pay_success_logic($users_id = 0, $order_code = '', $pay_details = [], $paycode = 'alipay', $notify = true)
{
    $pay_method_arr = config('global.pay_method_arr');

    $where = [
        'order_code' => $order_code,
    ];
    !empty($users_id) && $where['users_id'] = intval($users_id);
    $orderData = \think\Db::name('shop_order')->where($where)->find();

    if (empty($orderData)) {
        return [
            'code'  => 0,
            'msg'   => '该订单不存在!',
        ];
    }
    else if (0 == $orderData['order_status']) {
        $saveData = [
            'order_status' => 1,
            'pay_details'  => serialize($pay_details),
            'pay_time'     => getTime(),
            'update_time'  => getTime(),
        ];
        if ('wechat' != $paycode) {
            $saveData['pay_name'] = $paycode;
            $saveData['wechat_pay_type'] = ''; // 清空微信标志
        }
        $where = [
            'order_id' => $orderData['order_id'],
            'users_id' => $orderData['users_id'],
        ];
        $ret = \think\Db::name('shop_order')->where($where)->update($saveData);
        if (false !== $ret) {
            //埋码
            diy_api_code_push($orderData);
            echo '<script>';
            echo '_baq.track("active_pay", { assets_id: "1774573811565571", product_name: "鲜花"})';
            echo '</script>';
            // 更新订单变量,保存最新数据
            $orderData = array_merge($orderData, $saveData);

            if (!empty($paycode) && isset($pay_method_arr[$paycode])){
                $orderData['pay_method'] = $pay_method_arr[$paycode];
                $actionNote = "使用{$pay_method_arr[$paycode]}完成支付";
            } else {
                $orderData['pay_method'] = '';
                $actionNote = "完成支付";
            }
            // 添加订单操作记录
            AddOrderAction($orderData['order_id'], $orderData['users_id'], 0, 1, 0, 1, "支付成功", $actionNote);

            // 发送站内信给后台
            SendNotifyMessage($orderData, 5, 1, 0);

            // 虚拟自动发货
            $PayModel = new \app\user\model\Pay;
            $autoSendGoods = $PayModel->afterVirtualProductPay($orderData);

            $data = [];
            if (false === $autoSendGoods && true === $notify) {
                $users = \think\Db::name('users')->field('*')->find($orderData['users_id']);
                // 邮箱发送
                $data['email'] = GetEamilSendData(tpCache('smtp'), $users, $orderData, 1, $paycode);
                // 手机发送
                $data['mobile'] = GetMobileSendData(tpCache('sms'), $users, $orderData, 1, $paycode);
            }

            if ('balance' == $paycode) {
                $users = empty($users) ? \think\Db::name('users')->field('*')->find($orderData['users_id']) : $users;
                UsersMoneyRecording($order_code, $users, $orderData['order_amount'], '商品购买', 3);
            }

            // 订单操作完成,返回跳转
            $url = url('user/Shop/shop_centre');
            if (true === $autoSendGoods) {
                $msg = '支付订单完成!';
            } else {
                $msg = '支付成功,处理订单完成!';
            }
            return [
                'code'  => 1,
                'msg'   => $msg,
                'url'   => $url,
                'data'  => $data,
            ];
        }
        else {
            return [
                'code'  => 0,
                'msg'   => '支付成功,处理订单失败!',
            ];
        }
    }
    else if (1 <= $orderData['order_status'] && $orderData['order_status'] <= 3) {
        return [
            'code'  => 1,
            'msg'   => '已支付',
        ];
    }
    else if (4 == $orderData['order_status']) {
        return [
            'code'  => 0,
            'msg'   => '该订单已过期!',
        ];
    }
    else {
        return [
            'code'  => 0,
            'msg'   => '该订单不存在或已关闭!',
        ];
    }
}

/**
 * 添加JS代码
 */
function add_js_code($code)
{
    echo '<script>';
    echo $code;
    echo '</script>';
}
``

原文地址: https://www.cveoy.top/t/topic/iL9C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录