/// <summary> /// 身份证识别 /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <IDCardResponse> DetectAsync(IDCardRequest request) { Throws.ArgumentNullException(request, nameof(request)); Throws.ArgumentNullException(request.ImgUrl, nameof(request.ImgUrl)); try { var httpClient = this._options.HttpClient; var httpRequest = BuildHttpRequestMessage(request); var response = await httpClient.RequestJsonAsync <TencentOCRResponse>(httpRequest); var result = response.Result_List.First(); var resultData = result.Data; var validDate = resultData.Valid_date.Default("").Split('-'); string startDate = null; string endDate = null; if (validDate?.Length == 2) { startDate = validDate[0]; endDate = validDate[1]; } return(new IDCardResponse { Success = result.Code == 0, Message = result.Message, Result = new IDCard { //正面 Address = resultData.Address, Birth = resultData.Birth, Id = resultData.Id, Name = resultData.Name, Nation = resultData.Nation, Gender = EnumObject.GetNullableEnumFromDescription <Gender>(resultData.Sex), //反面 Authority = resultData.Authority, StartDate = startDate, EndDate = endDate } }); } catch (Exception ex) { return(new IDCardResponse { Success = false, Message = ex.Message }); } }
/// <summary> /// 身份证识别 /// </summary> /// <param name='request'></param> /// <returns></returns> public async Task <IDCardResponse> DetectAsync(IDCardRequest request) { Throws.ArgumentNullException(request, nameof(request)); Throws.ArgumentNullException(request.ImgUrl, nameof(request.ImgUrl)); try { var httpClient = this._options.HttpClient; var httpRequest = await BuildHttpRequestMessage(request); var response = await httpClient.RequestJsonAsync <AliyunOCRResponse>(httpRequest); var result = response .Outputs .FirstOrDefault() .OutputValue .DataValue; return(new IDCardResponse { Success = result.Success, Result = new IDCard { //正面 Id = result.Num, Address = result.Address, Birth = result.Birth, Name = result.Name, Nation = result.Nationality, Gender = EnumObject.GetNullableEnumFromDescription <Gender>(result.Sex), //反面 Authority = result.Issue, StartDate = result.Start_date, EndDate = result.End_date } }); } catch (Exception ex) { return(new IDCardResponse { Success = false, Message = ex.Message }); } }
public void GetNullableEnumFromDescription_method_test() { Assert.Null(EnumObject.GetNullableEnumFromDescription <MockFlagsEnum>(null)); Assert.Null(EnumObject.GetNullableEnumFromDescription <MockEnum>("答案是C")); Assert.Equal(MockFlagsEnum.C, EnumObject.GetNullableEnumFromDescription <MockFlagsEnum>("答案是C")); }