Free Transfer Example

node v7.10.1
version: 26.0.0
endpointsharetweet
const crypto = require('crypto'), https = require('https'), CryptoJS = require("crypto-js"), request = require("request"), url = require('url'), requestPromise = require("request-promise"), endpoint = require("@runkit/runkit/json-endpoint/1.0.0"); //environment specific const APP_MAC_ID = "d0625c4f2cc34b189379f3daeab8214e";//go fish app mac ID const APP_MAC_KEY = "9rYblk4BojCV8X9fcauTrzpoxmoq1VItpO9TR9Au4Y8";//go fish app MAC KEY const SERVER = "https://staging.lcp.points.com/v1";//prod is https://staging.lcp.points.com/v1 const LPID = "e4ea7481-a275-4656-a47d-26829756ecaa";//environment specific representing SWA const APP_ID = "a76776a4-19b8-425e-916d-caec9848e613";//go fish app ID function randomString(len, charSet) { charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var randomString = ''; for (var i = 0; i < len; i++) { var randomPoz = Math.floor(Math.random() * charSet.length); randomString += charSet.substring(randomPoz, randomPoz + 1); } return randomString; } function getLCPAuthHeader(macId, macKey, method, urlString, data) { var d = new Date(); var n = d.getTime() + ""; var ts = n.substring(0, n.length - 3); var nonce = randomString(8); var urlReader = url.parse(urlString); var ext = ""; if ("GET" != method && data !== undefined) { ext = CryptoJS.SHA1("application/json" + JSON.stringify(data)); } macKey = macKey.replace(new RegExp("-", 'g'), "+").replace(new RegExp("_", 'g'), "/"); var normalizedRequestString = ts + "\n" + nonce + "\n" + method + "\n" + urlReader.pathname + "\n" + urlReader.hostname + "\n443\n" + ext + "\n"; var secret = CryptoJS.enc.Base64.parse(macKey); var mac = CryptoJS.HmacSHA1(normalizedRequestString, secret).toString(CryptoJS.enc.Base64); var header = "MAC id=\"" + macId + "\", ts=\"" + ts + "\", nonce=\"" + nonce + "\", ext=\"" + ext + "\", mac=\"" + mac + "\""; return header; } exports.endpoint = async function(request, response) { var body = []; request.on('data', function(chunk) { body.push(chunk); }).on('end', async function() { body = JSON.parse(Buffer.concat(body).toString()); var userMvRequest = { memberId: "501811671", firstName: "Feb", lastName: "Points" }; var userMvResponse = { balance: 10000, email: "mihnea@points.com" } var userMvDelegateRequest = { memberValidation: userMvRequest, memberValidationResponse: userMvResponse, application: SERVER+"/apps/"+APP_ID } var authHeader = getLCPAuthHeader(APP_MAC_ID, APP_MAC_KEY, "POST", SERVER+"/lps/"+LPID+"/mv-delegates/", userMvDelegateRequest); var userMvDelegateResponse = await requestPromise({ uri: SERVER+'/lps/'+LPID+'/mv-delegates/', method: 'POST', headers: { 'Authorization': authHeader, 'Content-Type': 'application/json' }, json: userMvDelegateRequest, simple: false }); var recipientMvRequest = { memberId: "501811660", firstName: "Jan", lastName: "Points" }; var recipientMvResponse = { balance: 0, email: "mihnea@points.com" } var recipientMvDelegateRequest = { memberValidation: recipientMvRequest, memberValidationResponse: recipientMvResponse, application: SERVER+"/apps/"+APP_ID } authHeader = getLCPAuthHeader(APP_MAC_ID, APP_MAC_KEY, "POST", SERVER+"/lps/"+LPID+"/mv-delegates/", recipientMvDelegateRequest); var recipientMvDelegateResponse = await requestPromise({ uri: SERVER+'/lps/'+LPID+'/mv-delegates/', method: 'POST', headers: { 'Authorization': authHeader, 'Content-Type': 'application/json' }, json: recipientMvDelegateRequest, simple: false }); var session = { "referralCode": "GoFish" }; var user = { "firstName": userMvRequest.firstName, "lastName": userMvRequest.lastName, "email": userMvResponse.email, "memberId": userMvRequest.memberId, "balance": userMvResponse.balance, "memberValidation":userMvDelegateResponse.memberValidation }; var recipient = { "firstName": recipientMvRequest.firstName, "lastName": recipientMvRequest.lastName, "email": recipientMvResponse.email, "memberId": recipientMvRequest.memberId, "balance": recipientMvResponse.balance, "memberValidation":recipientMvDelegateResponse.memberValidation }; var messageData = { "offerTypes": ["FREE-TRANSFER"], "session": session, "user": user, "recipient": recipient }; authHeader = getLCPAuthHeader(APP_MAC_ID, APP_MAC_KEY, "POST", SERVER+"/offer-sets/", messageData); var offerSet = await requestPromise({ uri: SERVER+'/offer-sets/', method: 'POST', headers: { 'Authorization': authHeader, 'Content-Type': 'application/json' }, json: messageData, simple: false }); var transferRequest = { "clientUserAgent": "Mozilla/4.0…", "clientIpAddress": "68.96.192.66", "language": "en-US", "offerSet": offerSet.links.self.href, "orderDetails": { "basePoints": 1000, "offer": offerSet.offers[0].links.self.href, "touchpoint": "storefront" }, "recipient": recipient, "session": session, "type": "FREE-TRANSFER", "user": user }; authHeader = getLCPAuthHeader(APP_MAC_ID, APP_MAC_KEY, "POST", SERVER+"/lps/"+LPID+"/transfer/", transferRequest); var transfer = await requestPromise({ uri: SERVER+"/lps/"+LPID+"/transfer/", method: 'POST', headers: { 'Authorization': authHeader, 'Content-Type': 'application/json' }, json: transferRequest, simple: false }); response.setHeader('content-type', 'application/json'); response.end(JSON.stringify(transfer)); }); }
Loading…

no comments

    sign in to comment