/*********************************************************************** * Project: CoreCms * ProjectName: 核心内容管理系统 * Web: https://www.corecms.net * Author: 大灰灰 * Email: jianweie@163.com * CreateTime: 2021/7/10 22:41:46 * Description: 暂无 ***********************************************************************/ using System; using System.Threading.Tasks; using CoreCms.Net.Caching.AccressToken; using CoreCms.Net.Configuration; using CoreCms.Net.IServices; using CoreCms.Net.Loging; using CoreCms.Net.Model.Entities; using CoreCms.Net.WeChat.Service.HttpClients; using InitQ.Abstractions; using InitQ.Attributes; using Newtonsoft.Json; using SKIT.FlurlHttpClient.Wechat.Api; using SKIT.FlurlHttpClient.Wechat.Api.Models; namespace CoreCms.Net.RedisMQ { /// /// 自定义交易组件-同步订单状态(弃用,新版已经取消了同步) /// public class TCPayOrderSyncSubscribe : IRedisSubscribe { private readonly ICoreCmsUserWeChatInfoServices _userWeChatInfoServices; private readonly WeChat.Service.HttpClients.IWeChatApiHttpClientFactory _weChatApiHttpClientFactory; public TCPayOrderSyncSubscribe(ICoreCmsUserWeChatInfoServices userWeChatInfoServices, IWeChatApiHttpClientFactory weChatApiHttpClientFactory) { _userWeChatInfoServices = userWeChatInfoServices; _weChatApiHttpClientFactory = weChatApiHttpClientFactory; } /// /// 自定义交易组件-同步订单状态 /// /// /// [Subscribe(RedisMessageQueueKey.TransactionComponentPayOrderSync)] private async Task TransactionComponentPayOrderSync(string msg) { try { var orderModel = JsonConvert.DeserializeObject(msg); if (orderModel is { scene: > 0 }) { //获取小程序认证 var accessToken = WeChatCacheAccessTokenHelper.GetWxOpenAccessToken(); var client = _weChatApiHttpClientFactory.CreateWxOpenClient(); var userInfo = await _userWeChatInfoServices.QueryByClauseAsync(p => p.userId == orderModel.userId); if (userInfo != null) { var payment = orderModel.paymentItem[0]; //获取同步地址接口地址 var request = new ShopOrderPayRequest(); request.AccessToken = accessToken; request.OutOrderId = orderModel.orderId; request.OpenId = userInfo.openid; request.ActionType = 1; request.TransactionId = payment.tradeNo; request.PayTime = payment.createTime; var response = await client.ExecuteShopOrderPayAsync(request); NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "自定义交易组件-同步订单状态", JsonConvert.SerializeObject(response)); } else { NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "自定义交易组件-同步订单状态", "微信用户数据获取失败"); } } else { NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "自定义交易组件-同步订单状态", "商品获取失败"); } } catch (Exception ex) { NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "自定义交易组件-同步订单状态", msg, ex); throw; } await Task.CompletedTask; } } }