· 7 years ago · Mar 01, 2018, 07:30 PM
1const secretKey = 'WQHcJ)PzF2SUCEi3';
2const remoteUrl = 'https://wams.tech/api-dev/';
3
4const action = 'DEBIT';
5const account = inputData.email;
6const amount = 10;
7const ref = 'loaner';
8//const refId = 0;
9const entry = 'Penalty for borrowing a WAMStech device';
10//const data = 'optional extra';
11const pointType = 'mycred_currency';
12
13const host = 'https://zapier.com';
14
15// Calculate token
16
17let token = `${host}${action}${amount}${secretKey}`;
18/**
19* MD5 (Message-Digest Algorithm)
20* http://www.webtoolkit.info/
21**/
22
23function md5(string) {
24 function RotateLeft(lValue, iShiftBits) {
25 return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
26 }
27
28 function AddUnsigned(lX,lY) {
29 var lX4,lY4,lX8,lY8,lResult;
30 lX8 = (lX & 0x80000000);
31 lY8 = (lY & 0x80000000);
32 lX4 = (lX & 0x40000000);
33 lY4 = (lY & 0x40000000);
34 lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
35 if (lX4 & lY4) {
36 return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
37 }
38 if (lX4 | lY4) {
39 if (lResult & 0x40000000) {
40 return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
41 } else {
42 return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
43 }
44 } else {
45 return (lResult ^ lX8 ^ lY8);
46 }
47 }
48
49 function F(x,y,z) { return (x & y) | ((~x) & z); }
50 function G(x,y,z) { return (x & z) | (y & (~z)); }
51 function H(x,y,z) { return (x ^ y ^ z); }
52 function I(x,y,z) { return (y ^ (x | (~z))); }
53
54 function FF(a,b,c,d,x,s,ac) {
55 a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
56 return AddUnsigned(RotateLeft(a, s), b);
57 };
58
59 function GG(a,b,c,d,x,s,ac) {
60 a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
61 return AddUnsigned(RotateLeft(a, s), b);
62 };
63
64 function HH(a,b,c,d,x,s,ac) {
65 a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
66 return AddUnsigned(RotateLeft(a, s), b);
67 };
68
69 function II(a,b,c,d,x,s,ac) {
70 a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
71 return AddUnsigned(RotateLeft(a, s), b);
72 };
73
74 function ConvertToWordArray(string) {
75 var lWordCount;
76 var lMessageLength = string.length;
77 var lNumberOfWords_temp1=lMessageLength + 8;
78 var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
79 var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
80 var lWordArray=Array(lNumberOfWords-1);
81 var lBytePosition = 0;
82 var lByteCount = 0;
83 while ( lByteCount < lMessageLength ) {
84 lWordCount = (lByteCount-(lByteCount % 4))/4;
85 lBytePosition = (lByteCount % 4)*8;
86 lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
87 lByteCount++;
88 }
89 lWordCount = (lByteCount-(lByteCount % 4))/4;
90 lBytePosition = (lByteCount % 4)*8;
91 lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
92 lWordArray[lNumberOfWords-2] = lMessageLength<<3;
93 lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
94 return lWordArray;
95 };
96
97 function WordToHex(lValue) {
98 var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
99 for (lCount = 0;lCount<=3;lCount++) {
100 lByte = (lValue>>>(lCount*8)) & 255;
101 WordToHexValue_temp = "0" + lByte.toString(16);
102 WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
103 }
104 return WordToHexValue;
105 };
106
107 function Utf8Encode(string) {
108 string = string.replace(/\r\n/g,"\n");
109 var utftext = "";
110
111 for (var n = 0; n < string.length; n++) {
112 var c = string.charCodeAt(n);
113
114 if (c < 128) {
115 utftext += String.fromCharCode(c);
116 }
117 else if((c > 127) && (c < 2048)) {
118 utftext += String.fromCharCode((c >> 6) | 192);
119 utftext += String.fromCharCode((c & 63) | 128);
120 }
121 else {
122 utftext += String.fromCharCode((c >> 12) | 224);
123 utftext += String.fromCharCode(((c >> 6) & 63) | 128);
124 utftext += String.fromCharCode((c & 63) | 128);
125 }
126 }
127
128 return utftext;
129 };
130
131 var x=Array();
132 var k,AA,BB,CC,DD,a,b,c,d;
133 var S11=7, S12=12, S13=17, S14=22;
134 var S21=5, S22=9 , S23=14, S24=20;
135 var S31=4, S32=11, S33=16, S34=23;
136 var S41=6, S42=10, S43=15, S44=21;
137
138 string = Utf8Encode(string);
139
140 x = ConvertToWordArray(string);
141
142 a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
143
144 for (k=0;k<x.length;k+=16) {
145 AA=a; BB=b; CC=c; DD=d;
146 a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
147 d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
148 c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
149 b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
150 a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
151 d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
152 c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
153 b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
154 a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
155 d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
156 c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
157 b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
158 a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
159 d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
160 c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
161 b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
162 a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
163 d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
164 c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
165 b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
166 a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
167 d=GG(d,a,b,c,x[k+10],S22,0x2441453);
168 c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
169 b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
170 a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
171 d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
172 c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
173 b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
174 a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
175 d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
176 c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
177 b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
178 a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
179 d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
180 c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
181 b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
182 a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
183 d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
184 c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
185 b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
186 a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
187 d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
188 c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
189 b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
190 a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
191 d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
192 c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
193 b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
194 a=II(a,b,c,d,x[k+0], S41,0xF4292244);
195 d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
196 c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
197 b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
198 a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
199 d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
200 c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
201 b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
202 a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
203 d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
204 c=II(c,d,a,b,x[k+6], S43,0xA3014314);
205 b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
206 a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
207 d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
208 c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
209 b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
210 a=AddUnsigned(a,AA);
211 b=AddUnsigned(b,BB);
212 c=AddUnsigned(c,CC);
213 d=AddUnsigned(d,DD);
214 }
215
216 var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
217
218 return temp.toLowerCase();
219}
220
221//token = await Meta.actions.post(`http://api.rest7.com/v1/text_hash.php?text=${token}&algo=md5`, { method: 'get' });
222//token = await token.json();
223//token = JSON.stringify(token);
224//token = token.hash;
225token = md5(token);
226
227var request =
228{
229 method: 'POST',
230 headers: {
231 'Accept' : 'application/x-www-form-urlencoded',
232 'Content-Type': 'application/x-www-form-urlencoded',
233 },
234 body: `action=${action}&account=${account}&amount=${amount}&ref=${ref}&type=${pointType}&entry=${entry}&host=${host}&token=${token}`,
235};
236
237z.request(remoteUrl, request);