amazon-payments
Version:
API wrapper for Amazon Payments
95 lines (82 loc) • 2.86 kB
JavaScript
const Helper = require('./clientHelper.js');
const carrierCodes = require("./carrierCodes.json");
exports.notifications = notifications;
function notifications(_super) {
this._super = _super;
}
notifications.prototype.carrierCodes = carrierCodes;
function buildPayload(orderReferenceId, trackingNumber, carrierCode) {
// validate order reference id
if (orderReferenceId[0].match(/^[PS]\d{2}-\d{7}-\d{7}$/)) {
throw ("Invalid order reference id")
}
// validate tracking number
if (!trackingNumber || trackingNumber === '') {
throw ("Tracking number missing")
}
// validate carrier code
const validCodes = Object.keys(carrierCodes);
if (validCodes.indexOf(carrierCode) === -1) {
throw ("Invalid/unknown carrier code");
}
return {
"amazonOrderReferenceId": orderReferenceId,
"deliveryDetails": [
{
"trackingNumber": trackingNumber,
"carrierCode": carrierCode
},
]
}
}
notifications.prototype.alexaDeliveryNotification = async function (orderReferenceId, trackingNumber, carrierCode) {
const payload = buildPayload(orderReferenceId, trackingNumber, carrierCode);
const config = this._super.config;
const environment = config.environment.Notifications;
var options = {
method: 'POST',
headers: {},
payload
};
let response;
try {
const preparedOptions = Helper.prepareOptions(options);
preparedOptions.headers = Helper.signHeaders(config, environment, preparedOptions);
response = await Helper.invokeApi(environment, preparedOptions);
} catch (error) {
console.log(error);
}
// check response
switch (response.statusCode) {
case 200:
// 200 OK
break;
case 400:
// 400 InvalidInputFormat The input provided is not in the required format.
// 400 InvalidParameterValue The[parameterName] parameter is required.
// 400 InvalidParameterValue The amazonOrderReferenceId that you submitted in this request is invalid.
// 400 InvalidParameterValue The trackingNumber or carrierCode that you submitted in this request is invalid.
console.log(`Invalid: ${response.body.message}`);
break;
case 401:
// 401 UnauthorizedAccess The specified seller account is not authorized to execute this request.
console.log(`Unauthorized: ${response.message}`);
break;
case 403:
// 403 Forbidden
console.log(`Forbidden: ${response.message}`);
break;
case 405:
// 405 Not Allowed
console.log(`Not Allowed: ${response.message}`);
break;
case 500:
// 500 InternalServerError There was an unknown error in the service.
console.log(`Service Error: ${response.message}`);
break;
default:
console.log(`Unexpected error: ${JSON.stringify(response)}`);
break;
}
return response;
};