DefaultController.php 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <?php
  2. namespace addons\UnionPay\api\modules\v1\controllers;
  3. use addons\UnionPay\common\models\UnionpayUserBankCard;
  4. use addons\UnionPay\common\service\FastPayService;
  5. use common\enums\ApiStatusEnum;
  6. use common\enums\StatusEnum;
  7. use common\models\common\UserBankCard;
  8. use api\controllers\OnAuthController;
  9. /**
  10. * 默认控制器
  11. *
  12. * Class DefaultController
  13. * @package addons\UnionPay\api\modules\v1\controllers
  14. */
  15. class DefaultController extends OnAuthController
  16. {
  17. public $modelClass = '';
  18. /**
  19. * 不用进行登录验证的方法
  20. *
  21. * 例如: ['index', 'update', 'create', 'view', 'delete']
  22. * 默认全部需要验证
  23. *
  24. * @var array
  25. */
  26. protected $authOptional = ['index'];
  27. public function actionAddCardAndSign()
  28. {
  29. if (!\Yii::$app->request->isPost) {
  30. return $this->error('请求方式错误');
  31. }
  32. $post = \Yii::$app->request->post();
  33. //'bank_code', 'card_type', 'card_type_name' 这三个参数由后端处理,前端不提交该参数
  34. $rules = [
  35. [['id_type', 'bank_card_no', 'id_no', 'payer_name', 'mobile'], 'required'],
  36. ['id_type', 'integer'],
  37. ['id_type', 'default', 'value' => 1],
  38. ['bank_card_no', 'string', 'max' => 64],
  39. [['id_no', 'payer_name'], 'string', 'max' => 255],
  40. [['validdate', 'cvv2'], 'safe'],
  41. ];
  42. $res = \Yii::$app->services->validate->validate($post, $rules);
  43. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  44. $post['bank_name'] = '';
  45. $validate_card = UserBankCard::validateCardInfo($post['bank_card_no'], $post['bank_name']);
  46. $post = array_merge($post, $validate_card);
  47. $bank_card_info = UserBankCard::findOne(['mall_id'=>$this->mall_id,'bank_card_no' => $post['bank_card_no'], 'status' => StatusEnum::ENABLED]);
  48. $post['user_id'] = $this->user_id;
  49. if (empty($bank_card_info)) {
  50. $user_bank_card_data = [
  51. 'user_id' => $this->user_id,
  52. 'bank_card_no' => $post['bank_card_no'],
  53. 'payer_name' => $post['payer_name'],
  54. 'bank_name' => $post['bank_name'],
  55. 'bank_code' => $post['bank_code'],
  56. 'card_type' => $post['card_type'],
  57. 'card_type_name' => $post['card_type_name'],
  58. ];
  59. $bank_card_info = UserBankCard::setData($this->mall_id, $user_bank_card_data);
  60. if (false == $bank_card_info) return $this->error(UserBankCard::getStaticError());
  61. }
  62. $post['card_id'] = $bank_card_info->id;
  63. $UnionpayUserBankCardModel = UnionpayUserBankCard::setData($this->mall_id, $post);
  64. if ($UnionpayUserBankCardModel == false) return $this->error(UnionpayUserBankCard::getStaticError());
  65. try {
  66. //发送签约短信
  67. $response = (new FastPayService($bank_card_info->mall_id))->sendSignSms($UnionpayUserBankCardModel, $bank_card_info);
  68. return $this->success('success', $response,ApiStatusEnum::CODE_SUCCESS, 0);
  69. } catch (\Exception $e) {
  70. return $this->error($e->getMessage());
  71. }
  72. }
  73. public function actionCardList()
  74. {
  75. $list = UserBankCard::lists([
  76. 'where' => [
  77. ['user_id' => $this->user_id],
  78. ['mall_id' => $this->mall_id],
  79. ['status' => StatusEnum::ENABLED]
  80. ],
  81. 'order' => 'created_at desc'
  82. ]);
  83. if (empty($list)) return $this->success('success', ['list' => []], ApiStatusEnum::CODE_SUCCESS, 0);
  84. $card_ids = array_column($list, 'id');
  85. $union_user_card_list = UnionpayUserBankCard::lists(['where' => [['card_id' => $card_ids]], 'index' => 'card_id']);
  86. foreach ($list as &$item) {
  87. $item['is_sign'] = 0;
  88. $item['agreeid'] = '';
  89. if (isset($union_user_card_list[$item['id']])) {
  90. $item['is_sign'] = $union_user_card_list[$item['id']]['is_sign'];
  91. $item['agreeid'] = $union_user_card_list[$item['id']]['sign_no'];
  92. }
  93. $item['icon'] = UserBankCard::getBankPicture($item['bank_code']);
  94. $item['back_image'] = UserBankCard::getBankPicture($item['bank_code'], 'back');
  95. }
  96. return $this->success('success', ['list' => $list], ApiStatusEnum::CODE_SUCCESS, 0);
  97. }
  98. //签约申请确认
  99. public function actionAgreeConfirm()
  100. {
  101. try {
  102. if (!\Yii::$app->request->isPost) return $this->error('请求方式错误');
  103. $post = \Yii::$app->request->post();
  104. $rules = [
  105. [['card_id', 'smscode', 'thpinfo'], 'required'],
  106. ];
  107. $res = \Yii::$app->services->validate->validate($post, $rules);
  108. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  109. $mall_id = $this->mall_id;
  110. $user_id = $this->user_id;
  111. $card_id = $post['card_id'];
  112. $smscode = $post['smscode'];
  113. $thpinfo = $post['thpinfo'];
  114. $response = (new FastPayService($mall_id))->agreeConfirm($mall_id, $user_id, $card_id, $smscode, $thpinfo);
  115. return $this->success('success', $response,ApiStatusEnum::CODE_SUCCESS, 0);
  116. } catch (\Exception $e) {
  117. return $this->error($e->getMessage());
  118. }
  119. }
  120. //银行卡解绑接口
  121. public function actionUnbind()
  122. {
  123. try {
  124. if (!\Yii::$app->request->isPost) return $this->error('请求方式错误');
  125. $post = \Yii::$app->request->post();
  126. $rules = [
  127. [['card_id'], 'required'],
  128. ];
  129. $res = \Yii::$app->services->validate->validate($post, $rules);
  130. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  131. $mall_id = $this->mall_id;
  132. $user_id = $this->user_id;
  133. $card_id = $post['card_id'];
  134. $response = (new FastPayService($mall_id))->unbind($user_id, $card_id);
  135. return $this->success('success', $response);
  136. } catch (\Exception $e) {
  137. return $this->error($e->getMessage());
  138. }
  139. }
  140. //商户支付申请
  141. public function actionPayapplyagree()
  142. {
  143. try {
  144. if (!\Yii::$app->request->isPost) return $this->error('请求方式错误');
  145. $post = \Yii::$app->request->post();
  146. $rules = [
  147. [['trade_no', 'card_id'], 'required'],
  148. ];
  149. $res = \Yii::$app->services->validate->validate($post, $rules);
  150. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  151. $mall_id = $this->mall_id;
  152. $user_id = $this->user_id;
  153. $card_id = $post['card_id'];
  154. $response = (new FastPayService($mall_id))->payapplyagree($user_id, $card_id, $post['trade_no']);
  155. return $this->success('success', $response);
  156. } catch (\Exception $e) {
  157. return $this->error($e->getMessage());
  158. }
  159. }
  160. //支付确认
  161. public function actionPayagreeconfirm()
  162. {
  163. try {
  164. if (!\Yii::$app->request->isPost) return $this->error('请求方式错误');
  165. $post = \Yii::$app->request->post();
  166. $rules = [
  167. [['card_id', 'smscode', 'trade_no', 'thpinfo'], 'required'],
  168. ];
  169. $res = \Yii::$app->services->validate->validate($post, $rules);
  170. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  171. $mall_id = $this->mall_id;
  172. $user_id = $this->user_id;
  173. $smscode = $post['smscode'];
  174. $card_id = $post['card_id'];
  175. $thpinfo = $post['thpinfo'];
  176. $trade_no = $post['trade_no'];
  177. $response = (new FastPayService($mall_id))->payagreeconfirm($mall_id, $user_id, $trade_no, $card_id, $thpinfo, $smscode);
  178. return $this->success('success', $response);
  179. } catch (\Exception $e) {
  180. return $this->error($e->getMessage());
  181. }
  182. }
  183. //获取支付短信
  184. public function actionPaysmsagree()
  185. {
  186. try {
  187. if (!\Yii::$app->request->isPost) return $this->error('请求方式错误');
  188. $post = \Yii::$app->request->post();
  189. $rules = [
  190. [['card_id', 'trade_no', 'thpinfo'], 'required'],
  191. ];
  192. $res = \Yii::$app->services->validate->validate($post, $rules);
  193. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  194. $mall_id = $this->mall_id;
  195. $user_id = $this->user_id;
  196. $card_id = $post['card_id'];
  197. $thpinfo = $post['thpinfo'];
  198. $trade_no = $post['trade_no'];
  199. $response = (new FastPayService($mall_id))->paysmsagree($mall_id, $user_id, $card_id, $trade_no, $thpinfo);
  200. return $this->success('success', $response);
  201. }catch (\Exception $e){
  202. return $this->error($e->getMessage());
  203. }
  204. }
  205. }