コード例 #1
0
        public async Task <PaymentManagerBeginPaymentResponse> BeginPaymentAsync(BeginPaymentRequest request, System.Threading.CancellationToken cancellation)
        {
            Logger.LogCategory("BeginPaymentAsync");
            Logger.Log(new { Request = request });

            var result    = new PaymentManagerBeginPaymentResponse();
            var _provider = _providerFactory.GetProvider(request.BankType);

            if (_provider != null)
            {
                var providerResponse = _provider.BeginPayment(request);

                Logger.Log(new { ProviderResponse = providerResponse });

                result = await SaveBeginPaymentAsync(request, providerResponse, cancellation);
            }
            else
            {
                result.Status = "InvalidBank";
            }

            Logger.Log("Result = " + result.Status);

            return(result);
        }
コード例 #2
0
        public PaymentManagerBeginPaymentResponse BeginPayment(BeginPaymentRequest request)
        {
            Logger.LogCategory("BeginPayment");
            Logger.Log(new { Request = request });

            var result    = new PaymentManagerBeginPaymentResponse();
            var _provider = _providerFactory.GetProvider(request.BankType);

            if (_provider != null)
            {
                var providerResponse = _provider.BeginPayment(request);

                Logger.Log(new { ProviderResponse = providerResponse });

                result = SaveBeginPayment(request, providerResponse);
            }
            else
            {
                result.Status = "InvalidBank";
            }

            Logger.Log("Result = " + result.Status);

            return(result);
        }
コード例 #3
0
        private PaymentManagerBeginPaymentResponse SaveBeginPayment(BeginPaymentRequest request, PaymentProviderBeginPaymentResponse providerResponse)
        {
            var result = new PaymentManagerBeginPaymentResponse();

            result.Request          = request;
            result.ProviderResponse = providerResponse;

            var dbOk = false;

            Logger.LogCategory("SaveBeginPayment");

            if (providerResponse.Succeeded || !Config.SaveOnlySuccessfulOperations)
            {
                Logger.Log("Start saving in the database");

                var args = new
                {
                    Result        = CommandParameter.Output(SqlDbType.VarChar, 50),
                    PaymentId     = CommandParameter.Output(SqlDbType.Int),
                    PaymentCode   = request.PaymentCode,
                    BankType      = request.BankType,
                    Amount        = request.Amount,
                    Info          = request.Info,
                    Data          = request.Data,
                    StepCode      = SafeClrConvert.ToString(providerResponse.Code),
                    StepStatus    = SafeClrConvert.ToString(providerResponse.Status),
                    StepDate      = providerResponse.Date,
                    StepSucceeded = providerResponse.Succeeded,
                    @StepData     = ""
                };
                var cmd = _db.GetCommand("usp1_Payment_save_begin_step");

                result.DbResult = _db.ExecuteNonQuery(cmd, args);

                if (result.DbResult.Success)
                {
                    Logger.Log("DbStatus = " + result.Status);

                    dbOk = result.Status == "Success";

                    if (dbOk)
                    {
                        result.Status = args.Result.Value.ToString();
                        result.Data   = result.DbResult.Data = (int)args.PaymentId.Value;
                    }
                    else
                    {
                        result.Status = "SaveError";
                    }
                }
                else
                {
                    Logger.Log("Failed: " + result.DbResult.Exception.ToString(","));

                    result.Failed(result.DbResult.Exception);
                }
            }
            else
            {
                dbOk = true;
            }

            if (providerResponse.Succeeded && dbOk)
            {
                result.Succeeded();
            }

            return(result);
        }