一、生成二维码给用户进行扫码支付
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