Skip to content

Instantly share code, notes, and snippets.

@vneri
Created June 25, 2018 12:22
Show Gist options
  • Save vneri/a8dc7ac842bca53a08f8ec2b957140f5 to your computer and use it in GitHub Desktop.
Save vneri/a8dc7ac842bca53a08f8ec2b957140f5 to your computer and use it in GitHub Desktop.
JavaScript snippet for generating the checkdigit of an USPS tracking number
// using USPS Barcode Construct N04
// padding function, if not available
Object.prototype.pad = function(size) {
var targetHelper = String(this);
if (targetHelper.length<size){
targetHelper = Array((size - targetHelper.length)+1).join("0") + targetHelper;
}
return targetHelper;
}
// modulo10 function
function USPSMod10(trackingNumberRaw){
// take all numbers on even positions
var evenNumbers = 0;
var oddNumbers = 0;
for (var i=0; i<=20; i++){
if (i % 2 == 0){
evenNumbers += parseInt(trackingNumberRaw[i]);
}
if (i % 2 == 1){
oddNumbers += parseInt(trackingNumberRaw[i]);
}
}
evenNumbers *= 3;
var addedNumbers = evenNumbers + oddNumbers;
// subtract from 10 to get the number that needs to be added
var checkDigit = (10 - (addedNumbers % 10)) % 10;
return String(checkDigit);
}
var trackingNumber="";
// this fields have to be populated accordingly
var servicetypecode = "";
var mailerid = "";
var packageid ="";
// channelAppID
trackingNumber += "94";
// ServiceTypeCode
trackingNumber += servicetypecode.pad(3);
// Source Identifier
trackingNumber += "20";
// MailerId
trackingNumber += mailerid.pad(9);
// Package Id
trackingNumber += packageid.pad(5);
// CheckDigit
trackingNumber += USPSMod10(trackingNumber);
// this generates a clickable link
var trackingLinkFormula = 'https://tools.usps.com/go/TrackConfirmAction_input?qtc_tLabels1=' + trackingNumber;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment