从前端收集用户输入后,我使用来自 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);
} ...