request->isPost) { return $this->error('请求方式错误'); } $post = \Yii::$app->request->post(); //'bank_code', 'card_type', 'card_type_name' 这三个参数由后端处理,前端不提交该参数 $rules = [ [['id_type', 'bank_card_no', 'id_no', 'payer_name', 'mobile_no'], 'required'], ['id_type', 'integer'], ['id_type', 'default', 'value' => 1], ['bank_card_no', 'string', 'max' => 64], [['id_no', 'payer_name', 'bank_name'], 'string', 'max' => 255], [['mobile_no', 'bank_code', 'card_type', 'card_type_name'], 'string', 'max' => 32], ]; $res = \Yii::$app->services->validate->validate($post, $rules); if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage()); $validate_card = UserBankCard::validateCardInfo($post['bank_card_no'],$post['bank_name']); $post = array_merge($post,$validate_card); $model = UserBankCard::findOne(['bank_card_no' => $post['bank_card_no'], 'mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED]); if (empty($model)) { $user_bank_card_data = [ 'user_id' => $this->user_id, 'bank_card_no' => $post['bank_card_no'], 'payer_name' => $post['payer_name'], 'bank_name' => $post['bank_name'], 'bank_code' => $post['bank_code'], 'card_type' => $post['card_type'], 'card_type_name' => $post['card_type_name'], ]; $model = UserBankCard::setData($this->mall_id, $user_bank_card_data); if (false === $model) return $this->error(UserBankCard::getStaticError()); } $post['user_id'] = $this->user_id; $post['card_id'] = $model->id; $resj = JoinPayUserBankcard::setData($this->mall_id, $post); if (false === $resj) return $this->error(JoinPayUserBankcard::getStaticError()); try { //调用汇聚接口:发送签约短信 $settings = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_JOIN_PAY, 'basic'); // dd($settings); $fast_pay_class = new JoinPayFastPay($settings); $fast_pay_class->sendSignSms($model->id); return $this->success('操作成功', ['card_id' => $model->id]); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * @name: * @msg: 去签约接口,会员中心银行卡列表页面 * @param {*} * @return {*} */ public function actionToSign() { if (!\Yii::$app->request->isPost) { return $this->error('请求方式错误'); } $post = \Yii::$app->request->post(); $rules = [ [['card_id', 'id_type', 'id_no', 'mobile_no'], 'required'], [['card_id', 'id_type'], 'integer'], ['id_type', 'default', 'value' => 1], ['id_no', 'string', 'max' => 255], ['mobile_no', 'string', 'max' => 32], ]; $res = \Yii::$app->services->validate->validate($post, $rules); if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage()); $card_info = UserBankCard::find() ->select('user_id,payer_name,bank_name,bank_code,bank_card_no,card_type,card_type_name') ->where(['mall_id' => $this->mall_id, 'id' => $post['card_id'], 'status' => StatusEnum::ENABLED]) ->asArray() ->limit(1) ->one(); if (empty($card_info)) { return $this->error('银行卡不存在'); } $model = JoinPayUserBankCard::setData($this->mall_id, array_merge($post, $card_info)); if (false === $model) return $this->error(JoinPayUserBankCard::getStaticError()); try { // 签约快捷支付 $settings = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_JOIN_PAY, 'basic'); $fast_pay_class = new JoinPayFastPay($settings); $fast_pay_class->sendSignSms($model->card_id); return $this->success('操作成功', ['card_id' => $model->card_id]); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * @name: * @msg: 签约 * @param {*} * @return {*} */ public function actionSignContract() { if (!\Yii::$app->request->isPost) { return $this->error('请求方式错误'); } $post = \Yii::$app->request->post(); $rules = [ [['card_id', 'sms_code'], 'required'], [['card_id'], 'integer'], ['sms_code', 'string'], ]; $res = \Yii::$app->services->validate->validate($post, $rules); if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage()); $card_info = UserBankCard::findOne([ 'mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $post['card_id'], 'user_id' => $this->user_id, ]); if (empty($card_info)) return $this->error('银行卡不存在'); $joinpay_card_info = JoinPayUserBankcard::findOne([ 'mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'card_id' => $post['card_id'], 'user_id' => $this->user_id, ]); if (empty($joinpay_card_info)) { return $this->error('银行卡数据异常'); } if ($joinpay_card_info->is_sign == 1) { return $this->error('银行卡已经签约'); } try { // 签约快捷支付 $settings = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_JOIN_PAY, 'basic'); $fast_pay_class = new JoinPayFastPay($settings); $fast_pay_class->sign($post['card_id'], $post['sms_code']); $card_info = ArrayHelper::toArray($card_info); $card_info['is_sign'] = 1; $card_info['is_auth'] = true; $card_info['icon'] = UserBankCard::getBankPicture($card_info['bank_code'], 'icon'); unset($card_info['cvv'], $card_info['sign_no'], $card_info['payer_name'], $card_info['id_no']); return $this->success('签约成功', ['card_info' => $card_info], ApiStatusEnum::CODE_SUCCESS, 0); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * @name: * @msg: 解除快捷支付签约 * @param {*} * @return {*} */ public function actionContractRelieve() { if (!\Yii::$app->request->isPost) { return $this->error('请求方式错误'); } $post = \Yii::$app->request->post(); $rules = [ [['card_id'], 'required'], [['card_id'], 'integer'], ]; $res = \Yii::$app->services->validate->validate($post, $rules); if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage()); $card_info = UserBankCard::findOne([ 'mall_id' => $this->mall_id, 'id' => $post['card_id'], 'status' => StatusEnum::ENABLED, 'user_id' => $this->user_id, ]); $joinpay_card_info = JoinPayUserBankcard::findOne([ 'mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'card_id' => $post['card_id'], 'status' => StatusEnum::ENABLED, 'is_sign' => 1, ]); if (empty($card_info) || empty($joinpay_card_info)) { return $this->error('银行卡不存在或者已经解除签约'); }; try { // 解除快捷支付签约 $settings = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_JOIN_PAY, 'basic'); $fast_pay_class = new JoinPayFastPay($settings); $fast_pay_class->unsign($joinpay_card_info); return $this->success('解约成功'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * @name: * @msg: 发送快捷支付支付短信 * @param {*} * @return {*} */ public function actionPaySms() { if (!\Yii::$app->request->isPost) { return $this->error('请求方式错误'); } $post = \Yii::$app->request->post(); $rules = [ [['card_id', 'trade_id'], 'required'], [['card_id', 'trade_id'], 'integer'], ]; $res = \Yii::$app->services->validate->validate($post, $rules); if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage()); // $card_info = UserBankCard::findOne([ // 'mall_id' => $this->mall_id, // 'id' => $post['card_id'], // 'user_id' => $this->user_id, // 'status' => StatusEnum::ENABLED, // ]); $joinpay_card_info = JoinPayUserBankcard::findOne([ 'mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'card_id' => $post['card_id'], 'status' => StatusEnum::ENABLED, 'is_sign' => 1, ]); if ( empty($joinpay_card_info)) throw new \Exception('银行卡不存在或者未开通快捷支付'); try { // 发送快捷支付短信 $settings = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_JOIN_PAY, 'basic'); $fast_pay_class = new JoinPayFastPay($settings); $fast_pay_class->sendPaySms($post['trade_id'], $joinpay_card_info, $this->mall_id); return $this->success('短信发送成功'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } }