/// <summary> /// 个人用户注册 /// </summary> public void personalRegister() { PersonalRegisterRequest personalRegisterRequest = new PersonalRegisterRequest(); personalRegisterRequest.area_code = "370000"; personalRegisterRequest.description = "描述信息:该用户位示例用户"; personalRegisterRequest.id_number = "370011123456712122"; personalRegisterRequest.id_type = IdType.IDCARD; personalRegisterRequest.mail = "*****@*****.**"; personalRegisterRequest.phone = "13711111121"; personalRegisterRequest.user_name = "测试个人用户"; try { PersonalRegisterResponse response = client.Personal.personalRegister(personalRegisterRequest); Console.WriteLine("个人用户注册-响应数据:" + JSONUtil.getJsonStringFromObject(response)); } catch (SignApplicationException sae) { // 捕获网关校验数据 Console.WriteLine("个人用户注册-网关异常状态码为:" + sae.return_code); Console.WriteLine("个人用户注册-网关异常信息为:" + sae.return_message); } catch (SignServerException sse) { // 捕获网关校验数据 Console.WriteLine("个人用户注册-业务异常状态码为:" + sse.result_code); Console.WriteLine("个人用户注册-业务异常信息为:" + sse.result_message); } }
/// <summary> /// 创建个人用户 /// </summary> /// <param name="personalRegisterRequest"></param> /// <returns></returns> public PersonalRegisterResponse personalRegister(PersonalRegisterRequest request) { SignRequest signRequest = new SignRequest(request); signRequest.apiUrl = ApiUrlConstant.Personal.Register; PersonalRegisterResponse response = this.Send <PersonalRegisterResponse>(signRequest); return(response); }
/// <summary> /// 个人用户注册并申请证书 /// </summary> /// <param name="request"></param> /// <returns></returns> public PersonalRegisterResponse personalCertRegister(PersonalRegisterRequest request) { //个人用户注册 SignRequest signRequest = new SignRequest(request); signRequest.apiUrl = ApiUrlConstant.Personal.Register; PersonalRegisterResponse response = this.Send <PersonalRegisterResponse>(signRequest); //证书申请 signRequest = new SignRequest(new CertApplyRequest(response.user_id)); signRequest.apiUrl = ApiUrlConstant.Cert.Apply; CertApplyResponse certApplyResponse = base.Send <CertApplyResponse>(signRequest); return(response); }
public XResult <PersonalRegisterResponse> Register(PersonalRegisterRequest request) { if (request == null) { return(new XResult <PersonalRegisterResponse>(null, ErrorCode.INVALID_ARGUMENT, new ArgumentNullException(nameof(request)))); } String service = $"{this.GetType().FullName}.Register(...)"; if (!request.IsValid) { _logger.Trace(TraceType.BLL.ToString(), CallResultStatus.ERROR.ToString(), service, $"{nameof(request)}.IsValid", LogPhase.ACTION, $"请求参数验证失败:{request.ErrorMessage}", request); return(new XResult <PersonalRegisterResponse>(null, ErrorCode.INVALID_ARGUMENT, new ArgumentException(request.ErrorMessage))); } var requestHash = $"register:{request.PayeeId}".GetHashCode(); if (_lockProvider.Exists(requestHash)) { return(new XResult <PersonalRegisterResponse>(null, ErrorCode.SUBMIT_REPEAT)); } try { if (!_lockProvider.Lock(requestHash)) { return(new XResult <PersonalRegisterResponse>(null, ErrorCode.SUBMIT_REPEAT)); } var existedRegisterInfo = _personalSubAccountRepository.QueryProvider.Where(x => x.AppId == request.AppId && x.UID == request.PayeeId).Count() > 0; if (existedRegisterInfo) { return(new XResult <PersonalRegisterResponse>(null, ErrorCode.INFO_EXISTED, new RequestException("开户信息已存在"))); } var newId = IDGenerator.GenerateID(); var newAccount = new PersonalSubAccount() { Id = newId, AppId = request.AppId, UID = request.PayeeId, IDCardNo = request.IDCardNo, IDCardType = request.IDCardType, RealName = request.RealName, Mobile = request.Mobile, Email = request.Email, Status = PersonalInfoRegisterStatus.WAITFORAUDIT.ToString(), UpdateTime = DateTime.Now }; _personalSubAccountRepository.Add(newAccount); var saveResult = _personalSubAccountRepository.SaveChanges(); if (!saveResult.Success) { _logger.Error(TraceType.BLL.ToString(), CallResultStatus.ERROR.ToString(), service, $"{nameof(_personalSubAccountRepository)}.SaveChanges()", "保存个人开户信息失败", saveResult.FirstException, request); return(new XResult <PersonalRegisterResponse>(null, ErrorCode.DB_UPDATE_FAILED, saveResult.FirstException)); } String traceMethod = "Bill99Util.Execute(/person/register)"; _logger.Trace(TraceType.BLL.ToString(), CallResultStatus.OK.ToString(), service, traceMethod, LogPhase.BEGIN, "开始调用快钱个人开户接口", request); var execResult = Bill99UtilYZT.Execute <RawPersonalRegisterRequest, RawPersonalRegisterResponse>("/person/register", new RawPersonalRegisterRequest() { uId = request.PayeeId, email = request.Email, idCardNumber = request.IDCardNo, idCardType = request.IDCardType, mobile = request.Mobile, name = request.RealName }); _logger.Trace(TraceType.BLL.ToString(), (execResult.Success ? CallResultStatus.OK : CallResultStatus.ERROR).ToString(), service, traceMethod, LogPhase.END, $"结束调用快钱开户接口", request); if (!execResult.Success || execResult.Value == null) { _logger.Error(TraceType.BLL.ToString(), CallResultStatus.ERROR.ToString(), service, traceMethod, "个人开户失败", execResult.FirstException, execResult.Value); _personalSubAccountRepository.Remove(newAccount); saveResult = _personalSubAccountRepository.SaveChanges(); if (!saveResult.Success) { _logger.Error(TraceType.BLL.ToString(), CallResultStatus.ERROR.ToString(), service, traceMethod, "删除个人开户记录失败", saveResult.FirstException, newAccount); } _logger.Trace(TraceType.BLL.ToString(), CallResultStatus.OK.ToString(), service, traceMethod, LogPhase.ACTION, "已删除开户失败的记录"); return(new XResult <PersonalRegisterResponse>(null, ErrorCode.DEPENDENT_API_CALL_FAILED, execResult.FirstException)); } //开户成功之后要更新openid if (execResult.Value.ResponseCode == "0000") { Boolean statusHasChanged = false; switch (execResult.Value.AuditStatus) { case "03": newAccount.Status = PersonalInfoRegisterStatus.SUCCESS.ToString(); newAccount.OpenId = execResult.Value.OpenId; statusHasChanged = true; break; case "02": newAccount.Status = PersonalInfoRegisterStatus.WAITFORREVIEW.ToString(); statusHasChanged = true; break; } if (statusHasChanged) { _personalSubAccountRepository.Update(newAccount); var updateResult = _personalSubAccountRepository.SaveChanges(); if (!updateResult.Success) { _logger.Error(TraceType.BLL.ToString(), CallResultStatus.ERROR.ToString(), service, traceMethod, "更新开户信息的OpenId失败", updateResult.FirstException, newAccount); return(new XResult <PersonalRegisterResponse>(null, ErrorCode.DB_UPDATE_FAILED, new DbUpdateException("更新开户信息失败"))); } } } var resp = new PersonalRegisterResponse() { Status = newAccount.Status, OpenId = newAccount.OpenId, Msg = GetRegisterAuditStatusMsg(newAccount.Status) }; return(new XResult <PersonalRegisterResponse>(resp)); } finally { _lockProvider.UnLock(requestHash); } }