Exemplo n.º 1
0
        public static async Task <PaymentRequestResult> CreateRequestResult(
            HttpResponseMessage responseMessage,
            HttpContext httpContext,
            YekPayGatewayAccount account,
            YekPayGatewayOptions gatewayOptions,
            MessagesOptions optionsMessages)
        {
            var message = await responseMessage.Content.ReadAsStringAsync();

            var response = JsonConvert.DeserializeObject <YekPayResponseModel>(message);

            if (response == null)
            {
                return(PaymentRequestResult.Failed(optionsMessages.InvalidDataReceivedFromGateway, account.Name));
            }

            if (response.Code != SuccessCode)
            {
                var failureMessage = response.Description ?? optionsMessages.UnexpectedErrorText;

                return(PaymentRequestResult.Failed(failureMessage, account.Name));
            }

            var paymentPageUrl = gatewayOptions.PaymentPageUrl + response.Authority;

            var result = PaymentRequestResult.SucceedWithRedirect(account.Name, httpContext, paymentPageUrl);

            result.DatabaseAdditionalData.Add(AuthorityAdditionalDataKey, response.Authority);

            return(result);
        }
Exemplo n.º 2
0
        public static YekPayRequestModel CreateRequestData(Invoice invoice, YekPayGatewayAccount account)
        {
            var yekPayRequest = invoice.GetYekPayRequest();

            if (yekPayRequest == null)
            {
                throw new Exception("YekPayRequest object not found. Make sure that you are using the UseYekPay method.");
            }

            return(new YekPayRequestModel
            {
                MerchantId = account.MerchantId,
                Amount = invoice.Amount,
                FromCurrencyCode = yekPayRequest.FromCurrencyCode,
                ToCurrencyCode = yekPayRequest.ToCurrencyCode,
                OrderNumber = invoice.TrackingNumber,
                Callback = invoice.CallbackUrl,
                FirstName = yekPayRequest.FirstName,
                LastName = yekPayRequest.LastName,
                Email = yekPayRequest.Email,
                Mobile = yekPayRequest.Mobile,
                Address = yekPayRequest.Address,
                PostalCode = yekPayRequest.PostalCode,
                Country = yekPayRequest.Country,
                City = yekPayRequest.City,
                Description = yekPayRequest.Description
            });
        }
Exemplo n.º 3
0
        public static YekPayVerificationRequestModel CreateVerifyData(
            IEnumerable <Transaction> transactions,
            YekPayGatewayAccount account)
        {
            var transactionRecord = transactions.SingleOrDefault(transaction => transaction.Type == TransactionType.Request);

            if (transactionRecord == null)
            {
                throw new Exception("Cannot find any transaction with the type \"Request\"");
            }

            var additionalData = JsonConvert.DeserializeObject <IDictionary <string, string> >(transactionRecord.AdditionalData);

            if (!additionalData.ContainsKey(AuthorityAdditionalDataKey))
            {
                throw new Exception("Cannot find the Authority.");
            }

            return(new YekPayVerificationRequestModel
            {
                MerchantId = account.MerchantId,
                Authority = additionalData[AuthorityAdditionalDataKey]
            });
        }