Adyen Checkout: Как зашифровать данные карты? - PullRequest
2 голосов
/ 11 января 2020

После сбора пользовательских входных данных от внешнего интерфейса я тестирую бэкэнд с кодом java, используя проект adyen android cse из github. Но я не вижу другого подходящего метода, кроме card.serialize(), который требует ключа publi c и генерирует зашифрованную строку. Класс карты имеет метод шифрования, но он является закрытым, поэтому работает только с методом card.serialize().

Но я хочу приступить к оформлению заказа. Для проверки есть метод paymentsRequest.addCardData(), который требует информацию о карте, которую я могу предоставить как сбор этой информации от пользователя, но я получу исключение безопасности. Другой вариант paymentsRequest.addEncryptedCardData() требует данных зашифрованной карты, но я не знаю, как получить эти зашифрованные поля. Предоставление тестовой информации приведет к исключению NativeCrypto_SSL_get_certificate => NULL. Все, что я получаю от проекта cse - это зашифрованная строка.

Итак, как успешно оформить заказ, используя Java коды?

код для оформления заказа:

void make_payment(Card card) {

    // Set your X-API-KEY with the API key from the Customer Area.
    Client client = new Client(xApiKey, Environment.TEST);

    final Checkout checkout = new Checkout(client);
    final PaymentsRequest paymentsRequest = new PaymentsRequest();
    paymentsRequest.setMerchantAccount(YOUR_MERCHANT_ACCOUNT);
    Amount amount = new Amount();
    amount.setCurrency("EUR");
    amount.setValue(100L);
    paymentsRequest.setAmount(amount);
    /*String encryptedCardNumber = "adyenjs_0_1_18$...encryptedCardNumber";
    String encryptedExpiryMonth = "adyenjs_0_1_18$...encryptedExpiryMonth";
    String encryptedExpiryYear = "adyenjs_0_1_18$...encryptedExpiryYear";
    String encryptedSecurityCode = "adyenjs_0_1_18$...encryptedSecurityCode";
    */
    paymentsRequest.setReference("Your_order_number1");

    paymentsRequest.addCardData(card.getNumber(), 

card.getExpiryMonth(), card.getExpiryYear(), card.getCvc(), card.getCardHolderName());

    paymentsRequest.setReturnUrl("my-app://.Activity");
    PaymentsResponse paymentsResponse = null;
                    try {
                        paymentsResponse = checkout.payments(paymentsRequest);
                    } ...
...