示例#1
0
        /// <summary>
        /// 获取微信小程序码
        /// </summary>
        /// <param name="token"></param>
        public static async Task <string> GetWXACode(WXACodeParam param, string token)
        {
            string result = null;
            var    p      = JsonConvert.SerializeObject(param, Formatting.Indented,
                                                        new JsonSerializerSettings {
                ContractResolver = new LowercaseContractResolver()
            });
            var sendUrl = string.Format(WeChatApiUrl.GET_WXACODE, token);

            try
            {
                var response = await HttpClientHelper.HttpPostStreamAsync(sendUrl, p);

                var bytesArr = StreamHelper.StreamToBytes(response);
                var b64      = Convert.ToBase64String(bytesArr);
                var imgB64   = $"data:image/jpeg;base64,{b64}";
                result = imgB64;
            }
            catch (Exception ex)
            {
                result = null;
                //取得当前方法类全名 包括命名空间
                string className = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName;
                //取得当前方法名
                string methedName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                Common.Helper.Logger.Error($"获取微信小程序码失败 {sendUrl}:{ex.Message} {Environment.NewLine} at {className}.{methedName}:{Environment.NewLine} {p}");
            }
            return(result);
        }
        public async Task <IActionResult> GetTransferedWXAcodeAsync(string orderGuid)
        {
            #region 检测待转让订单是否能被转让
            var orderBiz      = new MealOrderBiz();
            var orderModelOld = await orderBiz.GetModelAsync(orderGuid);

            if (orderModelOld == null)
            {
                return(Failed(ErrorCode.Empty, "无此订单数据"));
            }
            if (orderModelOld.OrderStatus != MealOrderStatusEnum.Paided.ToString())
            {
                var enumStatus = (MealOrderStatusEnum)Enum.Parse(typeof(MealOrderStatusEnum), orderModelOld.OrderStatus);
                return(Failed(ErrorCode.UserData, $"当前订单状态为[{enumStatus.GetDescription()}]不支持转让"));
            }
            else if (orderModelOld.MealEndTime < DateTime.Now)
            {
                return(Failed(ErrorCode.UserData, $"当前订单已过用餐时间,无法转让"));
            }

            #endregion


            var resToken = WeChartApi.GetAccessToken(PlatformSettings.CDMealClientAppId, PlatformSettings.CDMealClientAppSecret).Result;
            if (resToken.Errcode != 0 || resToken == null)
            {
                return(Failed(ErrorCode.SystemException, $"获取token失败:{resToken.Errmsg}"));
            }
            var param = new WXACodeParam
            {
                Path  = $"pages/OrderTransfer/OrderTransfer?orderGuid={orderGuid}",
                Width = 280
            };
            var res = WeChartApi.GetWXACode(param, resToken.AccessToken).Result;
            if (string.IsNullOrWhiteSpace(res))
            {
                return(Failed(ErrorCode.SystemException, $"获取转让码失败"));
            }
            var response = new GetTransferedWXAcodeResponseDto
            {
                TransferedCodeImg = res,
                CategoryName      = orderModelOld.CategoryName,
                MealStartTime     = orderModelOld.MealStartTime,
                MealEndTime       = orderModelOld.MealEndTime
            };
            return(Success(response));
        }