Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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();
                }
            }
        }
Exemplo n.º 3
0
 /// <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)
 {
 }
Exemplo n.º 6
0
 /// <summary>
 /// 初始化支付事件数据的基类
 /// </summary>
 /// <param name="gateway">支付网关</param>
 protected PaymentEventArgs(DGateway gateway)
 {
     _gateway = gateway;
     _notifyServerHostAddress = AcbHttpContext.RemoteIpAddress;
 }