0

我收到错误:

18:35  error    'mandatoryParams' is not defined               no-undef

我的 checksum.js 文件:

"use strict";

var crypt = require('./crypt');
var util = require('util');
var crypto = require('crypto');

//mandatory flag: when it set, only mandatory parameters are added to checksum

function paramsToString(params, mandatoryflag) {
    var data = '';
    var flag = params.refund ? true : false;
    delete params.refund;
    var tempKeys = Object.keys(params);
    if (!flag) tempKeys.sort();
    tempKeys.forEach(function (key) {
        if (key !== 'CHECKSUMHASH') {
            if (params[key] === 'null') params[key] = '';
            if (!mandatoryflag || mandatoryParams.indexOf(key) !== -1) {
                data += (params[key] + '|');
            }
        }
    });
    return data;
}


function genchecksum(params, key, cb) {
    var flag = params.refund ? true : false;
    var data = paramsToString(params);
    crypt.gen_salt(4, function (err, salt) {
        var sha256 = crypto.createHash('sha256').update(data + salt).digest('hex');
        var check_sum = sha256 + salt;
        var encrypted = crypt.encrypt(check_sum, key);
        if (flag) {
            params.CHECKSUM = (encrypted);
            params.CHECKSUM = encrypted;
        } else {
            params.CHECKSUMHASH = (encrypted);
            params.payt_STATUS = '1';
        }
        cb(undefined, params);
    });
}
function genchecksumbystring(params, key, cb) {

    crypt.gen_salt(4, function (err, salt) {
        var sha256 = crypto.createHash('sha256').update(params + '|' + salt).digest('hex');
        var check_sum = sha256 + salt;
        var encrypted = crypt.encrypt(check_sum, key);

        var CHECKSUMHASH = encodeURIComponent(encrypted);
        CHECKSUMHASH = encrypted;
        cb(undefined, CHECKSUMHASH);
    });
}


function verifychecksum(params, key) {

    if (!params) console.log("params are null");

    var data = paramsToString(params, false);
    //TODO: after PG fix on thier side remove below two lines
    if (params.CHECKSUMHASH) {
        params.CHECKSUMHASH = params.CHECKSUMHASH.replace('\n', '');
        params.CHECKSUMHASH = params.CHECKSUMHASH.replace('\r', '');

        var temp = decodeURIComponent(params.CHECKSUMHASH);
        var checksum = crypt.decrypt(temp, key);
        var salt = checksum.substr(checksum.length - 4);
        var sha256 = checksum.substr(0, checksum.length - 4);
        var hash = crypto.createHash('sha256').update(data + salt).digest('hex');
        if (hash === sha256) {
            return true;
        } else {
            util.log("checksum is wrong");
            return false;
        }
    } else {
        util.log("checksum not found");
        return false;
    }
}

function verifychecksumbystring(params, key, checksumhash) {

    var checksum = crypt.decrypt(checksumhash, key);
    var salt = checksum.substr(checksum.length - 4);
    var sha256 = checksum.substr(0, checksum.length - 4);
    var hash = crypto.createHash('sha256').update(params + '|' + salt).digest('hex');
    if (hash === sha256) {
        return true;
    } else {
        util.log("checksum is wrong");
        return false;
    }
}

module.exports.genchecksum = genchecksum;
module.exports.verifychecksum = verifychecksum;
module.exports.verifychecksumbystring = verifychecksumbystring;
module.exports.genchecksumbystring = genchecksumbystring;

调用 cheksum.getchecksum 是由我发起的,例如:

 buttonCLick()
{
    console.log("I'm clicked");
    var some;
    let paramarray = [];
    paramarray['ORDER_ID'] = 'sadasda';
    paramarray['CUST_ID'] = 'sadasdasddffa';
    paramarray['INDUSTRY_TYPE_ID'] = config.INDUSTRY_TYPE_ID;
    paramarray['CHANNEL_ID'] = config.CHANNEL_ID;
    paramarray['TXN_AMOUNT'] = '1';
    paramarray['MID'] = config.MID;
    paramarray['WEBSITE'] = config.WEBSITE;

    paramarray['CALLBACK_URL'] = 'http://localhost:3000/response';
    console.log("Paramarray---"+paramarray['ORDER_ID']);

    checksum.genchecksumbystring(paramarray, config.PAYTM_MERCHANT_KEY, function (err, result)
    {
        console.log(result);
        some =result;
    });

}

我可以理解,没有定义“mandatoryParams”是问题,但是相同的项目通过使用 ejs 和 express 项目链接来工作:Paytm Github

4

0 回答 0