我正在尝试实现此代码以获取我的付款方式之一,但是每次返回错误时都会发生ExcryptionsTring:referenterror:referenterror:cryptojs尚未定义"
错误是由于代码" var key = cryptojs.enc.hex.parse(keyValue(;"
我在铁轨中运行此操作,因此请帮助建议是否有任何代码有任何问题。
gemfile
gem 'cryptojs-rails', '~> 2.5', '>= 2.5.3'
App/Assets/javaScripts/application.js
//= require crypto
App/Assets/JavaScripts/Maybank.js
var getEncryptionString = function (arrayM2U, envType) {
try {
var ITERATIONS = 2;
var salt='Maybank2u simple encryption';
var keyValue='000102030405060708090a0b0c0d0e0f';
var amount = arrayM2U.amount;
var accountNumber =arrayM2U.accountNumber;
var payeeCode = arrayM2U.payeeCode;
var refNum = arrayM2U.refNumber;
var redirectionurl = arrayM2U.callbackUrl;
var m_sReqSendString = "";
if( (accountNumber == undefined || accountNumber == "") && (refNum != undefined && refNum != ""))
m_sReqSendString = 'Login$' +payeeCode+ '$1$' + amount + '$1$' + refNum + '$$$' + redirectionurl;
else if((accountNumber != undefined && accountNumber != "" ) && (refNum == undefined || refNum == ""))
m_sReqSendString = 'Login$' + payeeCode + '$1$' + amount + '$$$1$' + accountNumber + '$' + redirectionurl;
else
m_sReqSendString = 'Login$' + payeeCode + '$1$' + amount + '$1$'+refNum+'$1$' + accountNumber + '$' +redirectionurl ;
console.log(keyValue);
var key = cryptoJS.enc.Hex.parse(keyValue);
console.log(keyValue);
var valueToEnc = null;
var eValue = m_sReqSendString;
for (var i = 0; i < ITERATIONS; i++) {
valueToEnc = salt + eValue;
var encrypted = cryptoJS.AES.encrypt(valueToEnc, key, {
mode: cryptoJS.mode.ECB,
padding: cryptoJS.pad.Pkcs7
});
eValue = encrypted;
}
var fullEncryptedString = encodeURIComponent(eValue);
switch (envType) {
case 1:
actionUrl = "https://m2upayuat.maybank2u.com.my/testM2uPayment";
break;
case 2:
actionUrl = "https://www.maybank2u.com.my/mbb/m2u/m9006_enc/m2uMerchantLogin.do";
break;
default:
actionUrl = "https://api.maybanksandbox.com/v1.0/testM2uPayment";
}
var json = {};
json.encryptedString = fullEncryptedString;
json.actionUrl = actionUrl;
return json;
} catch (err) {
console.log("Exception occured encryptionString:"+err)
return "FAIL"
}
}
好吧,我只是看了宝石源代码,这很快。您没有机会让这个宝石起作用。我想这是作者的测试,但他一定不能迅速放弃它(考虑到您的GitHub存储库已被删除,并且只有一个版本的一个版本(。
2.5.3加密库库应包含所有这些文件:
⇒ tree tags/2.5.3/src
├── AES.js
├── BlockModes.js
├── Crypto.js
├── CryptoMath.js
├── DES.js
├── HMAC.js
├── MARC4.js
├── MD5.js
├── PBKDF2.js
├── PBKDF2Async.js
├── Rabbit.js
├── SHA1.js
└── SHA256.js
0 directories, 13 files
和您正在使用的宝石仅包含GEM和Crypto.js
所需的基本文件,这主要是空壳,这就是为什么您的代码不起作用。
⇒ tree gems/ruby-2.3.3/gems/cryptojs-rails-2.5.3/
├── LICENSE
├── README.md
├── app
│ └── assets
│ └── javascripts
│ └── crypto.js
└── lib
├── cryptojs-rails
│ └── version.rb
└── cryptojs-rails.rb
5 directories, 5 files
简而言之,我认为您必须通过另一个频道(Rails-Assets,npm/Yarn,Bower,手动到供应商或我想不出的任何其他方式(在您的项目中进口加密j。/p>