Skip to content

Instantly share code, notes, and snippets.

@mrsndmn
Created December 10, 2018 07:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mrsndmn/cd6be6ef477ba16d47c339f3f8a375c6 to your computer and use it in GitHub Desktop.
Save mrsndmn/cd6be6ef477ba16d47c339f3f8a375c6 to your computer and use it in GitHub Desktop.
let stringify = require('json-stable-stringify'); // canonical json implementation
let md5 = require('md5');
let base64 = require('base-64');
let sha1 = require('sha1');
let amount = 1;
let merch_data = {
amount: amount,
order_id: ++last_order_id,
currency: "RUB",
ts: (Date.now() / 1000 | 0), // так можно отбросить дробную часть)
cashback: {pay_time: (Date.now() / 1000 | 0 + 200), amount_percent: 30}
};
let merch_data_base64 = base64.encode(JSON.stringify(merch_data))
let data = {
cashback: merch_data.cashback,
order_id: merch_data.order_id,
ts: merch_data.ts,
currency: "RUB",
merchant_data: merch_data_base64,
merchant_sign: sha1(merch_data_base64 + MERCH_PRIVATE_KEY),
event_name: "not required!!", // you can put here any data you want
your_custom_params_here: 123,
};
let pay_window_params = {
amount: amount,
data: data,
description: "Оплата заказа",
action: "pay-to-service",
merchant_id: MERCH_ID,
version: 2
}
let params = ""
Object.keys(pay_window_params).sort((a, b) => a > b).forEach(
function (key) { if (key != "action") params += key + "=" + ( key == "data"? stringify( pay_window_params[key] ) : pay_window_params[key] ) }
)
pay_window_params.sign = md5(params + APP_SECRET_KET)
console.log("sign_params_str: ", params)
console.log("result: " + JSON.stringify(pay_window_params));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment