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