public SwiftpassPayController(ICommunityService communityService //, IOptions<SwiftpassPayOptions> options , FinanceDbContext db , IOptions <ShopConglomerationOrderOptions> shopConglomerationOrderServer , PayProxyFactory proxyFactory , WechatCoreDbContext wechatCoreDb , PrintDbContext printDbContext , ShopDbContext shopdb , MemberDbContext memberDbContext , ILoggerFactory loggerFactory , IOptions <WechatTemplateSendOptions> woptions , IOptions <ThirdConfig> toptions , IHostingEnvironment hostingEnvironment) { this.hostingEnvironment = hostingEnvironment; this.woptions = woptions.Value; //this.options = options.Value; // this.db = ZRui.Web.BLL.DbContextFactory.FinanceDbContext; this.db = db; this.shopdb = shopdb; this.printDbContext = printDbContext; this.wechatCoreDb = wechatCoreDb; this.proxyFactory = proxyFactory; this._memberDbContext = memberDbContext; _shopConglomerationOrderServer = shopConglomerationOrderServer.Value; _logger = loggerFactory.CreateLogger <SwiftpassPayController>(); this.thirdConfig = toptions.Value; }
/// <summary> /// 完成订单 /// </summary> /// <param name="printDbContext"></param> /// <param name="db"></param> /// <param name="options"></param> /// <param name="shopOrderid"></param> /// <param name="_logger"></param> static void OrderFinish(PrintDbContext printDbContext, ShopDbContext db, WechatTemplateSendOptions options, ThirdConfig toptions, ShopOrder shopOrder, ILogger _logger) { shopOrder.PayTime = DateTime.Now; shopOrder.Status = ShopOrderStatus.已支付; db.SaveChanges(); //获取订单中商品的数量 var commodityIdAndCounts = db.Query <ShopOrderItem>() .Where(m => m.ShopOrderId == shopOrder.Id) .Where(m => !m.IsDel) .Select(m => new { m.CommodityStock.Sku.CommodityId, m.Count }) .ToList() .GroupBy(m => m.CommodityId) .ToDictionary(m => m.Key, m => m.Select(x => x.Count).Sum()); //更新商品的销售量 //注意,这里如果有一个品牌,多个店铺的情况,会出现销售额共享的情况 var commodityIds = commodityIdAndCounts.Select(m => m.Key).ToList(); var commoditys = db.Query <ShopBrandCommodity>() .Where(m => commodityIds.Contains(m.Id)) .ToList(); foreach (var item in commoditys) { item.SalesForMonth += commodityIdAndCounts[item.Id]; } }
/// <summary> /// 直接设置订单完成 /// </summary> /// <param name="shopOrder"></param> /// <param name="printDbContext"></param> /// <param name="db"></param> /// <param name="options"></param> /// <param name="_logger"></param> public static void SetShopOrderFinish(this ShopOrder shopOrder, PrintDbContext printDbContext, ShopDbContext db, WechatTemplateSendOptions options, ThirdConfig toptions, ILogger _logger) { OrderFinish(printDbContext, db, options, toptions, shopOrder, _logger); var shopName = db.Query <Shop>() .Where(m => m.Id == shopOrder.ShopId) .Select(m => m.Name) .FirstOrDefault(); AfterOrderPlacing(printDbContext, db, toptions, shopOrder, shopName, options, _logger); }
/// <summary> /// 构造函数 /// </summary> /// <param name="communityService"></param> /// <param name="options"></param> /// <param name="memberDb"></param> /// <param name="db"></param> /// <param name="hostingEnvironment"></param> public ShopWechatAPIController(ICommunityService communityService , IOptions <MemberAPIOptions> options , IOptions <WechatTemplateSendOptions> wechatTemplateSendOptions , MemberDbContext memberDb , ShopDbContext db , IHostingEnvironment hostingEnvironment) : base(options, db, memberDb) { this.db = db; this.hostingEnvironment = hostingEnvironment; this.wechatTemplateSendOptions = wechatTemplateSendOptions.Value; }
/// <summary> /// 在后台任务中完成订单 /// </summary> /// <param name="shopOrderId"></param> public static void SetShopOrderFinish(int shopOrderId) { using (ShopDbContext shopDb = DbContextFactory.ShopDb) { using (var printDbContext = DbContextFactory.PrintDb) { ILogger logger = ServiceLocator.Instance.GetService <ILoggerFactory>().CreateLogger <ShopOrderUtil>(); ShopOrder shopOrder = shopDb.GetSingle <ShopOrder>(shopOrderId); ThirdConfig thirdConfig = ServiceLocator.Instance.GetService <IOptions <ThirdConfig> >().Value; WechatTemplateSendOptions wechatTemplateSend = ServiceLocator.Instance.GetService <IOptions <WechatTemplateSendOptions> >().Value; shopOrder.PayWay = "会员余额支付"; shopOrder.SetShopOrderFinish(printDbContext, shopDb, wechatTemplateSend, thirdConfig, logger); } } }
/// <summary> /// 构造函数 /// </summary> /// <param name="communityService"></param> /// <param name="options"></param> /// <param name="memberDb"></param> /// <param name="db"></param> /// <param name="hostingEnvironment"></param> public ShopConglomerationActivityAPIController(ICommunityService communityService , IOptions <MemberAPIOptions> options , MemberDbContext memberDb , ShopDbContext db , IOptions <WechatTemplateSendOptions> wechatTemplateSendOptions , IMapper mapper , ILoggerFactory loggerFactory , IHostingEnvironment hostingEnvironment) : base(options, db, memberDb) { this.db = db; this.hostingEnvironment = hostingEnvironment; this.wechatTemplateSendOptions = wechatTemplateSendOptions.Value; _logger = loggerFactory.CreateLogger <ShopConglomerationOrderAPIController>(); _mapper = mapper; }
public ShopConglomerationOrderAPIController( IOptions <MemberAPIOptions> options , IOptions <WechatTemplateSendOptions> tOption , ShopDbContext db , FinanceDbContext financedb , IMapper mapper , ILoggerFactory loggerFactory , WechatCoreDbContext wechatCoreDb , MemberDbContext memberDb , IHostingEnvironment hostingEnvironment) : base(options, memberDb, wechatCoreDb) { this.db = db; this._financedb = financedb; _mapper = mapper; wechatTemplateSendOptions = tOption.Value; this.hostingEnvironment = hostingEnvironment; _logger = loggerFactory.CreateLogger <ShopOrderAPIController>(); }
public SwiftpassPayForConglomerationWechatOpenAPIController(IOptions <MemberAPIOptions> memberOptions , FinanceDbContext db , IOptions <WechatTemplateSendOptions> options , ShopDbContext shopDb , PayProxyFactory proxyFactory , WechatCoreDbContext wechatCoreDb , MemberDbContext memberDb , ILoggerFactory loggerFactory , IHostingEnvironment hostingEnvironment) : base(memberOptions, memberDb, wechatCoreDb) { this.hostingEnvironment = hostingEnvironment; this.db = db; this.options = options.Value; this.shopDb = shopDb; this.wechatCoreDb = wechatCoreDb; this.memberDb = memberDb; this._logger = loggerFactory.CreateLogger <SwiftpassPayForShopWechatOpenAPIController>(); this.proxyFactory = proxyFactory; this.LogDbContext = DbContextFactory.LogDbContext; }
public WechatPayController(ICommunityService communityService , IOptions <WechatTemplateSendOptions> options , IOptions <ThirdConfig> poptions , PayProxyFactory proxyFactory , FinanceDbContext db , WechatCoreDbContext wechatCoreDb , PrintDbContext printDbContext , ShopDbContext shopDb , ILoggerFactory loggerFactory , IHostingEnvironment hostingEnvironment) { this.hostingEnvironment = hostingEnvironment; this.options = options.Value; this.db = db; this.shopDb = shopDb; this.printDbContext = printDbContext; this.wechatCoreDb = wechatCoreDb; this.proxyFactory = proxyFactory; this.thirdConfig = poptions.Value; _logger = loggerFactory.CreateLogger <WechatPayController>(); }
public SwiftpassPayForShopWechatOpenAPIController(IOptions <MemberAPIOptions> memberOptions //, FinanceDbContext db , IOptions <ThirdConfig> poptions , IOptions <WechatTemplateSendOptions> options , ShopDbContext shopDb , Core.Printer.Data.PrintDbContext printDbContext , PayProxyFactory proxyFactory , WechatCoreDbContext wechatCoreDb , MemberDbContext memberDb , ILoggerFactory loggerFactory , IHostingEnvironment hostingEnvironment) : base(memberOptions, memberDb, wechatCoreDb) { this.hostingEnvironment = hostingEnvironment; this.finaceDb = DbContextFactory.FinanceDbContext; this.options = options.Value; this.shopDb = shopDb; this.wechatCoreDb = wechatCoreDb; this.memberDb = memberDb; this.LogDbContext = DbContextFactory.LogDbContext; this.printDbContext = printDbContext; this.thirdConfig = poptions.Value; this._logger = loggerFactory.CreateLogger <SwiftpassPayForShopWechatOpenAPIController>(); this.proxyFactory = proxyFactory; }
/// <summary> /// 订单下单后进行的操作 /// </summary> static async void AfterOrderPlacing(PrintDbContext printDbContext, ShopDbContext db, ThirdConfig thirdConfig, ShopOrder shopOrder, string shopName, WechatTemplateSendOptions options, ILogger _logger) { //是否外卖单 if (shopOrder.IsTakeOut) { //var takeOutInfo = db.Query<ShopTakeOutInfo>() //.Where(m => !m.IsDel) //.Where(m => m.ShopId == shopOrder.ShopId) //.FirstOrDefault(); ////自动接单 //if (takeOutInfo!=null && takeOutInfo.AutoTakeOrdre) //{ // shopOrder.Status = ShopOrderStatus.已确认; // PrintOrder(printDbContext, db, shopOrder, shopName, _logger); //} PrintOrder(printDbContext, db, shopOrder, shopName, _logger); } else { PrintOrder(printDbContext, db, shopOrder, shopName, _logger); } if (!shopOrder.IsSend) { var receiver = db.Query <ShopOrderReceiver>() .Where(m => !m.IsDel) .Where(m => m.IsUsed) .Where(m => m.ShopId == shopOrder.ShopId) .Select(m => m.ReceiverOpenId) .Distinct() .ToList(); receiver.ForEach(o => shopOrder.SendTemplateMessage(db, options, o, _logger)); } shopOrder.IsSend = true; if (!shopOrder.ShopPartId.HasValue && !shopOrder.ShopOrderSelfHelpId.HasValue) { var shoptakeoutinfo = db.ShopTakeOutInfo.FirstOrDefault(r => r.ShopId == shopOrder.ShopId && !r.IsDel); var shopordertakeoutinfo = db.ShopOrderTakeouts.FirstOrDefault(r => r.ShopOrderId == shopOrder.Id && !r.IsDel); if (shoptakeoutinfo != null && shoptakeoutinfo.TakeDistributionType == TakeDistributionType.达达配送 && shopordertakeoutinfo.TakeWay == TakeWay.送货上门) { // await ThirdOrderFinish(db, thirdConfig, shopOrder, _logger, ExSource.支付成功); ThirdAfterOrder(db, thirdConfig, shopOrder, _logger); } } db.SaveChanges(); _logger.LogInformation("=================其他订单回调完成==============="); }
/// <summary> /// 设置拼团订单支付完成 /// </summary> /// <param name="printDbContext"></param> /// <param name="shopDb"></param> /// <param name="rechange"></param> /// <param name="options"></param> /// <param name="logger"></param> static void SetConglomerationOrderFinish(PrintDbContext printDbContext, ShopDbContext db, MemberTradeForRechange memberTradeForRechange, WechatTemplateSendOptions options, ILogger _logger) { var model = db.ConglomerationOrder.Find(memberTradeForRechange.ConglomerationOrderId); if (model.PayTime.HasValue) { return; } model.PayTime = DateTime.Now; model.Status = ShopOrderStatus.已支付; model.PayWay = "微信支付"; db.SaveChanges(); model.Payment = (int)memberTradeForRechange.TotalFee; var shopName = db.Query <Shop>() .Where(m => m.Id == model.ShopId) .Select(m => m.Name) .FirstOrDefault(); AfterConglomerationOrderPlacing(printDbContext, db, model, shopName, options, _logger); memberTradeForRechange.Status = MemberTradeForRechangeStatus.成功; db.SaveChanges(); }
/// <summary> /// 拼团支付成功之后操作 /// </summary> static void AfterConglomerationOrderPlacing(PrintDbContext printDbContext, ShopDbContext db, ConglomerationOrder conglomerationOrder, string shopName, WechatTemplateSendOptions options, ILogger _logger) { _logger.LogInformation("=================拼团订单回调开始==============="); var isExist = db.ConglomerationParticipation.FirstOrDefault(m => !m.IsDel && m.ConglomerationSetUpId.Equals(conglomerationOrder.ConglomerationSetUpId) && m.ConglomerationOrderId.Equals(conglomerationOrder.Id)); if (isExist != null) { return; } var conglomerationSetUp = db.ConglomerationSetUp.Find(conglomerationOrder.ConglomerationSetUpId); var member = db.Member.Find(conglomerationOrder.MemberId); //添加参团信息 ConglomerationParticipation conglomerationParticipation = new ConglomerationParticipation(); conglomerationParticipation.CreateTime = DateTime.Now; conglomerationParticipation.AvatarUrl = member.Avatar ?? ""; conglomerationParticipation.NickName = member.NickName ?? ""; conglomerationParticipation.ConglomerationSetUpId = conglomerationOrder.ConglomerationSetUpId; conglomerationParticipation.Role = conglomerationSetUp.MemberId.Equals(conglomerationOrder.MemberId) ? ParticipationRole.团长 : ParticipationRole.团员; conglomerationParticipation.MemberId = conglomerationOrder.MemberId; conglomerationParticipation.ConglomerationOrderId = conglomerationOrder.Id; conglomerationParticipation.ConglomerationActivityId = conglomerationOrder.ConglomerationActivityId; db.ConglomerationParticipation.Add(conglomerationParticipation); //更新已发起拼团的队伍状态 conglomerationSetUp.CurrentMemberNumber = conglomerationSetUp.CurrentMemberNumber + 1; conglomerationSetUp.Status = conglomerationSetUp.CurrentMemberNumber.Equals(conglomerationSetUp.MemberNumber) ? ConglomerationSetUpStatus.已经成团 : ConglomerationSetUpStatus.未成团; _logger.LogInformation($"当前拼团状态 conglomerationSetUp.Status:{conglomerationSetUp.Status}"); conglomerationOrder.Status = ShopOrderStatus.待成团; if (conglomerationSetUp.Status.Equals(ConglomerationSetUpStatus.已经成团)) { conglomerationSetUp.SuccessfulTime = DateTime.Now; _logger.LogInformation("=============================已经成团修改订单状态开始========================"); _logger.LogInformation($"团IDconglomerationOrder.ConglomerationSetUpId {conglomerationOrder.ConglomerationSetUpId}"); conglomerationOrder.Status = conglomerationOrder.Type == ConsignmentType.自提 ? ShopOrderStatus.待自提 : ShopOrderStatus.待配送; var order = db.ConglomerationOrder.Where(m => !m.IsDel && m.ConglomerationSetUpId.Equals(conglomerationOrder.ConglomerationSetUpId)).ToList(); _logger.LogInformation($"需更改订单状态数量{order.Count()}"); foreach (var item in order) { if (item.Type == ConsignmentType.自提) { _logger.LogInformation($"订单Id:{item.Id} 更改为执行待自提"); if (item.Status == ShopOrderStatus.待成团) { item.Status = ShopOrderStatus.待自提; } } else { if (item.Status == ShopOrderStatus.待成团) { _logger.LogInformation($"订单Id:{item.Id} 更改为执行待配送"); item.Status = ShopOrderStatus.待配送; } } } _logger.LogInformation("=============================已经成团修改订单状态结束========================"); } //发送推送 if (!conglomerationOrder.IsSend) { var receiver = db.Query <ShopOrderReceiver>() .Where(m => !m.IsDel) .Where(m => m.IsUsed) .Where(m => m.ShopId == conglomerationOrder.ShopId) .Select(m => m.ReceiverOpenId) .Distinct() .ToList(); receiver.ForEach(o => conglomerationOrder.SendTemplateMessage(options, o, _logger)); } conglomerationOrder.IsSend = true; db.SaveChanges(); _logger.LogInformation("=================拼团订单回调结束==============="); }
static void SetShopOrderFinish(PrintDbContext printDbContext, ShopDbContext db, MemberTradeForRechange memberTradeForRechange, WechatTemplateSendOptions options, ThirdConfig toptions, ILogger _logger) { if (!memberTradeForRechange.ShopOrderId.HasValue) { throw new Exception("memberTradeForRechange.ShopOrderId is null"); } var shopOrder = db.ShopOrders.FirstOrDefault(p => p.Id == memberTradeForRechange.ShopOrderId.Value); shopOrder.PayWay = "微信支付"; memberTradeForRechange.Status = MemberTradeForRechangeStatus.成功; db.SaveChanges(); OrderFinish(printDbContext, db, options, toptions, shopOrder, _logger); var shopName = db.Query <Shop>() .Where(m => m.Id == shopOrder.ShopId) .Select(m => m.Name) .FirstOrDefault(); AfterOrderPlacing(printDbContext, db, toptions, shopOrder, shopName, options, _logger); }
public static void SetFinish(this MemberTradeForRechange rechange, PrintDbContext printDbContext, ThirdConfig toptions, ShopDbContext shopDb, DbContext db, WechatTemplateSendOptions options, PayResponseBaseHandler result, ILogger _logger) { if (result.TradeState != "NOTPAY") { if (rechange.Status == MemberTradeForRechangeStatus.未完成) { if (rechange.TotalFee != result.TotalFee) { throw new Exception("指定的金额不对应"); } rechange.OutBank = result.Xml; rechange.MechanismTradeNo = result.TransactionId; switch (result.TradeState) { case "SUCCESS": db.SetMemberTradeForRechangeSuccess(rechange); if (rechange.OrderType == OrderType.充值订单) { SetShopMemberRechangeFinish(rechange, shopDb); } else { SetShopOrderFinish(printDbContext, shopDb, rechange, options, toptions, _logger); } break; case "CLOSED": rechange.Status = MemberTradeForRechangeStatus.取消; break; default: db.SetMemberTradeForRechangeFail(rechange, result.TradeState); break; } } } }
public static void SetFinish(this MemberTradeForRechange rechange, PrintDbContext printDbContext, ShopDbContext shopDb, DbContext db, WechatTemplateSendOptions options, ThirdConfig toptions, ILogger _logger) { if (rechange.ShopOrderId != 0) { if (rechange.OrderType == OrderType.充值订单) { SetShopMemberRechangeFinish(rechange, shopDb); } else { SetShopOrderFinish(printDbContext, shopDb, rechange, options, toptions, _logger); } } if (rechange.ConglomerationOrderId != 0) { _logger.LogInformation("进入回调,拼团订单"); try { SetConglomerationOrderFinish(printDbContext, shopDb, rechange, options, _logger); } catch (Exception e) { _logger.LogInformation($"回调错误,错误信息:{ e}"); throw; } } }
/// <summary> /// 拼团订单推送 /// </summary> /// <param name="shopOrder"></param> /// <param name="wechatOptions"></param> /// <param name="receiverOpenId"></param> /// <param name="logger"></param> /// <returns></returns> static bool SendTemplateMessage(this ConglomerationOrder conglomerationOrder, WechatTemplateSendOptions wechatOptions, string receiverOpenId, ILogger logger) { logger.LogInformation($"推送拼团订单conglomerationOrderId:{conglomerationOrder.Id}"); try { if (string.IsNullOrEmpty(receiverOpenId)) { return(false); } string accessToken = AccessTokenContainer.GetAccessTokenResult(wechatOptions.AppId).access_token; //logger.LogInformation("推送的accesstoken:{0}", accessToken); string url = wechatOptions.SendUrl + accessToken; TemplateData data = new TemplateData(); #region 订单参数 string remark = ""; data.Add("first", new TemplateDataItem() { value = "您好,您有新的支付订单请及时处理!", color = TemplateSendColor }); data.Add("keyword1", new TemplateDataItem() { value = conglomerationOrder.OrderNumber.ToString(), color = TemplateSendColor }); data.Add("keyword2", new TemplateDataItem() { value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), color = TemplateSendColor }); data.Add("remark", new TemplateDataItem() { value = remark, color = TemplateSendColor }); #endregion string detailUrl = $"http://manager.91huichihuihe.com//api/ShopOrderSetAPI/Manager/GetConglomerationOrderView?orderid={conglomerationOrder.Id}&openid={receiverOpenId}"; ShopOrderTemplateModel templateModel = new ShopOrderTemplateModel() { touser = receiverOpenId, template_id = wechatOptions.ServiceTemplateId, url = detailUrl, data = data }; JsonSerializer jsonSerializer = new JsonSerializer(); var responseWait = httpClient.PostAsync(url, new StringContent(JsonConvert.SerializeObject(templateModel))); responseWait.Wait(); var response = responseWait.Result; if (response.IsSuccessStatusCode) { var reContentWait = response.Content.ReadAsStringAsync(); reContentWait.Wait(); var reContent = reContentWait.Result; if (JObject.Parse(reContent).TryGetValue("errcode", out JToken errcode)) { if (errcode.Value <int>() == 0) { conglomerationOrder.IsSend = true; } else { conglomerationOrder.IsSend = false; } } else { conglomerationOrder.IsSend = false; } return(true); } else { var reContentWait = response.Content.ReadAsStringAsync(); reContentWait.Wait(); var reContent = reContentWait.Result; logger.LogInformation("模板消息出错:{0}", reContent); return(false); } } catch (Exception e) { logger.LogInformation("模板消息出错:{0}", e.Message); return(false); } }
static bool SendTemplateMessage(this ShopOrder shopOrder, ShopDbContext db, WechatTemplateSendOptions wechatOptions, string receiverOpenId, ILogger logger) { //logger.LogInformation("推送订单订单shopOrderId:{0}", shopOrder.Id); try { if (string.IsNullOrEmpty(receiverOpenId)) { return(false); } string accessToken = AccessTokenContainer.GetAccessTokenResult(wechatOptions.AppId).access_token; //logger.LogInformation("推送的accesstoken:{0}", accessToken); string url = wechatOptions.SendUrl + accessToken; TemplateData data = new TemplateData(); string templateId; string remark = shopOrder.Remark ?? ""; if (shopOrder.IsTakeOut) { var takeOutInfo = db.Query <ShopOrderTakeout>().FirstOrDefault(m => m.ShopOrderId == shopOrder.Id); MemberAddress address = null; if (takeOutInfo != null && takeOutInfo.TakeWay == TakeWay.送货上门) { address = db.Query <MemberAddress>().FirstOrDefault(m => m.MemberId == shopOrder.MemberId); } templateId = wechatOptions.TakeOutTemplateId; string customInfo = "", customAddress = ""; if (address != null) { customInfo = $"{address.Name}{address.Sex}({address.Phone})"; customAddress = $"{address.Area}{address.Detail}"; } else { customInfo = "自提"; customAddress = "自提"; } #region 订单参数 data.Add("first", new TemplateDataItem() { value = $"收到新的外卖订单!({DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")})", color = TemplateSendColor }); data.Add("keyword1", new TemplateDataItem() { value = shopOrder.OrderNumber, color = TemplateSendColor }); data.Add("keyword2", new TemplateDataItem() { value = db.GetSingle <Shop>(shopOrder.ShopId).Name, color = TemplateSendColor }); data.Add("keyword3", new TemplateDataItem() { value = customInfo, color = TemplateSendColor }); data.Add("keyword4", new TemplateDataItem() { value = customAddress, color = TemplateSendColor }); data.Add("keyword5", new TemplateDataItem() { value = $"¥{(shopOrder.Payment ?? 0) / 100f}", color = TemplateSendColor }); data.Add("remark", new TemplateDataItem() { value = remark, color = TemplateSendColor }); #endregion } else { templateId = wechatOptions.ServiceTemplateId; #region 订单参数 data.Add("first", new TemplateDataItem() { value = "您好,您有新的支付订单请及时处理!", color = TemplateSendColor }); data.Add("keyword1", new TemplateDataItem() { value = shopOrder.OrderNumber.ToString(), color = TemplateSendColor }); data.Add("keyword2", new TemplateDataItem() { value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), color = TemplateSendColor }); data.Add("remark", new TemplateDataItem() { value = remark, color = TemplateSendColor }); #endregion } string detailUrl = $"http://manager.91huichihuihe.com/api/ShopOrderSetAPI/Manager/GetShopOrderView?orderid={shopOrder.Id}&openid={receiverOpenId}"; ShopOrderTemplateModel templateModel = new ShopOrderTemplateModel() { touser = receiverOpenId, template_id = templateId, url = detailUrl, data = data }; JsonSerializer jsonSerializer = new JsonSerializer(); var responseWait = httpClient.PostAsync(url, new StringContent(JsonConvert.SerializeObject(templateModel))); responseWait.Wait(); var response = responseWait.Result; if (response.IsSuccessStatusCode) { var reContentWait = response.Content.ReadAsStringAsync(); reContentWait.Wait(); var reContent = reContentWait.Result; //if (JObject.Parse(reContent).TryGetValue("errcode", out JToken errcode)) //{ // if (errcode.Value<int>() == 0) // { // shopOrder.IsSend = true; // } // else // { // shopOrder.IsSend = false; // } //} //else //{ // shopOrder.IsSend = false; //} return(true); } else { var reContentWait = response.Content.ReadAsStringAsync(); reContentWait.Wait(); var reContent = reContentWait.Result; logger.LogInformation("模板消息出错:{0}", reContent); return(false); } } catch (Exception e) { logger.LogInformation("模板消息出错:{0}", e.Message); return(false); } }