error(__('User center already closed')); } } //二合一支付 public function pay() { $user_token = input('user_token', '', 'trim'); if (!$user_token) { $this->error('参数缺失'); } //生成支付订单记录 $rechar_order['user_id'] = $this->auth->id; $rechar_order['order_no'] = date('YmdHis', time()) . $this->auth->id . rand(10000000, 99999999); //微信订单编号 $rechar_order['money'] = 49; $rechar_order['purpose'] = 3; //充值用途:1=支付订单,2=充值,3=开通会员 $rechar_order['pay_type'] = 'zhuowang'; $rechar_order['relation_id'] = 1; $rechar_order['createtime'] = time(); //开始事务 $result = Db::name('rechar_order')->insertGetId($rechar_order); if (!$result) { $this->error('网络延迟,请稍后再试'); } $url = 'http://183.207.215.112:8090/HDC/3.0/hop/svc/pay/toPay.ajax'; $data = [ 'transId' => $rechar_order['order_no'], 'orderNo' => $rechar_order['order_no'], 'userToken' => $user_token, 'notifyUrl' => config('img_url') . '/api/pay/notify', 'backUrl' => config('back_url'), 'deskCode' => config('desk_code'), 'products' => [ [ 'productCode' => config('product_code'), 'productPrice' => '29', 'productUnit' => '连续包月', 'productCount' => 1 ], [ 'productCode' => config('product_code'), 'productPrice' => '199', 'productUnit' => '特惠包一年', 'productCount' => 1 ], [ 'productCode' => config('product_code'), 'productPrice' => '269', 'productUnit' => '特惠包两年', 'productCount' => 1 ], ] ]; $data = json_encode($data, 320); $header = [ 'Host:112.4.10.122:8090', 'HDC-Service:2', 'HDC-APPID:00001', 'HDC-Token:8e2b129d2cd3ebf40ca5a1c6048b083ce92e5fd3f305fd6c11a3ef3e35b5fa08', 'Content-Type:application/json' ]; $rs = httpRequest($url, 'POST', $data, $header); if (!$rs) { $this->error('您的网络开小差了~'); } $rs = json_decode($rs, true); if ($rs['resultCode'] != 0) { $this->error('您的网络开小差了~'); } $this->success('链接', $rs['data']); } //支付回调 public function notify() { $data = file_get_contents('php://input'); if (!$data) { $this->error('参数缺失'); } $data = json_decode($data, true); if (!$data) { $this->error('参数缺失'); } if ($data['orderstate'] != 0) { echo json_encode([ 'transid' => $data['transid'], 'orderid' => $data['orderid'], 'statuscode' => -1, 'statusdesc' => '订单状态失败' ], 320); die; } $order_no = $data['orderid']; $where['order_no'] = $order_no; $order_info = Db::name('rechar_order')->where($where)->find(); if (!$order_info) { echo json_encode([ 'transid' => $data['transid'], 'orderid' => $data['orderid'], 'statuscode' => -1, 'statusdesc' => '业务订单不存在' ], 320); die; } if ($order_info['status'] == 1) { //已回调成功 echo json_encode([ 'transid' => $data['transid'], 'orderid' => $data['orderid'], 'statuscode' => 0, 'statusdesc' => '' ], 320); die; } //构建支付订单处理结果信息 $_data['status'] = 1; $_data['updatetime'] = time(); if ($order_info['purpose'] == 3) { //开通会员 Db::startTrans(); //充值 $rs = Db::name('user')->where(['id' => $order_info['user_id']])->setField('is_vip', 1); if ($rs === false) { Db::rollback(); $_data['pay_status'] = 3; //回调状态:1=支付订单回调失败,2=充值回调失败,3=开通会员回调失败 } else { Db::commit(); } } //修改订单信息 Db::name('rechar_order')->where($where)->setField($_data); echo json_encode([ 'transid' => $data['transid'], 'orderid' => $data['orderid'], 'statuscode' => 0, 'statusdesc' => '' ], 320); } }