@jeremyling/sg-paynow-qr
Version:
A PayNow QR Generator for Singapore
3 lines (2 loc) • 5.09 kB
JavaScript
import*as e from"yup";import{ValidationError as t}from"yup";import"@babel/runtime/helpers/asyncToGenerator";import"@babel/runtime/regenerator";var r=new Date,n=e.object().shape({amount:e.number().moreThan(0).nullable(),editable:e.mixed().oneOf([0,1]).nullable().default(1),billNumber:e.string().default("***"),merchantName:e.string().default("NA"),merchantCountry:e.string().default("SG"),merchantCity:e.string().default("Singapore"),expiry:e.date().transform((function(e){return new Date(e)})).min(r).default(new Date(r.setDate(r.getDate()+1))).required(),uen:e.string().nullable(),mobile:e.string().when("uen",(function(t){return t?e.string().nullable():e.string().matches(/^(\+65){0,1}[3689][0-9]{7}$/g).required()}))}),i="0",a="2",u=[0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920];function o(e,t){return t<String(e).length?e.toString():Array(t-String(e).length+1).join("0")+e}function l(e){return e.getFullYear()+("0"+(e.getMonth()+1)).slice(-2)+("0"+e.getDate()).slice(-2)+("0"+e.getHours()).slice(-2)+("0"+e.getMinutes()).slice(-2)+("0"+e.getSeconds()).slice(-2)}function c(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return f(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,o=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return u=e.done,e},e:function(e){o=!0,a=e},f:function(){try{u||null==r.return||r.return()}finally{if(o)throw a}}}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function m(e){try{var r=n.validateSync(e);return r.uen?r.paymentType=a:r.paymentType=i,r.mobile&&(r.mobile=r.mobile.replace(/^([3689][0-9]{7})$/g,"+65$1")),[function(e){var t,r="",n=c(e);try{for(n.s();!(t=n.n()).done;){var i=t.value,a=i.id,l=i.value;if(Array.isArray(l)){var f,m="",d=c(l);try{for(d.s();!(f=d.n()).done;){var g=f.value,s=g.id,y=g.value;m+=String(s)+o(y.length.toString(),2)+y}}catch(e){d.e(e)}finally{d.f()}l=m}r+=String(a)+o(l.length.toString(),2)+l}}catch(e){n.e(e)}finally{n.f()}return r+="6304"+o(function(e){var t,r=65535;for(t=0;t<e.length;t++){var n=e.charCodeAt(t);if(n>255)throw new RangeError;r=u[255&(n^r>>8)]^r<<8}return(65535&(0^r)).toString(16).toUpperCase()}(r+"6304"),4)}(function(e){var t=!!e.amount,r=[{id:"00",value:"01"},{id:"01",value:t?"12":"11"},{id:"26",value:[{id:"00",value:"SG.PAYNOW"},{id:"01",value:String(e.paymentType)},{id:"02",value:"2"===e.paymentType?String(e.uen):String(e.mobile)},{id:"03",value:t&&!e.editable?"0":"1"},{id:"04",value:l(new Date(e.expiry))}]},{id:"52",value:"0000"},{id:"53",value:"702"},{id:"58",value:String(e.merchantCountry)},{id:"59",value:String(e.merchantName)},{id:"60",value:String(e.merchantCity)}];t&&(e.amount&&r.push({id:"54",value:(Math.round(100*e.amount)/100).toFixed(2)}),e.billNumber&&r.push({id:"62",value:[{id:"01",value:String(e.billNumber)}]}));return r.sort((function(e,t){return Number(e.id)-Number(t.id)}))}(r))]}catch(e){return e instanceof t?[void 0,e.errors]:[void 0,e]}}export{m as generateQr};
//# sourceMappingURL=index.esm.js.map