['app', 'mini']], [['pay_type'], 'in', 'range' => [1, 2, 3, 4, 5]], // 'WECHAT_PAY', 'HUODAO_PAY', 'BALANCE_PAY' 'ALIPAY', [['_from'], 'string'], ['is_combine', 'default', 'value' => 0], [[ 'order_id', 'is_combine'], 'integer'], ]; } public function search() { if (!$this->validate()) { return [ 'code' => 1, 'msg' => $this->getErrorSummary(false)[0], ]; } $t = \Yii::$app->db->beginTransaction(); $this->order = BusinessMemberOrder::findOne([ 'id' => $this->order_id, ]); if (!$this->order) { $t->rollBack(); return [ 'code' => 1, 'msg' => '订单不存在', ]; } if ($this->order->is_delete == 1 || $this->order->is_pay == 1) { $t->rollBack(); return [ 'code' => 1, 'msg' => '订单已取消或已支付', ]; } $goods_names = '购买会员卡'; $is_app = false; if ($this->_from === "app") { $is_app = true; } // 余额抵扣支付 $balance_price = 0; if ($this->pay_type == 1 || $this->pay_type == 4) { if ($this->pay_type == 1) { $result = WechatBusinessPay::orderUnify($this->order, OrderNo::ORDER_ALLIANCE_MEMBER, $goods_names, 0, $is_app, $balance_price); } else { $user = ($this->user ?: get_saas_user()); $result = AlipayUnion::mini($this->order, $goods_names, $user, '', '', 0, $balance_price); } \Yii::error(json_encode($result)); if (isset($result['code']) && $result['code'] == 1) { $t->rollBack(); return $result; } $t->commit(); return [ 'code' => 0, 'msg' => 'success', 'data' => ($result['data']['trade_no'] ?: (object)$result['data']), 'res' => $result['res'], 'body' => $goods_names ]; // if ($this->pay_type == 4) { // if (is_profit_pay('ali')) { // $result = AlipayProfit::mini($this->order, $goods_names, $this->user, '', '', false, 0, $balance_price); // } else { // $result = Alipay::mini($this->order, $goods_names, $this->user, '', '', 0, $balance_price); // } // if (isset($result['code']) && $result['code'] == 1) { // return $result; // } // $t->commit(); // return [ // 'code' => 0, // 'msg' => 'success', // 'data' => $result['data']['trade_no'], // 'body' => $goods_names // ]; // } } $t->commit(); return [ 'code' => 0, 'msg' => '下单成功', 'data' => '' ]; } public function falsePay($goods_names, $pay_price, $code){ if (is_wechat_platform()) { $wechat_mini = WechatBusinessPay::BussinessWechatMini(); $mini_res = $wechat_mini->auth->session($code); if(!isset($mini_res['openid'])){ return [ 'code' => 1, 'msg' => '获取微信息失败', 'res' => $mini_res, ]; } $open_id = $mini_res['openid']; $config = [ 'body' => $goods_names, 'out_trade_no' => rand(100,10000), 'total_fee' => $pay_price * 100, 'notify_url' => 'https://www.chidian.com/index.php', 'openid' => $open_id, ]; $config['trade_type'] = 'JSAPI'; $wechatPay = WechatBusinessPay::BussinessWechatPay(); $res = $wechatPay->order->unify($config); if ($res['return_code'] != 'SUCCESS') { return [ 'code' => 1, 'msg' => '支付失败,' . (isset($res['return_msg']) ? $res['return_msg'] : ''), 'res' => $res, ]; } $pay_data = $wechatPay->jssdk->bridgeConfig($res['prepay_id'], false); return [ 'code' => 0, 'msg' => 'success', 'res' => $res, 'data' => $pay_data ]; } else { $keys = [ 'alipay_platform' ]; $data = Option::get($keys, 0, 'saas'); if(isset($data[0]['value'])) { $alipay_config = json_decode($data[0]['value'],true); }else{ return false; } $config = [ 'alipay' => [ 'client_id' => $alipay_config['app_id'], 'rsa_private_key' => $alipay_config['app_private_key'], ] ]; //获取支付宝用户信息 $socialite = new SocialiteManager($config); $res_code = $socialite->create('alipay')->tokenFromCode($code); $open_user_id = $res_code['user_id']; if (!$open_user_id) { return [ 'code' => 0, 'msg' => '参数获取错误' ]; } $order = (object)[ 'order_no' => date('YmdHis'), 'pay_price' => $pay_price ]; $result = AlipayUnion::scan($order, '当面付', '', $open_user_id); $data = [ 'trade_no' => $result['data']['trade_no'], 'order_no' => $order->order_no ]; return [ 'code' => 0, 'msg' => "成功", 'data' => $data ]; } } }