Пример #1
0
        public async Task CreateFileUploadTest()
        {
            var apiClientMock = new Mock <IApiClient>();
            var signMock      = new Mock <ISignService>();
            var configMock    = new Mock <IConfigurationProvider>();

            configMock.Setup <string>(x => x.GetUploadsUrl()).Returns("https://example2.com");
            SecurionPayGateway gateway = new SecurionPayGateway(apiClientMock.Object, configMock.Object, signMock.Object);

            var request = new FileUploadRequest()
            {
                File = new byte[1] {
                    233
                },
                FileName = "test.jpg",
                Purpose  = SecurionPay.Enums.FileUploadPurpose.DisputeEvidence
            };

            await gateway.CreateFileUpload(request);

            apiClientMock.Verify <Task <FileUpload> >(api => api.SendMultiPartRequest <FileUpload>(
                                                          It.Is <HttpMethod>(method => method == HttpMethod.Post),
                                                          It.Is <string>(action => action == configMock.Object.GetUploadsUrl() + "/files"),
                                                          It.Is <Dictionary <string, string> >(dictionary => dictionary.Any(p => p.Key == "purpose" && p.Value == "dispute_evidence")),
                                                          It.Is <byte[]>(array => array[0] == 233),
                                                          It.Is <string>(f => f == "test.jpg"))
                                                      , Times.Once);
        }
Пример #2
0
        public IntegrationTest()
        {
            var configProvider = new TestConfigurationProvider();
            var mimeMapper     = new FileExtensionToMimeMapper();
            var httpClient     = new HttpClient();
            var apiClient      = new ApiClient(httpClient, configProvider, mimeMapper);
            var signService    = new SignService(configProvider);

            _gateway = new SecurionPayGateway(apiClient, configProvider, signService);
        }
Пример #3
0
        public async Task TestMethod <TResponseType>(Func <SecurionPayGateway, Task> methodToTest, RequestDescriptor expectedRequest)
        {
            var apiClientMock = new Mock <IApiClient>();
            var signMock      = new Mock <ISignService>();
            var configMock    = new Mock <IConfigurationProvider>();

            configMock.Setup <string>(x => x.GetApiUrl()).Returns("https://example.com");
            configMock.Setup <string>(x => x.GetUploadsUrl()).Returns("https://example2.com");
            SecurionPayGateway gateway = new SecurionPayGateway(apiClientMock.Object, configMock.Object, signMock.Object);

            try
            {
                await methodToTest(gateway);
            }
            catch { }
            var endpoint = expectedRequest.UseUploadEndpoint ? configMock.Object.GetUploadsUrl()  : configMock.Object.GetApiUrl();

            apiClientMock.Verify <Task <TResponseType> >(api => api.SendRequest <TResponseType>(It.Is <HttpMethod>(method => method == expectedRequest.Method), It.Is <string>(action => action == endpoint + "/" + expectedRequest.Action), It.Is <object>(obj => obj == expectedRequest.Parameter)), Times.Once);
        }
Пример #4
0
        public void TestCheckoutRequest()
        {
            var signServiceMock = new Mock <ISignService>();

            signServiceMock.Setup(service => service.Sign(It.IsAny <string>())).Returns("cf9ce2d8331c531f8389a616a18f9578c134b784dab5cb7e4b5964e7790f173c");
            var gateway         = new SecurionPayGateway(new Mock <IApiClient>().Object, new Mock <IConfigurationProvider>().Object, signServiceMock.Object);
            var checkoutRequest = new CheckoutRequest()
            {
                Charge = new CheckoutRequestCharge()
                {
                    Amount   = 499,
                    Currency = "EUR"
                }
            };
            var signedCheckout = gateway.SignCheckoutRequest(checkoutRequest);

            signServiceMock.Verify(service => service.Sign(It.Is <string>(x => x == "{\"charge\":{\"amount\":499,\"currency\":\"EUR\"}}")));
            Assert.AreEqual("Y2Y5Y2UyZDgzMzFjNTMxZjgzODlhNjE2YTE4Zjk1NzhjMTM0Yjc4NGRhYjVjYjdlNGI1OTY0ZTc3OTBmMTczY3x7ImNoYXJnZSI6eyJhbW91bnQiOjQ5OSwiY3VycmVuY3kiOiJFVVIifX0=", signedCheckout);
        }
Пример #5
0
        public async Task <ActionResult> PagarCita(Tarjeta tarjeta)
        {
            var    CookCitaID = ControllerContext.HttpContext.Request.Cookies["IDCita"];
            string CitaID     = CookCitaID.Value;

            CookCitaID.Expires = DateTime.Now.AddDays(-1D);

            var    CookPsicologoID = ControllerContext.HttpContext.Request.Cookies["IDPsicologo"];
            string PsicologoID     = CookPsicologoID.Value;

            CookPsicologoID.Expires = DateTime.Now.AddDays(-1D);

            Pago pago = new Pago
            {
                PagoMonto = tarjeta.MT,
                PagoFecha = DateTime.Now,
                Paciente  = new Paciente {
                    PacienteID = SessionHelper.GetNameIdentifier(User)
                },
                Cita = new Cita {
                    CitaID = CitaID
                },
                Psicologo = new Psicologo {
                    PsicologoID = PsicologoID
                }
            };

            SecurionPayGateway gateway = new SecurionPayGateway("sk_test_MZm7slzOHYNJsvQ0yQjHaYwS");

            int           montoPago = (int)(tarjeta.MT * 100);
            ChargeRequest request   = new ChargeRequest()
            {
                Amount   = montoPago,
                Currency = "PEN",
                Card     = new CardRequest()
                {
                    CustomerId = SessionHelper.GetEmail(User),
                    Number     = tarjeta.CN,
                    ExpMonth   = tarjeta.NM.ToString(),
                    ExpYear    = tarjeta.NY.ToString(),
                    Cvc        = tarjeta.CV.ToString()
                }
            };

            try
            {
                Charge charge = await gateway.CreateCharge(request);

                // do something with charge object - see https://securionpay.com/docs/api#charge-object
                string chargeId = charge.Id;

                client = new FireSharp.FirebaseClient(config);
                //Crear codigo y cita
                PushResponse response = client.Push("Pago/", pago);
                pago.PagoID = response.Result.name;
                //Enviar datos de Cita a DB
                SetResponse setResponse = client.Set("Pago/" + pago.PagoID, pago);

                return(RedirectToAction("SolicitarCita", "Cita", new { CitaID }));
            }
            catch (SecurionPayException e)
            {
                // handle error response - see https://securionpay.com/docs/api#error-object
                ErrorType errorType    = e.Error.Type;
                ErrorCode?errorCode    = e.Error.Code;
                string    errorMessage = e.Error.Message;
            }
            return(RedirectToAction("CancelarPago", "Cita"));
        }