Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function validateDigistoreSha() {
- const THANKYOU_PAGE_KEY = "XXXXXXXXXXXXXX";
- const data = new URLSearchParams(window.location.search);
- function hexString(buffer) {
- const byteArray = new Uint8Array(buffer);
- const hexCodes = [...byteArray].map(value => {
- const hexCode = value.toString(16);
- const paddedHexCode = hexCode.padStart(2, "0");
- return paddedHexCode;
- });
- return hexCodes.join("");
- }
- function digestMessage(message) {
- const encoder = new TextEncoder();
- const data = encoder.encode(message);
- return window.crypto.subtle.digest("SHA-512", data);
- }
- function digistore_signature(thankyouPageKey, input) {
- input.delete("sha_sign");
- input.sort();
- let shaString = "";
- input.forEach((value, key) => {
- const empty =
- typeof value === "undefined" || value === "" || value === false;
- if (!empty) {
- shaString += `${key}=${value}${thankyouPageKey}`;
- }
- });
- const shaSign = digestMessage(shaString).then(digestValue =>
- hexString(digestValue).toUpperCase()
- );
- return shaSign;
- }
- async function shaSignValid() {
- const receivedSignature = data.get("sha_sign");
- const expectedSignature = await digistore_signature(
- THANKYOU_PAGE_KEY,
- data
- );
- return receivedSignature == expectedSignature;
- }
- return shaSignValid();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement