mtn-momo-client
Version:
A collection of utils to interact with the mtn-momo api
3 lines (2 loc) • 7.45 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("axios"),require("path"),require("uuid")):"function"==typeof define&&define.amd?define(["exports","axios","path","uuid"],t):t((e||self).mtnMomoClient={},e.axios,e.path,e.uuid)}(this,function(e,t,r,n){function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=/*#__PURE__*/i(t),a=/*#__PURE__*/i(r);function c(){return c=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},c.apply(this,arguments)}var u,s,l={v1:"v1_0",v2:"v2_0"},d=function(e){return a.default.join.apply(a.default,e)},v="https://sandbox.momodeveloper.mtn.com/",f=function(e){var t=e.baseURL,r=void 0===t?v:t;return o.default.create({headers:c({"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=v+d([l[void 0===r?"v1":r],"apiuser"]);return f({subscriptionKey:t,baseURL:n})},m=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,r=e.providerCallbackHost;try{var i=n.v4();return Promise.resolve(t.post("",{providerCallbackHost:r},{headers:{"X-Reference-Id":i}})).then(function(){return{userId:i}})}catch(e){return Promise.reject(e)}},y=function(e){var t=e.userId,r=e.client;try{var n=d([t,"apikey"]);return Promise.resolve(r.post(n)).then(function(e){return e.data})}catch(e){return Promise.reject(e)}},g={},h=function(e){return Date.now()+1e3*e-3e4},b=function(e){try{var t=function(e){var t=e.subscriptionKey,r=e.targetEnvironment,n=e.targetProduct,i=g[n];if(i)return i;var o=v+n,a=Buffer.from(e.userId+":"+e.apiKey).toString("base64");return i=f({subscriptionKey:t,headerOverrides:{"X-Target-Environment":r,Authorization:"Basic "+a},baseURL:o}),g[n]=i,i}(e);return Promise.resolve(t.post("/token/")).then(function(e){var t=e.data;return{expiresAt:h(t.expires_in),accessToken:t.access_token,tokenType:t.token_type,expiresIn:t.expires_in}})}catch(e){return Promise.reject(e)}};e.TargetEnvironment=void 0,(u=e.TargetEnvironment||(e.TargetEnvironment={})).Sandbox="sandbox",u.Production="production",e.Product=void 0,(s=e.Product||(e.Product={})).Collection="collection",s.Disbursement="disbursement",s.Remittance="remittance";var I,A={},T={},j=function(e){var t=e.subscriptionKey,r=e.targetEnvironment,n=e.apiVersion,i=void 0===n?"v1":n,o=e.targetProduct,a=e.userId,u=e.apiKey,s=o+"-"+i,P=T[s];if(P)return P;var m=v+d([o,l[i]]);return function(e){var t=e.config;e.client.interceptors.request.use(function(e){try{return Promise.resolve(function(e){try{var t,r=A[e.targetProduct],n=Date.now()>((null==(t=r)?void 0:t.expiresAt)||0),i=function(){if(!r||n)return Promise.resolve(b(e)).then(function(t){A[e.targetProduct]=r=t})}();return Promise.resolve(i&&i.then?i.then(function(){return r}):r)}catch(e){return Promise.reject(e)}}(t)).then(function(t){return c({},e,{headers:c({},e.headers,{Authorization:"Bearer "+t.accessToken})})})}catch(e){return Promise.reject(e)}})}({client:P=f({subscriptionKey:t,headerOverrides:{"X-Target-Environment":r},baseURL:m}),config:{apiKey:u,userId:a,targetProduct:o,subscriptionKey:t,targetEnvironment:r}}),T[s]=P,P},D=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)}}},E=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)}}},C=function(e){var t=e.client;return function(e){var r=e.referenceId,n=e.notificationMessage,i=e.language;try{var o=d(["/requesttopay/",r,"/deliverynotification"]);return Promise.resolve(t.post(o,{notificationMessage:n},{headers:{Language:i}})).then(function(){return{notificationMessage:n}})}catch(e){return Promise.reject(e)}}},K={collection:"/requesttopay",disbursement:"/transfer",remittance:"/transfer"},R=["callbackURL"],k=function(e){var t=e.client,r=e.targetProduct;return function(e){var i=e.callbackURL,o=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)t.indexOf(r=o[n])>=0||(i[r]=e[r]);return i}(e,R);try{var a=n.v4();return Promise.resolve(t.post(K[r],o,{headers:{"X-Callback-Url":i,"X-Reference-Id":a}})).then(function(){return{referenceId:a}})}catch(e){return Promise.reject(e)}}},x=function(e){var t=e.client,r=e.targetProduct;return function(e){var n=e.referenceId;try{var i=d([K[r],n]);return Promise.resolve(t.get(i)).then(function(e){return e.data})}catch(e){return Promise.reject(e)}}};e.AccountHolderIdVariant=void 0,(I=e.AccountHolderIdVariant||(e.AccountHolderIdVariant={})).msisdn="msisdn",I.email="email",I.partyCode="party_code";var S,_=function(e){var t=e.client;return function(e){var r=e.accountHolderIdType,n=e.accountHolderId;try{var i=d(["/accountholder/",r,n,"/active"]);return Promise.resolve(t.get(i)).then(function(e){return e.data.result})}catch(e){return Promise.reject(e)}}};e.PartyIDVariant=void 0,(S=e.PartyIDVariant||(e.PartyIDVariant={})).MSISDN="MSISDN",S.EMAIL="EMAIL",S.PARTY_CODE="PARTY_CODE",e.API_VERSION_PATH=l,e.BASE_URL=v,e.DEFAULT_CONTENT_TYPE="application/json",e.createAPIKey=y,e.createAPIUser=p,e.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 i=e.userId;return Promise.resolve(y({userId:i,client:n})).then(function(e){var o=e.apiKey;return Promise.resolve(m({userId:i,client:n})).then(function(e){return{userId:i,apiKey:o,targetEnvironment:e.targetEnvironment,subscriptionKey:t,providerCallbackHost:r}})})})}catch(e){return Promise.reject(e)}},e.createAccessToken=b,e.createClient=f,e.createCollectionAPI=function(t){var r=j(c({},t,{targetProduct:e.Product.Collection}));return{requestToPay:k({client:r,targetProduct:e.Product.Collection}),requestToPayTransactionStatus:x({client:r,targetProduct:e.Product.Collection}),getAccountBalance:D({client:r}),getBasicUserInfo:E({client:r}),validateAccountHolderStatus:_({client:r}),requestToPayDeliveryNotification:C({client:r})}},e.createDisbursementAPI=function(t){var r=j(c({},t,{targetProduct:e.Product.Disbursement}));return{transfer:k({client:r,targetProduct:e.Product.Disbursement}),getTransferStatus:x({client:r,targetProduct:e.Product.Disbursement}),getAccountBalance:D({client:r}),getBasicUserInfo:E({client:r}),validateAccountHolderStatus:_({client:r}),requestToPayDeliveryNotification:C({client:r})}},e.createProvisioningClient=P,e.createRemittanceAPI=function(t){var r=j(c({},t,{targetProduct:e.Product.Remittance}));return{transfer:k({client:r,targetProduct:e.Product.Remittance}),getTransferStatus:x({client:r,targetProduct:e.Product.Remittance}),getAccountBalance:D({client:r}),getBasicUserInfo:E({client:r}),validateAccountHolderStatus:_({client:r}),requestToPayDeliveryNotification:C({client:r})}},e.expiresInToExpiresAt=h,e.fetchAPIUser=m,e.urlPathFrom=d});
//# sourceMappingURL=index.umd.js.map