一、生成二维码给用户进行扫码支付

1、先在vendor目录下加入支付宝和微信支付的引用

2、付款处调用

/**
     * 订单支付接口
     *
     * @api {post} {:url('order/pay')} 前台订单支付二维码接口
     * @apiName pay
     * @apiGroup Order
     * @apiParam {String} type 支付类型 alipay,wxpay
     * @apiParam {String} sn 订单号
     * @apiSuccess (200) {String} /uploads/tmp/testbfb0f121f0114a8238a8888ed116af50.png 支付二维码地址
     *
     */
    public function pay()
    {
        $type     = input('type', 'alipay', 'trim');
        $order_sn = input('sn', '', 'trim');

        if (!$order_sn) {
            return json(['msg' => '订单号错误'], 400);
        }

        $pay   = new Pay();
        $order = db('orders')->where(['order_sn' => $order_sn, 'pay_status' => 0])->find();
        if (!$order) {
            return json(['msg' => '订单没有找到'], 400);
        }
        if ($order['pay_status'] == 1) {
            return json(['msg' => '订单已经支付, 请勿重复支付!'], 400);
        }

        try {
            switch ($type) {
                case 'alipay':
                    $data = [
                        'out_trade_no'    => $order['order_sn'],
                        'subject'         => $order['cust_name'] . "扫码支付",
                        'total_amount'    => $order['payment_amount'],
                        'timeout_express' => "30m",
                    ];
                    $pay->ali_pay($data);
//                    echo "uploads/tmp/testbfb0f121f0114a8238a8888ed116af50.png";
                    break;
                case 'wxpay':
                    $data = [
                        'body'         => $order['cust_name'],
                        'total_fee'    => $order['payment_amount'] * 100,
                        'out_trade_no' => $order['order_sn'],
                        'product_id'   => $order['order_sn'],
                        'trade_type'   => 'NATIVE'
                    ];
                    $pay->wx_pay($data);
//                    echo "uploads/tmp/testbfb0f121f0114a8238a8888ed116af50.png";
                    break;
                case 'under_pay'://线下汇款
                    $bool = db('orders')->where('order_sn',$order_sn)->update(['pay_status'=>1]);
                    if($bool){
                        return json(['msg'=>"订单完成"],200);
                    }else{
                        return json(['msg'=>"订单支付异常"],400);
                    }


            }
        } catch (\Exception $e) {
            return json(['msg' => $e->getMessage()], 400);
        }
    }
View Code

相关文章: