/// <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
                });
            }
        }
Beispiel #3
0
 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"));
 }