带有 Salesforce Apex 的支付网关 CCAvanue

Payment Gateway CCAvanue with Salesforce Apex

CCAvenue 不提供 Salesforce Apex 语言的集成工具包。他们提供 Asp.net, Java, NodeJS, iOS, Android, Windows.

我们如何加密数据并向 CCAvenue 支付网关发出请求?

经过多次努力,我们成功地在 salesforce apex 中加密和解密数据。

这里是加密:

/*

此 PLAIN_TEXT 是从您的 apex 表单收集的数据。需要的值很少,很多值是可选的。请阅读 ccavenue 提供的文档。

*/

字符串 PLAIN_TEXT = 'tid=XXXX&merchant_id=XXXX&order_id=XXXX&amount=XX&currency=INR&redirect_url=XXXX&cancel_url=XXXX&language=EN&billing_name=XXXX&billing_address=XXXX&billing_city=XXXX&billing_state=XX&billing_zip=XXXX&billing_country=XXXX&billing_tel=XXXX&billing_email=XXXX&delivery_name=XXXX&delivery_address=XXXX&delivery_city=XXXX&delivery_state=XXXX&delivery_zip=XXXX&delivery_country=XXXX&delivery_tel=XXXX&merchant_param1=XXXX&merchant_param2=XXXX&merchant_param3=XXXX&merchant_param4=XXXX&merchant_param5=XXXX&promo_code=&customer_identifier=&';

//WORKING_KEY 是CCAvenue 在您注册为商家时提供的密钥。

Blob 加密密钥 = Blob.valueOf('WORKING_KEY');

Blob 哈希 = Crypto.generateDigest('MD5', cryptoKey );

Blob 数据 = Blob.valueOf(PLAIN_TEXT);

Blob encryptedData = Crypto.encryptWithManagedIV('AES128', 散列, 数据);

字符串加密请求 = EncodingUtil.convertToHex(加密数据);

/*使用 visualforce FORM 将此带有 access_code 的 encRequest 传递给 https://secure.ccavenue.com/transaction/transaction.do?command=initiateTransaction */

解密如下:

Blob 加密密钥 = Blob.valueOf('WORKING_KEY');

Blob 哈希 = Crypto.generateDigest('MD5', cryptoKey);

Blob 数据 = EncodingUtil.convertFromHex('ENC_RESPONSE'); //从ccAvenue收到响应

Blob decryptedText = Crypto.decryptWithManagedIV('AES128', hash, data);

字符串 PLAIN_TEXT = decryptedText.toString();