Created
December 10, 2018 07:27
-
-
Save mrsndmn/cd6be6ef477ba16d47c339f3f8a375c6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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