Пример #1
0
        public ActionResult <RedsysRequest> Get(string orderNumber, [FromServices] Secret secret)
        {
            PaymentRequestService paymentRequestService = new PaymentRequestService();

            PaymentRequest paymentRequest = new PaymentRequest(
                Ds_Merchant_ConsumerLanguage: Language.Spanish,
                Ds_Merchant_MerchantCode: "335088258",
                Ds_Merchant_Terminal: "1",
                Ds_Merchant_TransactionType:  TransactionType.Authorisation,
                Ds_Merchant_Amount: 123,
                Ds_Merchant_Currency: Currency.EUR,
                Ds_Merchant_Order: orderNumber,
                Ds_Merchant_MerchantURL: Url.Action("Index", "Response", null, Request.Scheme),
                Ds_Merchant_UrlOK: $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}/Ok",
                Ds_Merchant_UrlKO: $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}/Ko")
            {
                Ds_Merchant_Paymethods = PaymentMethod.CreditCard
            };

            PaymentFormData formData = paymentRequestService.GetPaymentRequestFormData(
                paymentRequest: paymentRequest,
                merchantKey: secret.Key);

            RedsysRequest redsysRequest = new RedsysRequest {
                ConnectionUrl = secret.Url, Request = formData
            };

            return(Ok(redsysRequest));
        }
        public PaymentFormData GetPaymentRequestFormData(PaymentRequest paymentRequest, string merchantKey)
        {
            PaymentFormData result = new PaymentFormData();

            result.Ds_SignatureVersion   = "HMAC_SHA256_V1";
            result.Ds_MerchantParameters = merchantParamentersManager.GetMerchantParameters(paymentRequest);
            result.Ds_Signature          = signatureManager.GetSignature(result.Ds_MerchantParameters, paymentRequest.Ds_Merchant_Order, merchantKey);

            return(result);
        }
        public async Task <IActionResult> Post([FromBody] PaymentFormData formData)
        {
            if (!_paymentService.ProcessPayment(formData.Token, PaymentService.DepositAmount))
            {
                return(BadRequest());
            }

            await _accountService.UpdateUserBalance(PaymentService.DepositAmount);

            var updatedAccountInfo = await _accountService.GetUserAccountInfo();

            return(Ok(updatedAccountInfo));
        }
Пример #4
0
        public async Task <IActionResult> ProcessPayment(PaymentFormData formData)
        {
            if (paymentService.ProcessPayment(formData.Token))
            {
                await accountManager.AddUserToPremiumGroup(HttpContext.User.Identity);

                return(Redirect("Index"));
            }
            else
            {
                //TODO: Handle errors
                return(Redirect("Error"));
            }
        }