middleware('auth.api'); // $this->user = \Auth::guard('api')->user(); // $this->uid = \Auth::guard('api')->id(); $this->user = User::find(824); $this->uid = 824; } /** * 用户vip开通状态及信息接口,小程序访问开通vip页面时请求该接口。 * @param * @return array */ public function index() { $vipPay = VipPament::where(['user_id' => $this->uid, 'state' => 'SUCCESS'])->first(); $isVipUser = $vipPay ? true : false; $vipOrder = Order::where(['user_id' => $this->uid, 'item_type' => 'VIP_GIFT'])->whereRaw('substring(cast(status as char),1,1) = 1')->first(); $canCreateOrder = !$vipOrder && $isVipUser ? true : false; return [ 'data' => [ 'isVipUser' => $isVipUser,//是否是vip 'vipOrder' => [ 'canCreateOrder' => $canCreateOrder,//是否可以创建订单 'order_id' => $vipOrder->id ?? '', ], ], 'status' => 'SUCCESS', 'status_code' => 200, ]; } /** * 开通vip微信支付,小程序开通vip,去付款时请求该接口。 * @param \Illuminate\Http\Request $request * @return array */ public function wechat(Request $request) { $vipOrder = $this->getpayOrder('WECHAT'); $openid = $request->openid; $app = app('wechat.payment.mini'); $result = $app->order->unify([ 'body' => '开通会员', 'out_trade_no' => $vipOrder->trade_no, 'total_fee' => 99 * 100, 'notify_url' => route('callback.vip'), 'trade_type' => 'JSAPI', 'openid' => $openid, ]); if ($result['return_code'] == 'SUCCESS' && isset($result['prepay_id'])) { $json = $app->jssdk->bridgeConfig($result['prepay_id']); return $this->success($json); } else { return $this->failed($result['return_msg']); } } private function getpayOrder($type) { $vipOrder = VipPament::where(['user_id' => $this->uid, 'state' => 'INIT'])->first(); if (!$vipOrder) { $vipOrder = VipPament::create([ 'user_id' => $this->uid, 'seller_id' => 1, 'goods_id' => 1, 'type' => $type, 'amount' => 99.00, ]); } return $vipOrder; } }