param_data; $param['user_data'] = $request->user_data; Db::beginTransaction(); try { Validator::input($param, [ 'affiliated_bank' => Validator::notEmpty()->stringType()->setName('归属银行'), 'account_holder' => Validator::notEmpty()->stringType()->setName('开户人'), 'card_number' => Validator::notEmpty()->setName('银行卡号'), ]); $card = Db::table('wa_bank_card')->where('card_number', $param['card_number'])->first(); if ($card) { throw new \Exception('当前银行卡已绑定'); } BankCardBusiness::UpData($param); } catch (\Throwable $exception) { Db::rollBack(); return error($exception->getMessage()); } Db::commit(); return success(); } #[Apidoc\Title("领取银行卡")] #[Apidoc\Url("api/card/receive_card.html")] #[Apidoc\Method("POST")] #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")] #[Apidoc\Param("name", type: "string", require: true, desc: "姓名", mock: "")] #[Apidoc\Param("number", type: "string", require: true, desc: "身份证", mock: "")] #[Apidoc\Param("mobile", type: "string", require: true, desc: "手机号", mock: "")] #[Apidoc\Param("address", type: "string", require: true, desc: "地址", mock: "")] public function receiveCard(Request $request) { Db::beginTransaction(); try { $param = $request->param_data; $param['user_data'] = $request->user_data; Validator::input($param, [ ]); if ($param['user_data']['continuity'] == 0) { throw new \Exception('请先签到在来领取!'); } if (!empty(Redis::get('999' . $request->user_data['id']))) { throw new \Exception('已领取'); } Redis::setEx('999' . $request->user_data['id'], 5, $request->user_data['id']); $datalist = Db::table('wa_user_social_cark') ->where('user_id', $param['user_data']['id']) ->where('type', 1) ->first(); if ($datalist) { throw new \Exception('已经领取,请不要重复操作!'); } Db::table('wa_user_social_cark')->insert([ 'type' => 1, 'user_id' => $param['user_data']['id'], 'card_num' => '******', 'bank_img' => $param['user_data']['bank_img'], 'password' => $param['user_data']['password'], 'name' => Arr::get($param, 'name', ''), 'number' => Arr::get($param, 'number', ''), 'address' => Arr::get($param, 'address', ''), 'mobile' => Arr::get($param, 'mobile', ''), 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), 'addtime' => time(), ]); } catch (\Throwable $exception) { Db::rollBack(); return error($exception->getMessage()); } Db::commit(); return success([ 'name' => Arr::get($param, 'name', ''), 'number' => Arr::get($param, 'number', ''), 'address' => Arr::get($param, 'address', ''), 'mobile' => Arr::get($param, 'mobile', ''), ], '领取成功'); } #[Apidoc\Title("银行卡详情")] #[Apidoc\Url("api/card/card_details.html")] #[Apidoc\Method("POST")] #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")] #[Apidoc\Param("type", type: "int", require: false, desc: "类型", mock: '默认:1')] #[Apidoc\Returned(name: "id", type: "string", require: true, desc: 'ID', default: '132')] #[Apidoc\Returned(name: "card_num", type: "string", require: true, desc: '卡号', default: '132')] #[Apidoc\Returned(name: "bank_img", type: "string", require: true, desc: '银行图片', default: '132')] #[Apidoc\Returned(name: "name", type: "string", require: true, desc: '名称', default: '132')] #[Apidoc\Returned(name: "status_name", type: "string", require: true, desc: '制卡进度', default: '132')] #[Apidoc\Returned(name: "safety_code", type: "string", require: true, desc: '安全码', default: '132')] #[Apidoc\Returned(name: "money_two", type: "string", require: true, desc: '银行卡余额', default: '132')] #[Apidoc\Returned(name: "money_four", type: "string", require: true, desc: '银行卡基础额度', default: '132')] public function cardDetails(Request $request) { Db::beginTransaction(); try { $param = $request->param_data; $param['user_data'] = $request->user_data; $datalist = Db::table('wa_user_social_cark') ->where('user_id', $param['user_data']['id']) ->where('type', 1) ->first(); if ($datalist) { if ($datalist->status == 1) { $status_name = '审核中'; $datalist->card_num = '*******************'; } elseif ($datalist->status == 2) { $status_name = '开卡中'; $datalist->card_num = '*******************'; } elseif ($datalist->status == 3) { $status_name = '已开户'; } elseif ($datalist->status == 4) { $status_name = '请确认您的收货地址及信息,如填写有误请及时联系客服处理。'; $datalist->status = 3; } else { $status_name = ''; } if ($param['user_data']['mailing_date'] > 0) { if (time() > $param['user_data']['mailing_date']) { $status_name = '待激活'; } else { $status_name = '待激活'; } } $is_buy = Db::table('wa_payorder') ->where('user_id', $request->user_data['id']) ->where('is_pay', 2) ->where('goods_type', 6) ->exists(); if ($is_buy) { $datalist->status = 4; $status_name = '已激活,待打款,预计三个工作日'; } $bank_carddata = Db::table('wa_bank_card')->where('uid', $param['user_data']['id'])->first(); if ($bank_carddata) { $datalist->number = $bank_carddata->card_number; } $datalist->status_name = $status_name; $datalist->money_two = $param['user_data']['money_two']; $datalist->money_four = $param['user_data']['money_four']; $datalist->card_name = $param['user_data']['card_name']; $datalist->bank_img = imageToBase64($request->user_data['bank_img']); } } catch (\Throwable $exception) { Db::rollBack(); return error($exception->getMessage()); } Db::commit(); return success($datalist, '获取成功'); } #[Apidoc\Title("银行卡地址编辑")] #[Apidoc\Url("api/card/card_address.html")] #[Apidoc\Method("POST")] #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")] #[Apidoc\Param("id", type: "int", require: true, desc: "ID", mock: "2")] public function cardAddress(Request $request) { $param = $request->param_data; $param['user_data'] = $request->user_data; Db::beginTransaction(); try { Validator::input($param, [ 'id' => Validator::notEmpty()->setName('id'), ]); $datalist = Db::table('wa_user_social_cark') ->where('user_id', $param['user_data']['id']) ->where('id', $param['id']) ->first(); if (!$datalist) { throw new \Exception('非法操作'); } if ($datalist->status < 3) { throw new \Exception('等待银行卡开户完成,在申请邮寄!'); } if (empty($datalist->ranking)) { $ranking = mt_rand(900000, 1200000); } else { $ranking = $datalist->ranking; } Db::table('wa_user_social_cark')->where('id', $datalist->id)->update([ 'mobile' => Arr::get($param, 'mobile', $datalist->mobile), 'name' => Arr::get($param, 'name', $datalist->name), 'number' => Arr::get($param, 'number', $datalist->number), 'address' => Arr::get($param, 'address', $datalist->address), 'updated_at' => date('Y-m-d H:i:s'), 'ranking' => $ranking, 'status' => 4 ]); } catch (\Throwable $exception) { Db::rollBack(); return error($exception->getMessage()); } Db::commit(); return success([], '操作成功'); } #[Apidoc\Title("设置银行卡支付密码")] #[Apidoc\Url("api/card/card_pass.html")] #[Apidoc\Method("POST")] #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")] #[Apidoc\Param(name: "id", type: "int", require: true, desc: '卡ID', default: '1')] #[Apidoc\Param(name: "pass_one", type: "int", require: true, desc: '新密码', default: '1')] #[Apidoc\Param(name: "pass_two", type: "int", require: true, desc: '确定密码', default: '1')] public function cardPass(Request $request) { Db::beginTransaction(); try { $param = Arr::only($request->param_data, ['pass_one', 'pass_two', 'id']); $param['url'] = $request->header('origin'); $param['user_data'] = $request->user_data; Validator::input($param, [ 'id' => Validator::notEmpty()->setName('ID'), 'pass_one' => Validator::notEmpty()->setName('新密码'), 'pass_two' => Validator::notEmpty()->setName('确定密码'), ]); if ($param['pass_one'] != $param['pass_two']) { throw new \Exception('两次输入密码不一致!'); } Db::table('wa_user_social_cark') ->where('user_id', $param['user_data']['id']) ->where('id', $param['id']) ->update(['password' => md5($param['pass_one'])]); } catch (\Throwable $exception) { Db::rollBack(); return error($exception->getMessage()); } Db::commit(); return success([], '修改成功'); } #[Apidoc\Title("卡交易数据")] #[Apidoc\Url("api/card/card_transaction.html")] #[Apidoc\Method("POST")] #[Apidoc\Header("token", type: "string", require: true, desc: "身份令牌Token", mock: "@token")] #[Apidoc\Returned(name: "customerSettlementAmount", type: "string", require: true, desc: '客户结算金额', default: '132')] #[Apidoc\Returned(name: "merchantName", type: "string", require: true, desc: '商户名称', default: '132')] #[Apidoc\Returned(name: "create_date", type: "string", require: true, desc: '创建时间', default: '132')] #[Apidoc\Returned(name: "type", type: "string", require: true, desc: '交易类型', default: '132')] #[Apidoc\Returned(name: "respMessage", type: "string", require: true, desc: '渠道Message', default: '132')] #[Apidoc\Returned(name: "status", type: "string", require: true, desc: '0预成功,1结算中,2交易失败,3交易成功', default: '132')] public function card_transaction(Request $request) { Db::beginTransaction(); try { $param = $request->param_data; $param['url'] = $request->header('origin'); $param['user_data'] = $request->user_data; $cardlist = Db::table('wa_user_social_cark') ->where('user_id', $param['user_data']['id'])->first(); if (empty($cardlist->card_num)) { throw new \Exception('暂无交易记录'); } else { $order_no = date('YmdHis') . mt_rand(1000, 9999); $result = [ 'shopno' => '20001032', 'key' => 'A7F232D8364468ED10BC872B4E7EF4D3', 'action' => 'bill_list', 'cardno' => $cardlist->card_num, 'p' => $param['page'] ]; $info = openssl_encrypt(json_encode($result), 'AES-256-ECB', 'A7F232D8364468ED10BC872B4E7EF4D3', OPENSSL_RAW_DATA); $infodata = base64_encode($info); $arr = [ 'shopno' => '20001032', 'wholeRequestId' => $order_no, 'data' => $infodata, ]; $url = 'https://www.supplicardes.online/api/virtual_card'; $data = Http::post($url, $arr)->array(); if ($data['code'] != 1000) { throw new \Exception('获取失败:' . $data['msg']); } } } catch (\Throwable $exception) { Db::rollBack(); return error($exception->getMessage()); } Db::commit(); return success($data['data'], '成功', 200, $data['arr']['totalPages']); } }