2

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

0 回答 0