|
|
@@ -206,7 +206,7 @@ class OrdersService extends BaseService
|
|
|
}
|
|
|
|
|
|
$payType = isset($params['payType']) ? $params['payType'] : 0;
|
|
|
- if (!in_array($payType, [1,4])) {
|
|
|
+ if (!in_array($payType, [1,2,4])) {
|
|
|
return message('支付方式暂不支持', false);
|
|
|
}
|
|
|
|
|
|
@@ -224,6 +224,10 @@ class OrdersService extends BaseService
|
|
|
return message('账号已被冻结,请联系客服', false);
|
|
|
}
|
|
|
|
|
|
+ if($payType==2 && !$memberInfo->openid){
|
|
|
+ return message('授权失效,请刷新重试', false);
|
|
|
+ }
|
|
|
+
|
|
|
// 创建订单
|
|
|
|
|
|
$price = 0;
|
|
|
@@ -238,6 +242,13 @@ class OrdersService extends BaseService
|
|
|
return message( "账号{$payTypeName}不足,请先充值", false);
|
|
|
}
|
|
|
|
|
|
+ }else if($payType == 2){
|
|
|
+ $field = 'balance';
|
|
|
+ $payTypeName = '微信支付';
|
|
|
+ $rate = ConfigService::make()->getConfigByCode('recharge_rate');
|
|
|
+ $rate = $rate>0? $rate : 1;
|
|
|
+ $price = moneyFormat($info->price*$rate, 2);
|
|
|
+ $total = moneyFormat($num * $price);
|
|
|
}else if($payType == 4){
|
|
|
$field = 'score';
|
|
|
$payTypeName = '积分';
|
|
|
@@ -272,45 +283,72 @@ class OrdersService extends BaseService
|
|
|
'status' => 2,
|
|
|
];
|
|
|
|
|
|
- if(!$this->model::insertGetId($data)){
|
|
|
+ if(!$oid = $this->model::insertGetId($data)){
|
|
|
\DB::rollBack();
|
|
|
return message( "订单创建失败,请刷新重试", false);
|
|
|
}
|
|
|
|
|
|
- // 扣除账户
|
|
|
- if(!MemberModel::where(['id'=> $userId,'mark'=> 1])->decrement($field, $total)){
|
|
|
- \DB::rollBack();
|
|
|
- return message( "订单支付失败,请刷新重试", false);
|
|
|
- }
|
|
|
+ // 非账户支付
|
|
|
+ if($payType == 2){
|
|
|
+ // 扣除库存
|
|
|
+ if(!GoodsModel::where(['id'=> $id])->decrement('stock', $num)){
|
|
|
+ \DB::rollBack();
|
|
|
+ return message( "库存处理失败,请刷新重试", false);
|
|
|
+ }
|
|
|
|
|
|
- // 明细
|
|
|
- $data = [
|
|
|
- 'user_id'=> $userId,
|
|
|
- 'type'=> 1,
|
|
|
- 'coin_type'=> $payType==4? 3 : $payType,
|
|
|
- 'pay_type'=> 1,
|
|
|
- 'money'=> $total,
|
|
|
- 'change_type'=> 2,
|
|
|
- 'balance'=> $payType==1? $memberInfo->coupon : $memberInfo->score,
|
|
|
- 'create_time'=> time(),
|
|
|
- 'update_time'=> time(),
|
|
|
- 'remark'=> '商品兑换订单支付',
|
|
|
- 'status'=> 1
|
|
|
- ];
|
|
|
+ // 提交订单
|
|
|
+ \DB::commit();
|
|
|
+
|
|
|
+ $order = [
|
|
|
+ 'openid' => $memberInfo->openid,
|
|
|
+ 'orderNo' => $data['order_sn'],
|
|
|
+ 'amount' => $data['total'],
|
|
|
+ 'body' => '商城订单支付',
|
|
|
+ ];
|
|
|
+
|
|
|
+ $jsapiParams = WechatService::jsapiUnifiedorder($order,'shop');
|
|
|
+ $code = isset($jsapiParams['code']) ? $jsapiParams['code'] : '';
|
|
|
+ if ($code == 'error' || empty($jsapiParams)) {
|
|
|
+ $message = isset($jsapiParams['message']) && $jsapiParams['message'] ? $jsapiParams['message'] : '订单支付处理失败';
|
|
|
+ return message($message, false);
|
|
|
+ }
|
|
|
+ return message('商城订单创建成功', true, ['id' => $oid, 'params' => $jsapiParams]);
|
|
|
+ }else{
|
|
|
+ // 扣除账户
|
|
|
+ if(!MemberModel::where(['id'=> $userId,'mark'=> 1])->decrement($field, $total)){
|
|
|
+ \DB::rollBack();
|
|
|
+ return message( "订单支付失败,请刷新重试", false);
|
|
|
+ }
|
|
|
|
|
|
- if(!TradeModel::insertGetId($data)){
|
|
|
- \DB::rollBack();
|
|
|
- return message( "交易处理失败,请刷新重试", false);
|
|
|
- }
|
|
|
+ // 明细
|
|
|
+ $data = [
|
|
|
+ 'user_id'=> $userId,
|
|
|
+ 'type'=> 1,
|
|
|
+ 'coin_type'=> $payType==4? 3 : $payType,
|
|
|
+ 'pay_type'=> 1,
|
|
|
+ 'money'=> $total,
|
|
|
+ 'change_type'=> 2,
|
|
|
+ 'balance'=> $payType==1? $memberInfo->coupon : $memberInfo->score,
|
|
|
+ 'create_time'=> time(),
|
|
|
+ 'update_time'=> time(),
|
|
|
+ 'remark'=> '商品兑换订单支付',
|
|
|
+ 'status'=> 1
|
|
|
+ ];
|
|
|
+
|
|
|
+ if(!TradeModel::insertGetId($data)){
|
|
|
+ \DB::rollBack();
|
|
|
+ return message( "交易处理失败,请刷新重试", false);
|
|
|
+ }
|
|
|
|
|
|
- // 扣除库存
|
|
|
- if(!GoodsModel::where(['id'=> $id])->decrement('stock', $num)){
|
|
|
- \DB::rollBack();
|
|
|
- return message( "库存处理失败,请刷新重试", false);
|
|
|
- }
|
|
|
+ // 扣除库存
|
|
|
+ if(!GoodsModel::where(['id'=> $id])->decrement('stock', $num)){
|
|
|
+ \DB::rollBack();
|
|
|
+ return message( "库存处理失败,请刷新重试", false);
|
|
|
+ }
|
|
|
|
|
|
- \DB::commit();
|
|
|
- return message('兑换订单支付成功', true);
|
|
|
+ \DB::commit();
|
|
|
+ return message('兑换订单支付成功', true);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|