Search in sources :

Example 1 with DeclinedPaymentException

use of com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException in project connect-sdk-java by Ingenico-ePayments.

the class CreatePaymentExample method example.

@SuppressWarnings("unused")
public void example() throws URISyntaxException, IOException {
    Client client = getClient();
    try {
        Card card = new Card();
        card.setCardNumber("4567350000427977");
        card.setCardholderName("Wile E. Coyote");
        card.setCvv("123");
        card.setExpiryDate("1220");
        CardPaymentMethodSpecificInput cardPaymentMethodSpecificInput = new CardPaymentMethodSpecificInput();
        cardPaymentMethodSpecificInput.setCard(card);
        cardPaymentMethodSpecificInput.setPaymentProductId(1);
        cardPaymentMethodSpecificInput.setSkipAuthentication(false);
        AmountOfMoney amountOfMoney = new AmountOfMoney();
        amountOfMoney.setAmount(2980L);
        amountOfMoney.setCurrencyCode("EUR");
        Address billingAddress = new Address();
        billingAddress.setAdditionalInfo("b");
        billingAddress.setCity("Monument Valley");
        billingAddress.setCountryCode("US");
        billingAddress.setHouseNumber("13");
        billingAddress.setState("Utah");
        billingAddress.setStreet("Desertroad");
        billingAddress.setZip("84536");
        CompanyInformation companyInformation = new CompanyInformation();
        companyInformation.setName("Acme Labs");
        ContactDetails contactDetails = new ContactDetails();
        contactDetails.setEmailAddress("wile.e.coyote@acmelabs.com");
        contactDetails.setEmailMessageType("html");
        contactDetails.setFaxNumber("+1234567891");
        contactDetails.setPhoneNumber("+1234567890");
        PersonalName name = new PersonalName();
        name.setFirstName("Wile");
        name.setSurname("Coyote");
        name.setSurnamePrefix("E.");
        name.setTitle("Mr.");
        PersonalInformation personalInformation = new PersonalInformation();
        personalInformation.setDateOfBirth("19490917");
        personalInformation.setGender("M");
        personalInformation.setName(name);
        PersonalName shippingName = new PersonalName();
        shippingName.setFirstName("Road");
        shippingName.setSurname("Runner");
        shippingName.setTitle("Miss");
        AddressPersonal shippingAddress = new AddressPersonal();
        shippingAddress.setAdditionalInfo("Suite II");
        shippingAddress.setCity("Monument Valley");
        shippingAddress.setCountryCode("US");
        shippingAddress.setHouseNumber("1");
        shippingAddress.setName(shippingName);
        shippingAddress.setState("Utah");
        shippingAddress.setStreet("Desertroad");
        shippingAddress.setZip("84536");
        Customer customer = new Customer();
        customer.setBillingAddress(billingAddress);
        customer.setCompanyInformation(companyInformation);
        customer.setContactDetails(contactDetails);
        customer.setLocale("en_US");
        customer.setMerchantCustomerId("1234");
        customer.setPersonalInformation(personalInformation);
        customer.setShippingAddress(shippingAddress);
        customer.setVatNumber("1234AB5678CD");
        OrderInvoiceData invoiceData = new OrderInvoiceData();
        invoiceData.setInvoiceDate("20140306191500");
        invoiceData.setInvoiceNumber("000000123");
        OrderReferences references = new OrderReferences();
        references.setDescriptor("Fast and Furry-ous");
        references.setInvoiceData(invoiceData);
        references.setMerchantOrderId(123456L);
        references.setMerchantReference("AcmeOrder0001");
        List<LineItem> items = new ArrayList<LineItem>();
        AmountOfMoney item1AmountOfMoney = new AmountOfMoney();
        item1AmountOfMoney.setAmount(2500L);
        item1AmountOfMoney.setCurrencyCode("EUR");
        LineItemInvoiceData item1InvoiceData = new LineItemInvoiceData();
        item1InvoiceData.setDescription("ACME Super Outfit");
        item1InvoiceData.setNrOfItems("1");
        item1InvoiceData.setPricePerItem(2500L);
        LineItem item1 = new LineItem();
        item1.setAmountOfMoney(item1AmountOfMoney);
        item1.setInvoiceData(item1InvoiceData);
        items.add(item1);
        AmountOfMoney item2AmountOfMoney = new AmountOfMoney();
        item2AmountOfMoney.setAmount(480L);
        item2AmountOfMoney.setCurrencyCode("EUR");
        LineItemInvoiceData item2InvoiceData = new LineItemInvoiceData();
        item2InvoiceData.setDescription("Aspirin");
        item2InvoiceData.setNrOfItems("12");
        item2InvoiceData.setPricePerItem(40L);
        LineItem item2 = new LineItem();
        item2.setAmountOfMoney(item2AmountOfMoney);
        item2.setInvoiceData(item2InvoiceData);
        items.add(item2);
        ShoppingCart shoppingCart = new ShoppingCart();
        shoppingCart.setItems(items);
        Order order = new Order();
        order.setAmountOfMoney(amountOfMoney);
        order.setCustomer(customer);
        order.setReferences(references);
        order.setShoppingCart(shoppingCart);
        CreatePaymentRequest body = new CreatePaymentRequest();
        body.setCardPaymentMethodSpecificInput(cardPaymentMethodSpecificInput);
        body.setOrder(order);
        try {
            CreatePaymentResponse response = client.merchant("merchantId").payments().create(body);
        } catch (DeclinedPaymentException e) {
            handleDeclinedPayment(e.getCreatePaymentResult());
        } catch (ApiException e) {
            handleApiErrors(e.getErrors());
        }
    } finally {
        client.close();
    }
}
Also used : OrderInvoiceData(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.OrderInvoiceData) Order(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.Order) OrderReferences(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.OrderReferences) DeclinedPaymentException(com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException) Address(com.ingenico.connect.gateway.sdk.java.domain.definitions.Address) Customer(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.Customer) ArrayList(java.util.ArrayList) AddressPersonal(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.AddressPersonal) LineItem(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.LineItem) CreatePaymentRequest(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentRequest) LineItemInvoiceData(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.LineItemInvoiceData) CreatePaymentResponse(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentResponse) Card(com.ingenico.connect.gateway.sdk.java.domain.definitions.Card) AmountOfMoney(com.ingenico.connect.gateway.sdk.java.domain.definitions.AmountOfMoney) CompanyInformation(com.ingenico.connect.gateway.sdk.java.domain.definitions.CompanyInformation) PersonalInformation(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.PersonalInformation) ContactDetails(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.ContactDetails) ShoppingCart(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.ShoppingCart) PersonalName(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.PersonalName) Client(com.ingenico.connect.gateway.sdk.java.Client) CardPaymentMethodSpecificInput(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.CardPaymentMethodSpecificInput) ApiException(com.ingenico.connect.gateway.sdk.java.ApiException)

Example 2 with DeclinedPaymentException

use of com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException in project connect-sdk-java by Ingenico-ePayments.

the class DefaultConnectionIdempotenceTest method testIdempotenceSecondFailure.

@Test
public void testIdempotenceSecondFailure() throws Exception {
    String body = getResource("idempotence_rejected.json");
    final Long idempotenceRequestTimestamp = System.currentTimeMillis();
    Map<String, String> responseHeaders = new HashMap<String, String>(2);
    responseHeaders.put("X-GCS-Idempotence-Request-Timestamp", idempotenceRequestTimestamp.toString());
    Map<String, String> requestHeaders = new HashMap<String, String>();
    Mockito.doAnswer(setResponse(body, 402, responseHeaders, requestHeaders)).when(requestHandler).handle(Matchers.<HttpRequest>any(), Matchers.<HttpResponse>any(), Matchers.<HttpContext>any());
    serverBootstrap.registerHandler("/v1/20000/payments", requestHandler);
    HttpHost host = start();
    final String idempotenceKey = UUID.randomUUID().toString();
    CallContext context = new CallContext().withIdempotenceKey(idempotenceKey);
    Client client = createClient(host);
    try {
        CreatePaymentRequest request = createRequest();
        client.merchant("20000").payments().create(request, context);
        Assert.fail("Expected DeclinedPaymentException");
    } catch (DeclinedPaymentException e) {
        Assert.assertEquals(402, e.getStatusCode());
        Assert.assertEquals(body, e.getResponseBody());
    } finally {
        client.close();
    }
    Assert.assertEquals(idempotenceKey, requestHeaders.get("X-GCS-Idempotence-Key"));
    Assert.assertEquals(idempotenceKey, context.getIdempotenceKey());
    Assert.assertEquals(idempotenceRequestTimestamp, context.getIdempotenceRequestTimestamp());
}
Also used : DeclinedPaymentException(com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException) HashMap(java.util.HashMap) HttpHost(org.apache.http.HttpHost) CreatePaymentRequest(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentRequest) Client(com.ingenico.connect.gateway.sdk.java.Client) CallContext(com.ingenico.connect.gateway.sdk.java.CallContext) Test(org.junit.Test)

Example 3 with DeclinedPaymentException

use of com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException in project connect-sdk-java by Ingenico-ePayments.

the class DefaultConnectionIdempotenceTest method testIdempotenceFirstFailure.

@Test
public void testIdempotenceFirstFailure() throws Exception {
    String body = getResource("idempotence_rejected.json");
    Map<String, String> responseHeaders = new HashMap<String, String>();
    Map<String, String> requestHeaders = new HashMap<String, String>();
    Mockito.doAnswer(setResponse(body, 402, responseHeaders, requestHeaders)).when(requestHandler).handle(Matchers.<HttpRequest>any(), Matchers.<HttpResponse>any(), Matchers.<HttpContext>any());
    serverBootstrap.registerHandler("/v1/20000/payments", requestHandler);
    HttpHost host = start();
    final String idempotenceKey = UUID.randomUUID().toString();
    CallContext context = new CallContext().withIdempotenceKey(idempotenceKey);
    Client client = createClient(host);
    try {
        CreatePaymentRequest request = createRequest();
        client.merchant("20000").payments().create(request, context);
        Assert.fail("Expected DeclinedPaymentException");
    } catch (DeclinedPaymentException e) {
        Assert.assertEquals(402, e.getStatusCode());
        Assert.assertEquals(body, e.getResponseBody());
    } finally {
        client.close();
    }
    Assert.assertEquals(idempotenceKey, requestHeaders.get("X-GCS-Idempotence-Key"));
    Assert.assertEquals(idempotenceKey, context.getIdempotenceKey());
    Assert.assertNull(context.getIdempotenceRequestTimestamp());
}
Also used : DeclinedPaymentException(com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException) HashMap(java.util.HashMap) HttpHost(org.apache.http.HttpHost) CreatePaymentRequest(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentRequest) Client(com.ingenico.connect.gateway.sdk.java.Client) CallContext(com.ingenico.connect.gateway.sdk.java.CallContext) Test(org.junit.Test)

Example 4 with DeclinedPaymentException

use of com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException in project connect-sdk-java by Ingenico-ePayments.

the class PaymentsClientTest method testCreateRejected.

/**
 * Tests that a failure response with a payment result will throw a {@link DeclinedPaymentException}.
 */
@Test
@SuppressWarnings("resource")
public void testCreateRejected() {
    Client client = Factory.createClient(session);
    String responseBody = getResource("rejected.json");
    whenPost().thenReturn(new Response(400, responseBody, null));
    CreatePaymentRequest body = createRequest();
    try {
        client.merchant("merchantId").payments().create(body);
        Assert.fail("Expected DeclinedPaymentException");
    } catch (DeclinedPaymentException e) {
        Assert.assertTrue(e.toString().contains("payment '000002000020142544360000100001'"));
        Assert.assertTrue(e.toString().contains("status 'REJECTED'"));
        Assert.assertTrue(e.toString().contains(responseBody));
        Assert.assertNotNull(e.getCreatePaymentResult());
        Assert.assertEquals("000002000020142544360000100001", e.getCreatePaymentResult().getPayment().getId());
        Assert.assertEquals("REJECTED", e.getCreatePaymentResult().getPayment().getStatus());
    }
}
Also used : Response(com.ingenico.connect.gateway.sdk.java.Response) CreatePaymentResponse(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentResponse) DeclinedPaymentException(com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException) CreatePaymentRequest(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentRequest) Client(com.ingenico.connect.gateway.sdk.java.Client) Test(org.junit.Test)

Example 5 with DeclinedPaymentException

use of com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException in project connect-sdk-java by Ingenico-ePayments.

the class DefaultConnectionLoggerTest method testCreatePaymentRejected.

@Test
public void testCreatePaymentRejected() throws Exception {
    // an exception is thrown after logging the response
    serverBootstrap.registerHandler("/v1/1234/payments", requestHandler);
    HttpHost host = start();
    Client client = createClient(host);
    TestLogger logger = new TestLogger();
    client.enableLogging(logger);
    setupRequestHandler(setJsonResponse("createPayment.failure.rejected.json", 402));
    try {
        AmountOfMoney amountOfMoney = new AmountOfMoney();
        amountOfMoney.setCurrencyCode("CAD");
        amountOfMoney.setAmount(2345L);
        Address billingAddress = new Address();
        billingAddress.setCountryCode("CA");
        Customer customer = new Customer();
        customer.setBillingAddress(billingAddress);
        Order order = new Order();
        order.setAmountOfMoney(amountOfMoney);
        order.setCustomer(customer);
        Card card = new Card();
        card.setCvv("123");
        card.setCardNumber("1234567890123452");
        card.setExpiryDate("1220");
        CardPaymentMethodSpecificInput paymentMethodSpecificInput = new CardPaymentMethodSpecificInput();
        paymentMethodSpecificInput.setPaymentProductId(1);
        paymentMethodSpecificInput.setCard(card);
        CreatePaymentRequest request = new CreatePaymentRequest();
        request.setOrder(order);
        request.setCardPaymentMethodSpecificInput(paymentMethodSpecificInput);
        client.merchant("1234").payments().create(request);
        Assert.fail("expected DeclinedPaymentException");
    } catch (DeclinedPaymentException e) {
        // expected
        Assert.assertNotNull(e.getCreatePaymentResult());
        Assert.assertNotNull(e.getCreatePaymentResult().getPayment());
        Assert.assertNotNull(e.getCreatePaymentResult().getPayment().getId());
    } finally {
        client.close();
    }
    Assert.assertEquals(2, logger.entries.size());
    TestLoggerEntry requestEntry = logger.entries.get(0);
    Assert.assertNotNull(requestEntry.message);
    Assert.assertNull(requestEntry.thrown);
    TestLoggerEntry responseEntry = logger.entries.get(1);
    Assert.assertNotNull(responseEntry.message);
    Assert.assertNull(responseEntry.thrown);
    assertRequestAndResponse(requestEntry.message, responseEntry.message, "createPayment.failure.rejected");
}
Also used : Order(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.Order) DeclinedPaymentException(com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException) Address(com.ingenico.connect.gateway.sdk.java.domain.definitions.Address) Customer(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.Customer) HttpHost(org.apache.http.HttpHost) CreatePaymentRequest(com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentRequest) Client(com.ingenico.connect.gateway.sdk.java.Client) CardPaymentMethodSpecificInput(com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.CardPaymentMethodSpecificInput) AmountOfMoney(com.ingenico.connect.gateway.sdk.java.domain.definitions.AmountOfMoney) Card(com.ingenico.connect.gateway.sdk.java.domain.definitions.Card) Test(org.junit.Test)

Aggregations

Client (com.ingenico.connect.gateway.sdk.java.Client)5 DeclinedPaymentException (com.ingenico.connect.gateway.sdk.java.DeclinedPaymentException)5 CreatePaymentRequest (com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentRequest)5 Test (org.junit.Test)4 HttpHost (org.apache.http.HttpHost)3 CallContext (com.ingenico.connect.gateway.sdk.java.CallContext)2 Address (com.ingenico.connect.gateway.sdk.java.domain.definitions.Address)2 AmountOfMoney (com.ingenico.connect.gateway.sdk.java.domain.definitions.AmountOfMoney)2 Card (com.ingenico.connect.gateway.sdk.java.domain.definitions.Card)2 CreatePaymentResponse (com.ingenico.connect.gateway.sdk.java.domain.payment.CreatePaymentResponse)2 CardPaymentMethodSpecificInput (com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.CardPaymentMethodSpecificInput)2 Customer (com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.Customer)2 Order (com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.Order)2 HashMap (java.util.HashMap)2 ApiException (com.ingenico.connect.gateway.sdk.java.ApiException)1 Response (com.ingenico.connect.gateway.sdk.java.Response)1 CompanyInformation (com.ingenico.connect.gateway.sdk.java.domain.definitions.CompanyInformation)1 AddressPersonal (com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.AddressPersonal)1 ContactDetails (com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.ContactDetails)1 LineItem (com.ingenico.connect.gateway.sdk.java.domain.payment.definitions.LineItem)1