| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- <?php
- namespace addons\JoinPay\api\modules\v1\controllers;
- use addons\JoinPay\common\global_func\payment_logic\JoinPayFastPay;
- use addons\JoinPay\common\models\JoinPayUserBankcard;
- use common\enums\AddonsEnum;
- use common\enums\ApiStatusEnum;
- use common\enums\StatusEnum;
- use common\helpers\ArrayHelper;
- use common\models\common\UserBankCard;
- class FastPayController extends BaseController
- {
- public $modelClass = '';
- /**
- * 不用进行登录验证的方法
- *
- * 例如: ['index', 'update', 'create', 'view', 'delete']
- * 默认全部需要验证
- *
- * @var array
- */
- protected $authOptional = [];
- /**
- * @name:
- * @msg: 添加银行卡并签约接口,提交订单页面添加并签约银行卡
- * @param {*}
- * @return {*}
- */
- public function actionAddCardAndSign()
- {
- if (!\Yii::$app->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());
- }
- }
- }
|