UNPKG

mtn-momo-client

Version:

A collection of utils to interact with the mtn-momo api

3 lines (2 loc) 7.44 kB
var e=require("axios"),t=require("path"),r=require("uuid");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=/*#__PURE__*/n(e),i=/*#__PURE__*/n(t);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},a.apply(this,arguments)}var c,s,u={v1:"v1_0",v2:"v2_0"},l=function(e){return i.default.join.apply(i.default,e)},d="https://sandbox.momodeveloper.mtn.com/",v=function(e){var t=e.baseURL,r=void 0===t?d:t;return o.default.create({headers:a({"Content-Type":"application/json","Ocp-Apim-Subscription-Key":e.subscriptionKey},e.headerOverrides),baseURL:r})},p=function(e){var t=e.subscriptionKey,r=e.apiVersion,n=d+l([u[void 0===r?"v1":r],"apiuser"]);return v({subscriptionKey:t,baseURL:n})},f=function(e){var t=e.userId,r=e.client;try{return Promise.resolve(r.get("/"+t)).then(function(e){return e.data})}catch(e){return Promise.reject(e)}},P=function(e){var t=e.client,n=e.providerCallbackHost;try{var o=r.v4();return Promise.resolve(t.post("",{providerCallbackHost:n},{headers:{"X-Reference-Id":o}})).then(function(){return{userId:o}})}catch(e){return Promise.reject(e)}},m=function(e){var t=e.userId,r=e.client;try{var n=l([t,"apikey"]);return Promise.resolve(r.post(n)).then(function(e){return e.data})}catch(e){return Promise.reject(e)}},y={},g=function(e){return Date.now()+1e3*e-3e4},h=function(e){try{var t=function(e){var t=e.subscriptionKey,r=e.targetEnvironment,n=e.targetProduct,o=y[n];if(o)return o;var i=d+n,a=Buffer.from(e.userId+":"+e.apiKey).toString("base64");return o=v({subscriptionKey:t,headerOverrides:{"X-Target-Environment":r,Authorization:"Basic "+a},baseURL:i}),y[n]=o,o}(e);return Promise.resolve(t.post("/token/")).then(function(e){var t=e.data;return{expiresAt:g(t.expires_in),accessToken:t.access_token,tokenType:t.token_type,expiresIn:t.expires_in}})}catch(e){return Promise.reject(e)}};exports.TargetEnvironment=void 0,(c=exports.TargetEnvironment||(exports.TargetEnvironment={})).Sandbox="sandbox",c.Production="production",exports.Product=void 0,(s=exports.Product||(exports.Product={})).Collection="collection",s.Disbursement="disbursement",s.Remittance="remittance";var b,x={},I={},A=function(e){var t=e.subscriptionKey,r=e.targetEnvironment,n=e.apiVersion,o=void 0===n?"v1":n,i=e.targetProduct,c=e.userId,s=e.apiKey,p=i+"-"+o,f=I[p];if(f)return f;var P=d+l([i,u[o]]);return function(e){var t=e.config;e.client.interceptors.request.use(function(e){try{return Promise.resolve(function(e){try{var t,r=x[e.targetProduct],n=Date.now()>((null==(t=r)?void 0:t.expiresAt)||0),o=function(){if(!r||n)return Promise.resolve(h(e)).then(function(t){x[e.targetProduct]=r=t})}();return Promise.resolve(o&&o.then?o.then(function(){return r}):r)}catch(e){return Promise.reject(e)}}(t)).then(function(t){return a({},e,{headers:a({},e.headers,{Authorization:"Bearer "+t.accessToken})})})}catch(e){return Promise.reject(e)}})}({client:f=v({subscriptionKey:t,headerOverrides:{"X-Target-Environment":r},baseURL:P}),config:{apiKey:s,userId:c,targetProduct:i,subscriptionKey:t,targetEnvironment:r}}),I[p]=f,f},T=function(e){var t=e.client;return function(){try{return Promise.resolve(t.get("/account/balance")).then(function(e){return e.data})}catch(e){return Promise.reject(e)}}},j=function(e){var t=e.client;return function(e){var r=e.accountHolderMSISDN;try{return Promise.resolve(t.get("accountholder/msisdn/"+r+"/basicuserinfo")).then(function(e){var t=e.data;return{sub:t.sub,status:t.status,gender:t.gender,name:t.name,locale:t.locale,birthDate:t.birthdate,givenName:t.given_name,familyName:t.family_name,updatedAt:t.updated_at}})}catch(e){return Promise.reject(e)}}},D=function(e){var t=e.client;return function(e){var r=e.referenceId,n=e.notificationMessage,o=e.language;try{var i=l(["/requesttopay/",r,"/deliverynotification"]);return Promise.resolve(t.post(i,{notificationMessage:n},{headers:{Language:o}})).then(function(){return{notificationMessage:n}})}catch(e){return Promise.reject(e)}}},E={collection:"/requesttopay",disbursement:"/transfer",remittance:"/transfer"},K=["callbackURL"],C=function(e){var t=e.client,n=e.targetProduct;return function(e){var o=e.callbackURL,i=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)t.indexOf(r=i[n])>=0||(o[r]=e[r]);return o}(e,K);try{var a=r.v4();return Promise.resolve(t.post(E[n],i,{headers:{"X-Callback-Url":o,"X-Reference-Id":a}})).then(function(){return{referenceId:a}})}catch(e){return Promise.reject(e)}}},R=function(e){var t=e.client,r=e.targetProduct;return function(e){var n=e.referenceId;try{var o=l([E[r],n]);return Promise.resolve(t.get(o)).then(function(e){return e.data})}catch(e){return Promise.reject(e)}}};exports.AccountHolderIdVariant=void 0,(b=exports.AccountHolderIdVariant||(exports.AccountHolderIdVariant={})).msisdn="msisdn",b.email="email",b.partyCode="party_code";var k,S=function(e){var t=e.client;return function(e){var r=e.accountHolderIdType,n=e.accountHolderId;try{var o=l(["/accountholder/",r,n,"/active"]);return Promise.resolve(t.get(o)).then(function(e){return e.data.result})}catch(e){return Promise.reject(e)}}};exports.PartyIDVariant=void 0,(k=exports.PartyIDVariant||(exports.PartyIDVariant={})).MSISDN="MSISDN",k.EMAIL="EMAIL",k.PARTY_CODE="PARTY_CODE",exports.API_VERSION_PATH=u,exports.BASE_URL=d,exports.DEFAULT_CONTENT_TYPE="application/json",exports.createAPIKey=m,exports.createAPIUser=P,exports.createAPIUserAndKey=function(e){var t=e.subscriptionKey,r=e.providerCallbackHost;try{var n=p({subscriptionKey:t});return Promise.resolve(P({client:n,providerCallbackHost:r})).then(function(e){var o=e.userId;return Promise.resolve(m({userId:o,client:n})).then(function(e){var i=e.apiKey;return Promise.resolve(f({userId:o,client:n})).then(function(e){return{userId:o,apiKey:i,targetEnvironment:e.targetEnvironment,subscriptionKey:t,providerCallbackHost:r}})})})}catch(e){return Promise.reject(e)}},exports.createAccessToken=h,exports.createClient=v,exports.createCollectionAPI=function(e){var t=A(a({},e,{targetProduct:exports.Product.Collection}));return{requestToPay:C({client:t,targetProduct:exports.Product.Collection}),requestToPayTransactionStatus:R({client:t,targetProduct:exports.Product.Collection}),getAccountBalance:T({client:t}),getBasicUserInfo:j({client:t}),validateAccountHolderStatus:S({client:t}),requestToPayDeliveryNotification:D({client:t})}},exports.createDisbursementAPI=function(e){var t=A(a({},e,{targetProduct:exports.Product.Disbursement}));return{transfer:C({client:t,targetProduct:exports.Product.Disbursement}),getTransferStatus:R({client:t,targetProduct:exports.Product.Disbursement}),getAccountBalance:T({client:t}),getBasicUserInfo:j({client:t}),validateAccountHolderStatus:S({client:t}),requestToPayDeliveryNotification:D({client:t})}},exports.createProvisioningClient=p,exports.createRemittanceAPI=function(e){var t=A(a({},e,{targetProduct:exports.Product.Remittance}));return{transfer:C({client:t,targetProduct:exports.Product.Remittance}),getTransferStatus:R({client:t,targetProduct:exports.Product.Remittance}),getAccountBalance:T({client:t}),getBasicUserInfo:j({client:t}),validateAccountHolderStatus:S({client:t}),requestToPayDeliveryNotification:D({client:t})}},exports.expiresInToExpiresAt=g,exports.fetchAPIUser=f,exports.urlPathFrom=l; //# sourceMappingURL=index.cjs.map