Android adyen checkout:如何加密卡数据?

Android adyen checkout:如何加密卡数据?,android,adyen,Android,Adyen,在从前端收集用户输入之后,我正在使用github的adyen android cse项目用java代码测试后端。但是除了需要公钥并生成加密字符串的card.serialize()之外,我没有看到任何合适的方法。Card类具有encrypt方法,但该方法是私有的,因此仅适用于Card.serialize()方法 但我想继续结帐。对于结帐,有一个paymentsRequest.addCardData()方法需要卡片信息,我可以在从用户收集这些信息时提供这些信息,但我会得到安全异常。另一个选项paym

在从前端收集用户输入之后,我正在使用github的adyen android cse项目用java代码测试后端。但是除了需要公钥并生成加密字符串的
card.serialize()
之外,我没有看到任何合适的方法。Card类具有encrypt方法,但该方法是私有的,因此仅适用于
Card.serialize()
方法

但我想继续结帐。对于结帐,有一个
paymentsRequest.addCardData()
方法需要卡片信息,我可以在从用户收集这些信息时提供这些信息,但我会得到安全异常。另一个选项
paymentsRequest.addEncryptedCardData()
需要加密的卡数据,但我不知道如何获取这些加密字段。给出测试信息将产生
NativeCrypto\u SSL\u get\u 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);
                    } ...

嗯,很难低估这里的问题是什么。据我所知,CSE库存在一个问题,因此您需要一个公钥。除了CSE,您使用哪个Adyen库?我没有使用其他库来加密数据,只有CSE。在gradle依赖项上,我添加了多个adyen依赖项。CSE提供了
card.serialize()
方法。我想使用最低要求的测试信息进行签出。好的,请您尝试使用
com.adyen。签出:cse:3.6.1
,并查看此文件以了解如何使用它的示例