{
	"variables": [],
	"info": {
		"name": "FX API",
		"_postman_id": "ed23d2f7-74ce-ced8-6409-653e48f2d5af",
		"description": "",
		"schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json"
	},
	"item": [
		{
			"name": "Get all FX rates",
			"event": [
				{
					"listen": "prerequest",
					"script": {
						"type": "text/javascript",
						"exec": [
							"////////////////////////////////\r",
							"// Please set your secret key //\r",
							"// as global var \"secretKey\"! //\r",
							"////////////////////////////////\r",
							"\r",
							"// https://gist.github.com/jbt/1245967/3fad2ddde38e8c184cf144a668a367157f1939f7\r",
							"formatDate = function(){\r",
							"\tvar dayNames = [\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];\r",
							"\tvar monthNames = [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\r",
							"\r",
							"\tfunction zp(a,b){return(1e9+a+'').slice(-b)} // pads the number a until it is b digits long\r",
							"\tfunction or(a){return[\"th\",\"st\",\"nd\",\"rd\"][(a=~~(a<0?-a:a)%100)>10&&a<14||(a%=10)>3?0:a]} // returns ordinal for number a\r",
							"\tfunction fm(y){var d=new Date(y,0,1);while(d.getDay()-1)d.setDate(d.getDate()+1);return+d} // returns timestamp of first monday in year y\r",
							"\tfunction mn(d){return 864e5*~~(d/864e5)} // Timestamp of midnight\r",
							"\r",
							"\treturn function(format, dt){\r",
							"\t\tformat = format.replace(/r/g,'D, d M Y H:i:s O')\r",
							"\t\t\t\t\t.replace(/c/g,'Y-m-d\\\\TH:i:sP');\r",
							"\t\tdt = dt || new Date();\r",
							"\t\tvar year = dt.getFullYear(),\r",
							"\t\t\tmonth = dt.getMonth(),\r",
							"\t\t\tdate = dt.getDate(),\r",
							"\t\t\tday = dt.getDay(),\r",
							"\t\t\thour = dt.getHours(),\r",
							"\t\t\tmins = dt.getMinutes(),\r",
							"\t\t\tsecs = dt.getSeconds(),\r",
							"\t\t\tms = dt.getMilliseconds(),\r",
							"\t\t\ttz = dt.getTimezoneOffset();\r",
							"\t\tvar bits = { // in the order they appear on http://php.net/manual/en/function.date.php\r",
							"\t\t\td: zp(date, 2),\r",
							"\t\t\tD: dayNames[day].substr(0,3),\r",
							"\t\t\tj: date,\r",
							"\t\t\tl: dayNames[day],\r",
							"\t\t\tN: day || 7,\r",
							"\t\t\tS: or(date),\r",
							"\t\t\tw: day,\r",
							"\t\t\tz: 0|(dt-new Date(year,0,1))/864e5,\r",
							"\t\t\tW: Math.ceil(~~((mn(dt)-fm(year))/864e5+0.5)/7),\r",
							"\t\t\tF: monthNames[month],\r",
							"\t\t\tm: zp(month+1,2),\r",
							"\t\t\tM: monthNames[month].substr(0,3),\r",
							"\t\t\tn: month+1,\r",
							"\t\t\tt: (new Date(year,month+1,0)).getDate(),\r",
							"\t\t\tL: +((new Date(year,2,0)).getDate()==29),\r",
							"\t\t\to: year-+(new Date(fm(year))>dt),\r",
							"\t\t\tY: year,\r",
							"\t\t\ty: (year+'').slice(-2),\r",
							"\t\t\ta: hour>11?'pm':'am',\r",
							"\t\t\tA: hour>11?'PM':'AM',\r",
							"\t\t\tB: 0|(ms+1e3*(secs+60*(mins+60*hour)))/86400,\r",
							"\t\t\tg: (hour%12)||12,\r",
							"\t\t\tG: hour,\r",
							"\t\t\th: zp((hour%12)||12,2),\r",
							"\t\t\tH: zp(hour,2),\r",
							"\t\t\ti: zp(mins,2),\r",
							"\t\t\ts: zp(secs,2),\r",
							"\t\t\tu: ms*1000,\r",
							"\t\t\te: undefined, // Can this be done in js?\r",
							"\t\t\tI: +!!((dt-new Date(year,0,1))%864e5),\r",
							"\t\t\tO: /(\\S*\\s){5}\\S+([\\+\\-]\\d{4})/.exec(dt.toString())[2],\r",
							"\t\t\tP: /(\\S*\\s){5}\\S+([\\+\\-]\\d{2})(\\d{2})/.exec(dt.toString()).slice(2).join(':'),\r",
							"\t\t\tT: undefined, // Can this be done in js?\r",
							"\t\t\tZ: -tz*60,\r",
							"\t\t\tU: 0|dt/1000\r",
							"\t\t}\r",
							"\r",
							"\t\tvar out = '';\r",
							"\r",
							"\t\twhile(format){\r",
							"\t\t\tvar c = format.charAt(0);\r",
							"\t\t\tif(c=='\\\\'){\r",
							"\t\t\t\tout += format.charAt(1);\r",
							"\t\t\t\tformat = format.slice(2);\r",
							"\t\t\t\tcontinue;\r",
							"\t\t\t}\r",
							"\t\t\tvar bit = bits[c];\r",
							"\t\t\tout += (bit!==undefined)?bit:c;\r",
							"\t\t\tformat = format.slice(1);\r",
							"\t\t}\r",
							"\t\treturn out;\r",
							"\t}\r",
							"}();\r",
							"\r",
							"var paramsString = request.url.split('?')[1];\r",
							"var eachParamArray = paramsString.split('&');\r",
							"var params = {};\r",
							"eachParamArray.forEach((param) => {\r",
							"    var key = param.split('=')[0];\r",
							"    var value = param.split('=')[1];\r",
							"    Object.assign(params, {[key]: value});\r",
							"});\r",
							"\r",
							"var orderedParams = {};\r",
							"Object.keys(params).sort().forEach(function(key) {\r",
							"    if (key === 'dateTime') {\r",
							"        orderedParams['dateTime'] = formatDate('Y-m-d\\TH:i:sP');\r",
							"        postman.setGlobalVariable(\"dateTime\", encodeURIComponent(orderedParams['dateTime']));\r",
							"    } else if (key !== 'signature') {\r",
							"        orderedParams[key] = params[key];\r",
							"    }\r",
							"    \r",
							"});\r",
							"\r",
							"var sourceString = '';\r",
							"\r",
							"for (var key in orderedParams) {\r",
							"  if (orderedParams.hasOwnProperty(key)) {\r",
							"      sourceString += (orderedParams[key]).length + '' + orderedParams[key];\r",
							"  }\r",
							"}\r",
							"\r",
							"var secretKey = postman.getGlobalVariable('secretKey');\r",
							"\r",
							"postman.setGlobalVariable(\"signature\", CryptoJS.HmacSHA256(sourceString, secretKey));\r",
							""
						]
					}
				}
			],
			"request": {
				"url": {
					"raw": "secure.payu.ro/api/fx/rates/YOUR_CURRENCY_CODE_HERE?signature={{signature}}&dateTime={{dateTime}}&merchant=YOUR_MERCHANT_CODE",
					"host": [
                        "secure", "payu", "ro"
					],
					"path": [
						"api",
						"fx",
						"rates",
						"YOUR_CURRENCY_CODE_HERE"
					],
					"query": [
						{
							"key": "signature",
							"value": "{{signature}}",
							"equals": true,
							"description": ""
						},
						{
							"key": "dateTime",
							"value": "{{dateTime}}",
							"equals": true,
							"description": ""
						},
						{
							"key": "merchant",
							"value": "YOUR_MERCHANT_CODE",
							"equals": true,
							"description": ""
						}
					],
					"variable": []
				},
				"method": "GET",
				"header": [],
				"body": {},
				"description": ""
			},
			"response": []
		}
	]
}
