放弃幻想,认清现实,准备斗争
前端整合
pages/user/bind.vue
commitBind() { this.$alert( '<div style="size: 18px;color: red;">您即将前往汇付宝绑定账号</div>', '前往汇付宝资金托管平台', { dangerouslyUseHTMLString: true, confirmButtonText: '立即前往', callback: (action) => { if (action === 'confirm') { this.$axios .$post('/api/core/userBind/auth/bind', this.userBind) .then((response) => { document.write(response.data.formStr) }) } }, } ) },
1、登录
使用借款人账号登录
2、测试
访问 http://127.0.0.1:3000/user/bind
3、结果
尚融宝数据库中创建了user_bind记录
汇付宝数据库中创建了user_bind 和 user_account两条数据记录
一、绑定步骤总结
step1:用户在个人中心点击 “立即开通” (http://localhost:3000/user/bind)
step2:尚融宝展示账户绑定页面
step3:用户填写基本信息(注意:身份证必须是尚未开户),点击“开户”按钮
step4:尚融宝后台创建用户绑定信息(新建user_bind记录)
step5:跳转到汇付宝页面(资金托管接口调用)
step7:汇付宝创建绑定账号(新建user_bind和user_account记录)
step8:异步回调:
尚融宝user_bind表更新bind_code字段、status字段
尚融宝user_info表更新 bind_code字段、name字段、idCard字段、bind_status字段
step9:用户点击“返回平台”,返回尚融宝
二、尚融宝回调接口
1、controller
UserBindController中创建回调方法
@ApiOperation("账户绑定异步回调") @PostMapping("/notify") public String notify(HttpServletRequest request) { Map<String, Object> paramMap = RequestHelper.switchMap(request.getParameterMap()); log.info("用户账号绑定异步回调:" + JSON.toJSONString(paramMap)); //校验签名 if(!RequestHelper.isSignEquals(paramMap)) { log.error("用户账号绑定异步回调签名错误:" + JSON.toJSONString(paramMap)); return "fail"; } //修改绑定状态 userBindService.notify(paramMap); return "success"; }
2、service
接口:UserBindService
void notify(Map<String, Object> paramMap);
实现:UserBindServiceImpl
@Resource private UserInfoMapper userInfoMapper; @Override @Transactional(rollbackFor = Exception.class) public void notify(Map<String, Object> paramMap) { String bindCode = (String)paramMap.get("bindCode"); //会员id String agentUserId = (String)paramMap.get("agentUserId"); //根据user_id查询user_bind记录 QueryWrapper<UserBind> userBindQueryWrapper = new QueryWrapper<>(); userBindQueryWrapper.eq("user_id", agentUserId); //更新用户绑定表 UserBind userBind = baseMapper.selectOne(userBindQueryWrapper); userBind.setBindCode(bindCode); userBind.setStatus(UserBindEnum.BIND_OK.getStatus()); baseMapper.updateById(userBind); //更新用户表 UserInfo userInfo = userInfoMapper.selectById(agentUserId); userInfo.setBindCode(bindCode); userInfo.setName(userBind.getName()); userInfo.setIdCard(userBind.getIdCard()); userInfo.setBindStatus(UserBindEnum.BIND_OK.getStatus()); userInfoMapper.updateById(userInfo); }