private DGateway GetGateway() { var gatewayData = ReadNotifyData(); _logger.Info($"orginal:{gatewayData.OriginalData}"); _logger.Info($"json:{gatewayData.ToJson()}"); DGateway gateway = null; foreach (var item in _gateways.GetList()) { if (ExistParameter(item.NotifyVerifyParameter, gatewayData)) { if (item.Merchant.AppId == gatewayData .GetValue <string>(item.NotifyVerifyParameter.FirstOrDefault())) { gateway = item; break; } } } if (gateway is null) { gateway = new NullGateway(); } gateway.GatewayData = gatewayData; return(gateway); }
/// <summary> /// 接收并验证网关的支付通知 /// </summary> public async Task ReceivedAsync() { DGateway gateway = GetGateway(); if (gateway is NullGateway) { OnUnknownGateway(new PaymentUnknowEventArgs(gateway)); } else { try { if (await gateway.ValidateNotifyAsync()) { OnPaymentSucceed(new PaymentSucceedEventArgs(gateway)); gateway.WriteSuccessFlag(); } else { OnPaymentFailed(new PaymentFailedEventArgs(gateway)); gateway.WriteFailureFlag(); } } catch (BusiException ex) { OnPaymentFailed(new PaymentFailedEventArgs(gateway) { Message = ex.Message }); gateway.WriteFailureFlag(); } } }
/// <summary> /// 初始化支付失败网关事件数据 /// </summary> /// <param name="gateway">支付网关</param> public PaymentFailedEventArgs(DGateway gateway) : base(gateway) { }
/// <summary> /// 初始化支付成功网关事件数据 /// </summary> /// <param name="gateway">支付网关</param> public PaymentSucceedEventArgs(DGateway gateway) : base(gateway) { }
public PaymentUnknowEventArgs(DGateway gateway) : base(gateway) { }
/// <summary> /// 初始化支付事件数据的基类 /// </summary> /// <param name="gateway">支付网关</param> protected PaymentEventArgs(DGateway gateway) { _gateway = gateway; _notifyServerHostAddress = AcbHttpContext.RemoteIpAddress; }