error; } public function prePay($args){ $card_id = $args['card_id']; $price_values_id = $args['price_values_id']; $rice_card = RiceCardModel::where("id",$card_id)->where("status",1)->where("is_delete",0)->find(); $buy_num = $args['buy_num']; if(empty($rice_card)){ $this->error = '米卡不存在'; return false; } $price_value = PriceValuesModel::where("id",$price_values_id)->where("card_id",$card_id)->find(); if(empty($price_value)){ $this->error = '请选择对应的面值'; return false; } if($rice_card->stock<$buy_num){ $this->error = '当前库存不足'; return false; } $order['order_no'] = Order::createOrderNoPrefix(''); $order['user_id'] = $args['user_id']; $order['user_mobile'] = $args['user_mobile']; $order['rice_card_id'] = $card_id; $order['rice_card_name'] = $rice_card->name; $order['rice_card_remark'] = $rice_card->describe; $order['rice_card_img'] = $rice_card->image_text; $order['rice_card_price'] = $price_value->price; $order['rice_card_face_value'] = $price_value->face_value; $order['buy_num'] = $buy_num; $total_price = floatval($price_value->price)*intval($buy_num); $order['total_price'] = $total_price; $pay_price = $total_price; $order['pay_price'] = $pay_price; $order['disaccount_price'] = ($price_value->face_value-$price_value->price)*intval($buy_num); $order['pay_status'] = 0; $order['pay_type'] =20; $order['order_status'] =10; $order['create_time'] = Date("Y-m-d H:i:s",time()); $order['rice_card_type'] = $rice_card->type; if($args['total_pay_price']!=$pay_price){ $this->error = '价格有变动,请重新发起支付!'; return false; } $model = new RiceCardOrder; $order_id = $model->createOrderEvent($order); if(!$order_id){ $this->error = '生成订单出错'; return false; } $order['order_id'] = $order_id; $checkOrder = new CheckOrder; $order_type = OrderTypeEnum::RCORDER; $payment = $checkOrder->onPrePayByWechat($order,$order_type); // $payment = null; $res = ['order_id' => $order['order_id'], // 订单id 'pay_type' => 20, // 支付方式 'payment' => $payment // 微信支付参数 ]; return $res; } //重新支付 public function repay($args){ $order_id = $args['order_id']; $riceOrder = RiceCardOrder::where("id",$order_id)->find(); $order['order_id'] = $order_id; $order['order_no'] = $riceOrder->order_no; $order['pay_price'] = $riceOrder->pay_price; $order_type = OrderTypeEnum::RCORDER; if($riceOrder->pay_status!=0||$riceOrder->order_status!=10){ $this->error = '当前订单不能支付'; return false; } $checkOrder = new CheckOrder; $payment = $checkOrder->onPrePayByWechat($order,$order_type); $res = ['order_id' => $order['order_id'], // 订单id 'pay_type' => 20, // 支付方式 'payment' => $payment // 微信支付参数 ]; return $res; } //回调逻辑处理 public function notifyPay($pay_data){ $order_no = $pay_data['out_trade_no']; $model = RiceCardOrder::getPayDetail($order_no); if(empty($model)){ return false; } $user = UserModel::detail($model['user_id']); return $model->transaction(function () use($model,$pay_data,$user) { $model->save([ 'pay_status'=> 1, 'pay_time' => Date("Y-m-d H:i:s",time()), 'order_status' =>30, 'transaction_id'=>$pay_data['transaction_id']??'' ] ); $rice_card = RiceCardModel::where("id", $model['rice_card_id'])->find(); $rice_card->sale_num += $model['buy_num']; // 销量增加 $rice_card->save(); $now = Date("Y-m-d H:i:s",time()); for($i=0;$i<$model['buy_num'];$i++){ $data['user_id'] = $model['user_id']; $data['user_mobile'] = $user['mobile']; $data['coupon_no'] = ''; $data['coupon_code'] = ''; $data['card_id'] = $model['rice_card_id']; $data['card_name'] = $model['rice_card_name']; $data['type'] = $rice_card->type??2; $data['describe'] = $rice_card->describe??''; $data['content'] = $rice_card->content??''; $data['image_id'] = $rice_card->image_id??0; $data['expire_time'] = date("Y-m-d",strtotime("+20 year")); $data['face_value'] = $model['rice_card_face_value']; $data['balance'] = $data['face_value']; $data['dk_cat_ids'] = $rice_card->dk_cat_ids??''; $data['effect_state'] = 1; $data['order_id'] = $model['id']; $data['create_time'] = $now; $urcModel = new UserRiceCardModel; $urcModel->save($data); $user_rice_card_id = $urcModel->id; $goodList = RiceCardGoodsModel::where('card_id',$model['rice_card_id'])->select(); foreach($goodList as $row){ $gdata['user_rice_card_id'] = $user_rice_card_id; $gdata['goods_id'] = $row->goods_id; $gdata['image_id'] = $row->image_id; $gdata['goods_sku_id'] = $row->goods_sku_id; $gdata['goods_sku_no'] = $row->goods_sku_no; $gdata['goods_name'] = $row->goods_name; $gdata['goods_props'] = isset($row->goods_props)?json_encode($row->goods_props):''; $gdata['goods_price'] = $row->goods_price; $gdata['goods_num'] = $row->goods_num; $gdata['total_price'] = $row->total_price; $gdata['is_except'] = $row->is_except; $gdata['create_time'] = $now; $gdata['update_time'] = $now; $ugood = new UserRiceCardGoodsModel; $ugood->save($gdata); } } return true; }); } }