没有这样的提供商:SunJCE--Paytm 校验和生成器 Android

No such provider: SunJCE--Paytm Checksum genrator Android

我正在尝试为我们的 android 应用程序集成 paytm。

新的 PaytmOrder 对象需要校验和哈希作为参数。

为了生成校验和哈希,我们使用了 paytm 推荐的 jar 文件。

https://github.com/Paytm-Payments/Paytm_Google_App_Engine_Kit

我们已将此 jar 添加到我们的 lib 文件夹中。

implementation files('src/main/libs/pg-checksum-1.0-jar-with-dependencies.jar')

这是用于在我们的 android 应用程序中生成校验和哈希的代码。

try{
    String checkSum =  CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum("7MTqfy715ot231CT",  convertToTreeMap(paramMap));
    paramMap.put("CHECKSUMHASH" , checkSum);
    System.out.println("Paytm Payload: "+ paramMap);
}catch(Exception e) {
    e.printStackTrace();

}

但是我们在尝试获取校验和哈希时遇到以下异常。

System.err: java.security.NoSuchProviderException: No such provider: SunJCE

2020-01-01 11:32:33.581 26112-26112 W/System.err:     at javax.crypto.Cipher.getInstance(Cipher.java:671)

2020-01-01 11:32:33.581 26112-26112 W/System.err:     at com.paytm.pg.crypto.AesEncryption.encrypt(AesEncryption.java:34)

2020-01-01 11:32:33.581 26112-26112/System.err:     at com.paytm.pg.merchant.CheckSumServiceHelper.genrateCheckSum(CheckSumServiceHelper.java:53)

当我开始从我的应用程序服务器生成校验和哈希时,我能够解决这个问题。
发生上述问题是因为我试图在本地 android 中生成校验和哈希。

我解决了在 Android 端生成校验和的问题。

下载此 jar (paytm-checksum-1.1.jar) 并正确 de-compile ,在您的项目中包含所有 java class 替换此行在 AesEncryption class.And 使用 Base64Encoder jar 这 (sun.misc.BASE64Decoder.jar).

//Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING", "SunJCE");// replace this
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); // by this line

想了解更多,关注这个urlhttps://medium.com/@dharmmobiledev/paytm-checksum-generate-in-android-nosuchproviderexception-no-such-provider-sunjce-e02c216557a5