error; } public function prePay($args){ $card_id = $args['card_id']; log_record('card_id::'.$card_id,'debug'); $card = MemberCardsModel::where("id",$card_id) //->where("audit_status",1) ->where("duration",1)->find(); if(empty($card)){ $this->error = '会员卡信息不存在'; return false; } //$order['order_no'] = Order::createOrderNoPrefix('VIP'); $order['order_no'] = 'VIP'.date('YmdHis').substr(strval(intval(microtime(true)*1000)),-3); $order['user_id'] = $args['user_id']; $order['user_mobile'] = $args['user_mobile']; $order['member_cards_id'] = $card_id; $order['member_cards_sale_price'] = $card->sale_price; $order['member_cards_origin_price'] = $card->origin_price; $order['pay_price'] = $card->sale_price; $order['pay_status'] = 0; $order['pay_type'] = 20; $order['order_status'] =10; $order['create_time'] = Date("Y-m-d H:i:s",time()); $model = new MemberCardOrder; $order_id = $model->createOrderEvent($order); if(!$order_id){ $this->error = '生成订单出错'; return false; } $order['order_id'] = $order_id; $checkOrder = new CheckOrder; $order_type = OrderTypeEnum::MEMBERCARDBUY; $payment = $checkOrder->onPrePayByWechat($order,$order_type); return ['order_id' => $order['order_id'], // 订单id 'pay_type' => 20, // 支付方式 'payment' => $payment // 微信支付参数 ]; } //重新支付 public function repay($args){ $order_id = $args['order_id']; $riceOrder = MemberCardsModel::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::MEMBERCARDBUY; if($riceOrder->pay_status!=0||$riceOrder->order_status!=10){ $this->error = '当前订单不能支付'; return false; } $checkOrder = new CheckOrder; $payment = $checkOrder->onPrePayByWechat($order,$order_type); return ['order_id' => $order['order_id'], // 订单id 'pay_type' => 20, // 支付方式 'payment' => $payment // 微信支付参数 ]; } //回调逻辑处理 public function notifyPay($pay_data){ $order_no = $pay_data['out_trade_no']; $model = MemberCardOrder::getPayDetail($order_no); if(empty($model)){ return false; } $user = UserModel::detail($model['user_id']); return $model->transaction(function () use($model,$pay_data,$user) { $time = time(); $now = Date("Y-m-d H:i:s",$time); //把用户的会员卡有效期延长 $old_time = $user->member_expire_time; if ($old_time <= $time){//第一次购买或已过期 $from_time = $now; $to_timestamp_temp = strtotime('+1 year',$time) - 86400; $to_time = date('Y-m-d 23:59:59',$to_timestamp_temp); $to_timestamp = strtotime($to_time); $user->member_start_time = $time; }else{ $from_time = date('Y-m-d H:i:s',$old_time+1);//00:00:00 $to_timestamp_temp = strtotime('+1 year',$old_time); $to_time = date('Y-m-d 23:59:59',$to_timestamp_temp); $to_timestamp = strtotime($to_time); } /* if ($old_time > 0){ if ($old_time < $time){//过期了重置开始时间 $user->member_start_time = $time; } $from_time = date('Y-m-d H:i:s',$old_time); $to_timestamp_temp = strtotime('+1 year',$old_time) - 86400; $to_time = date('Y-m-d 23:59:59',$to_timestamp_temp); $to_timestamp = strtotime($to_time); }else{//第一次购买 $from_time = $now; $to_timestamp_temp = strtotime('+1 year',$time) - 86400; $to_time = date('Y-m-d 23:59:59',$to_timestamp_temp); $to_timestamp = strtotime($to_time); $user->member_start_time = $time; }*/ $model->save([ 'pay_status'=> 1, 'pay_time' => $now, 'order_status' =>30, 'transaction_id'=>$pay_data['transaction_id']??'', 'from_member_time' => $from_time, 'to_member_time' => $to_time, ] ); //修改用户的会员有效期 $user->member_expire_time = $to_timestamp; $user->save(); return true; }); } }