public async Task AddWeChatPaymentNotifyMessage(WeChatPaymentNotifyMessageDTO model) { var orderDTO = await _orderServiceProxy.GetByOrderNo(model.OutTradeNo); if (orderDTO == null) { return; } var organizationId = ""; IGateway gateway = null; organizationId = orderDTO.OrganizationId ?? ""; WeChatAppConfiguration appConfig = null; if (!string.IsNullOrEmpty(organizationId)) { appConfig = _wechatAppConfigurationRepository.GetFiltered(o => o.OrganizationId == organizationId).FirstOrDefault(); } if (appConfig != null) { var wechatpayMerchant = new Merchant { AppId = appConfig.AppId, MchId = appConfig.MchId, Key = appConfig.Key, AppSecret = appConfig.AppSecret, SslCertPath = appConfig.SslCertPath, SslCertPassword = appConfig.SslCertPassword, NotifyUrl = appConfig.NotifyUrl }; gateway = new WechatpayGateway(wechatpayMerchant); } else { gateway = _gateways.Get <WechatpayGateway>(); } var key = ((WechatpayGateway)(gateway)).Merchant.Key; //if (model.Sign.ToUpper() != model.ToSign(key).ToUpper()) return; _wechatPaymentNotifyMessageRepository.Add(new WeChatPaymentNotifyMessage { CreatedOn = DateTime.Now, NotifyApiName = "AddWeChatPaymentNotifyMessage", MessageContent = JsonConvert.SerializeObject(model) }); _dbUnitOfWork.Commit(); }
public async Task <string> GetOpenId(string code, string organizationId = null) { WeChatOpenIdResponseDTO result = null; BaseGateway gateway = null; if (string.IsNullOrEmpty(organizationId)) { gateway = _gateways.Get <WechatpayGateway>(); } else { WeChatAppConfiguration appConfig = _wechatAppConfigurationRepository.GetFiltered(o => o.OrganizationId == organizationId).FirstOrDefault(); if (appConfig != null) { var wechatpayMerchant = new PaySharp.Wechatpay.Merchant { AppId = appConfig.AppId, MchId = appConfig.MchId, Key = appConfig.Key, AppSecret = appConfig.AppSecret, SslCertPath = appConfig.SslCertPath, SslCertPassword = appConfig.SslCertPassword, NotifyUrl = appConfig.NotifyUrl }; gateway = new WechatpayGateway(wechatpayMerchant); } else { gateway = _gateways.Get <WechatpayGateway>(); } } var reqModel = new WeChatOpenIdRequestDTO { AppId = gateway.Merchant.AppId, Code = code, Secret = _configuration.WeChatAppSecret }; result = await _wechatApiProxy.CheckAuthCode(reqModel); //TODO:验签 return(result?.OpenId ?? string.Empty); }
public async Task <OpenIDSessionKeyDTO> GetSessionKey(string code, string organizationId = null, string applicationId = null) { WeChatOpenIdResponseDTO result = null; BaseGateway gateway = null; if (string.IsNullOrEmpty(organizationId)) { gateway = _gateways.Get <WechatpayGateway>(); } else { WeChatAppConfiguration appConfig = _wechatAppConfigurationRepository.GetFiltered(o => o.OrganizationId == organizationId).FirstOrDefault(); if (appConfig != null) { var wechatpayMerchant = new PaySharp.Wechatpay.Merchant { AppId = appConfig.AppId, MchId = appConfig.MchId, Key = appConfig.Key, AppSecret = appConfig.AppSecret, SslCertPath = appConfig.SslCertPath, SslCertPassword = appConfig.SslCertPassword, NotifyUrl = appConfig.NotifyUrl }; gateway = new WechatpayGateway(wechatpayMerchant); } else { gateway = _gateways.Get <WechatpayGateway>(); } } var reqModel = new WeChatOpenIdRequestDTO { AppId = gateway.Merchant.AppId, Code = code, Secret = _configuration.WeChatAppSecret }; result = await _wechatApiProxy.CheckAuthCode(reqModel); //TODO:验签 AppletUserSessionDTO dto = null; if (result != null) { await _authServiceProxy.AddOrUpdateAppletUser(new AppletUserDTO { ApplicationId = applicationId, Channel = UserChannel.WeChat, NickName = "", OpenId = result.OpenId, OrganizationId = organizationId, UserId = "", UserPortrait = "" }); dto = await _authServiceProxy.AddOrUpdateAppletUserSession(new AppletUserSessionDTO { UserId = "", OpenId = result.OpenId, SessionKey = result.SessionKey }); } return(new OpenIDSessionKeyDTO { GooiosSessionKey = dto.GooiosSessionKey, OpenId = dto.OpenId }); }
public async Task SyncOrderStatus(string orderId) { var orderDTO = await _orderServiceProxy.GetById(orderId); if (orderDTO == null) { return; } BaseGateway gateway = null; if (string.IsNullOrEmpty(orderDTO.OrganizationId)) { gateway = _gateways.Get <WechatpayGateway>(); } else { WeChatAppConfiguration appConfig = _wechatAppConfigurationRepository.GetFiltered(o => o.OrganizationId == orderDTO.OrganizationId).FirstOrDefault(); if (appConfig != null) { var wechatpayMerchant = new PaySharp.Wechatpay.Merchant { AppId = appConfig.AppId, MchId = appConfig.MchId, Key = appConfig.Key, AppSecret = appConfig.AppSecret, SslCertPath = appConfig.SslCertPath, SslCertPassword = appConfig.SslCertPassword, NotifyUrl = appConfig.NotifyUrl }; gateway = new WechatpayGateway(wechatpayMerchant); } else { gateway = _gateways.Get <WechatpayGateway>(); } } var request = new QueryRequest(); request.AddGatewayData(new QueryModel() { OutTradeNo = orderDTO.OrderNo }); var response = gateway.Execute(request); if (response.ReturnCode == "SUCCESS") { if (response.ResultCode == "SUCCESS") { if (response.TradeState == TradeState.SUCCESS.ToString()) { await _orderServiceProxy.SetOrderPaidSuccessed(orderId); } if (response.TradeState == TradeState.REVOKED.ToString() || response.TradeState == TradeState.CLOSED.ToString()) { await _orderServiceProxy.SetOrderPaidFailed(orderId); } } } }
public async Task <RequestPaymentResponseDTO> RequestPayment(RequestPaymentRequestDTO model) { var orderDTO = await _orderServiceProxy.GetById(model.OrderId); if (orderDTO == null) { return(null); } var request = new AppletPayRequest(); var body = ""; var orgStr = (orderDTO.OrderItems.FirstOrDefault()?.Title ?? "-"); if (orgStr.Length > 20) { body = orgStr.Substring(0, 20); } else { body = orgStr; } request.AddGatewayData(new AppletPayModel() { Body = body, OutTradeNo = orderDTO.OrderNo, TotalAmount = (int)(orderDTO.PayAmount * 100), OpenId = model.OpenId }); IGateway gateway = null; var organizationId = ""; organizationId = orderDTO.OrganizationId ?? ""; WeChatAppConfiguration appConfig = null; if (!string.IsNullOrEmpty(organizationId)) { appConfig = _wechatAppConfigurationRepository.GetFiltered(o => o.OrganizationId == organizationId).FirstOrDefault(); } if (appConfig != null) { var wechatpayMerchant = new PaySharp.Wechatpay.Merchant { AppId = appConfig.AppId, MchId = appConfig.MchId, Key = appConfig.Key, AppSecret = appConfig.AppSecret, SslCertPath = appConfig.SslCertPath, SslCertPassword = appConfig.SslCertPassword, NotifyUrl = appConfig.NotifyUrl }; gateway = new WechatpayGateway(wechatpayMerchant); } else { gateway = _gateways.Get <WechatpayGateway>(); } var response = gateway.Execute(request); var ns = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 20); var ts = GetTimeStamp(); var pkg = $"prepay_id={response?.PrepayId}"; var sign = GetSign(((WechatpayGateway)gateway).Merchant.AppId, ns, response?.PrepayId, ts.ToString(), ((WechatpayGateway)gateway).Merchant.Key); var result = new RequestPaymentResponseDTO { NonceStr = ns, Package = pkg, PaySign = sign, TimeStamp = ts.ToString() }; return(result); }