我正在将 CC avenue 集成到 Ionic4 应用程序中,并将 Node JS 作为我的后端。 Node JS API 已被 CC Avenue 列入白名单,因为这是集成 CC Avenue 的第一步。我有在 API 中获取 RSA 密钥的方法。我无法弄清楚如何发布加密的参数并在新浏览器窗口中使用重定向和取消 URL 打开它。
initPayment() {
this.authService.initPayment().then(
res => {
this.paymentParams = new PaymentParams();
this.paymentParams.orderId = JSON.parse(res).order_id;
this.paymentParams.amount = JSON.parse(res).amount;
this.paymentParams.currency = JSON.parse(res).currency;
this.paymentParams.merchantId = JSON.parse(res).merchant_id;
this.paymentParams.accessCode = JSON.parse(res).access_code;
this.paymentParams.cancelUrl = JSON.parse(res).redirect_url;
this.paymentParams.redirectUrl = JSON.parse(res).cancel_url;
this.paymentParams.transUrl = JSON.parse(res).trans_url;
this.paymentParams.rsaKeyURL = JSON.parse(res).rsa_key_uRL;
alert(JSON.stringify(this.paymentParams));
this.getRSA(this.paymentParams.orderId); // Gets the RSA key from CC Avenue
const payLink = this.inappBrowser.create(`${this.paymentParams.transUrl}`); // Here I want toadd the encryption for posting into Webview
},
err => {
alert(JSON.parse(err));
}
);
}
下面是CC avenue提供的用Java编写的RSA实用程序。我正在尝试使用 Ionic4 中的打字稿获得类似的加密。
public class RSAUtility {
public static String encrypt(String plainText, String key){
try{
PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.decode(key, Base64.DEFAULT)));
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return Base64.encodeToString(cipher.doFinal(plainText.getBytes("UTF-8")),Base64.DEFAULT);
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
这可能会帮助您加密和解密 ccavenue (aes-128-cbc) :
https://gist.github.com/vikrambiwal/a5de9547e9f26e30134a74e6fb309dff