| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?php
- namespace app\controller\wap;
- use app\extra\basic\Base;
- use app\extra\jhfPay\Pay;
- use app\extra\service\system\MoneyLogService;
- use app\extra\tools\CodeExtend;
- use app\middleware\WxMiddleware;
- use app\model\system\SystemUserBankcard;
- use app\validate\saas\CardValidate;
- use DI\Attribute\Inject;
- use LinFly\Annotation\Route\Controller;
- use LinFly\Annotation\Route\Middleware;
- use LinFly\Annotation\Route\Route;
- use support\Request;
- use support\Response;
- #[Controller(prefix: "/wap/card"),Middleware(WxMiddleware::class)]
- class Card extends Base
- {
- #[Inject]
- protected SystemUserBankcard $model;
- #[Inject]
- protected MoneyLogService $service;
- #[Inject]
- protected CardValidate $validate;
- #[Route(path: "list",methods: "get")]
- public function getCardList(Request $request): Response
- {
- try {
- $param = $request->get();
- $data = $this->model->where("agent_id",$request->user['shop_id'])->findOrEmpty();
- if ($data->isEmpty())
- {
- $data = null;
- } else {
- $data['logo'] = "https://apimg.alipay.com/combo.png?d=cashier&t={$data['bank']}";
- $data['user_name_hide'] = hide_str($data['user_name'],1);
- $data['card_id_hide'] = hide_str($data['card_id'],3,10);
- }
- $city = json_decode(file_get_contents(public_path()."/city.json"),true);
- if (empty($param['shop'])) {
- $param['shop'] = $request->user['shop_id'];
- }
- $list = $this->service->getList($param);
- $list = pageFormat($list);
- return success("ok",compact("data",'city','list'));
- } catch (\Throwable $throwable) {
- return error($throwable->getMessage());
- }
- }
- /**
- * 新增银行卡
- * @param Request $request
- * @return Response
- */
- #[Route(path: "save",methods: "post")]
- public function setUserCard(Request $request): Response
- {
- try {
- $param = $request->post();
- $card = $this->model->where("agent_id",$request->user['shop_id'])->findOrEmpty();
- if (!$card->isEmpty()) return error("请勿重复添加");
- if ($param['type'] == 2) {
- $memberId = $this->model->where("member_id",$param['data_id'])->field("member_id,user_name,cert_id,tel_no,bank,card_id,valid_from,valid_until,card_prov_code,card_area_code,card_city_name")->findOrEmpty();
- if ($memberId->isEmpty()) return errorTrans("empty.data");
- $memberId['agent_id'] = $request->user['shop_id'];
- $state = $card->strict(false)->insertGetId($memberId->toArray());
- } else {
- if (empty($param['card_city'])) return error("请选择开户地区");
- $param['card_prov_code'] = $param['card_city'][0];
- $param['card_area_code'] = $param['card_city'][1];
- $param['card_city'] = json_encode($param['card_city']);
- $resp = $this->validate->scene("add")->check($param);
- if (!$resp) return error($this->validate->getError());
- $bankAli = json_decode(file_get_contents("https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo={$param['card_id']}&cardBinCheck=true"),true);
- if (!$bankAli['validated']) return error("银行卡号有误");
- if ($param['valid_from'] >= $param['valid_until']) return error("身份证有效期有误");
- $param['bank'] = $bankAli['bank'];
- $param['agent_id'] = $request->user['shop_id'];
- $param['member_id'] = CodeExtend::random(18);
- $respJhf = (new Pay)->config([
- "appid" => sConf("wechat.jhf_appid"),
- "mch_id" => sConf("wechat.jhf_mch_id"),
- "aeskey" => sConf("wechat.jhf_aeskey"),
- "pubkey" => sConf("wechat.jhf_pubkey"),
- "prikey" => sConf("wechat.jhf_prikey"),
- ])->createMember([
- "app_id" => sConf("wechat.jhf_appid"),
- "member_id" => $param['member_id'],
- "member_type" => "01",
- "member_p" => [
- "user_name" => $param['user_name'],
- "cert_id" => $param['cert_id'],
- "tel_no" => $param['tel_no'],
- "card_id" => $param['card_id'],
- "valid_from" => $param['valid_from'],
- "valid_until" => ($param['valid_until']=='20990101')?"99991231":$param['valid_until'],
- "card_prov_code" => $param['card_prov_code'],
- "card_area_code" => $param['card_area_code']
- ]
- ]);
- if (isset($respJhf['code'])) return error($respJhf['error_msg']);
- // 推送绑定
- $state = $card->strict(false)->insertGetId($param);
- }
- if (!$state) return errorTrans("error.data");
- return successTrans("success.data");
- } catch (\Throwable $throwable) {
- return error($throwable->getMessage());
- }
- }
- }
|