ReferenceError:Cryptojs未在Rails JavaScript中定义



我正在尝试实现此代码以获取我的付款方式之一,但是每次返回错误时都会发生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>

最新更新