M-Pesa er en mobiltelefonbaseret pengeoverførsels-, finansierings- og mikrofinansieringstjeneste. Tjenesten giver brugerne mulighed for nemt at indbetale, hæve, overføre penge og betale for varer og tjenester (Lipa na M-Pesa) med en mobilenhed. For at hjælpe udviklere med at implementere Mpesa på deres platforme udgav Safaricom Daraja API, en REST-baseret API, der flytter Mpesas funktionalitet til systemudviklere. Lipa na Mpesa Online er en af funktionerne leveret af Daraja API. Det er en tjeneste, der bruges til at starte Mpesa-transaktioner på vegne af den kunde, der bruger STK-PUSH. Det betyder, at brugeren kun skal indtaste PIN-koden. Det anvendes blandt andet i e-handel og regningsbetalingssystemer.
Safaricom kontrollerer alle operationer vedrørende Mpesa og Daraja API. For at du kan få adgang til Daraja API, skal du have en udviklerkonto. De følgende trin forklarer, hvordan du kan oprette en udviklerkonto.
For at kunne bruge Daraja API'en skal du have en app, så du har de nødvendige adgangsnøgler. Følg disse trin for at oprette en app.
Konfiguration af applikationen
Efter at have konfigureret udviklerkontoen og en app, er det tid til at konfigurere din applikation. Implementer en REST API med Express.js framework. Dit slutmål er at implementere et fungerende slutpunkt for Lipa na Mpesa online. For at håndtere kommunikation til og fra Daraja API kan du bruge Axios. For at følge med effektivt skal du klone det afsluttede projekt fra GitHub. For at teste din API kan du bruge Postman.
Indhentning af forbrugernøgle og forbrugerhemmelighed
På portalens apps-side skal du klikke på den nyoprettede app fra den forrige proces. I nøgleafsnittet skal du kopiere forbrugernøglen og forbrugerhemmeligheden og indsætte dem i din .env fil som vist nedenfor:
//in the .env file
consumer_key = "your consumer key"
consumer_secret = "your consumer secret"
Når du har gemt forbrugernøglen og forbrugerhemmeligheden, er du indstillet til at fortsætte til næste trin med at få et OAuth-token.
For at foretage hvert opkald til Daraja API'en skal du altid levere et OAuth-token. Af denne grund vil du implementere det som middleware, der skal kaldes hver gang du får adgang til et slutpunkt. Funktionen bliver som følger:
async getOAuthToken(req,res,next){
let consumer_key = process.env.consumer_key;
let consumer_secret = process.env.consumer_secret;
let url = process.env.oauth_token_url;
//form a buffer of the consumer key and secret
let buffer = new Buffer.from(consumer_key+":"+consumer_secret);
let auth = `Basic ${buffer.toString('base64')}`;
try{
let {data} = await axios.get(url,{
"headers":{
"Authorization":auth
}
});
req.token = data['access_token'];
return next();
}catch(err){
return res.send({
success:false,
message:err['response']['statusText']
});
}
};
Efter at have genereret et adgangstoken kan du nu implementere din kernefunktionalitet. Da Express.js er en serie af middleware-kald, vil du også implementere det som en middleware. Implementeringen skal være som følger:
async lipaNaMpesaOnline(req,res){
let token = req.token;
let auth = `Bearer ${token}`;
//getting the timestamp
let timestamp = require('../middleware/timestamp').timestamp;
let url = process.env.lipa_na_mpesa_url;
let bs_short_code = process.env.lipa_na_mpesa_shortcode;
let passkey = process.env.lipa_na_mpesa_passkey;
let password = new Buffer.from(`${bs_short_code}${passkey}${timestamp}`).toString('base64');
let transcation_type = "CustomerPayBillOnline";
let amount = "1"; //you can enter any amount
let partyA = "party-sending-funds"; //should follow the format:2547xxxxxxxx
let partyB = process.env.lipa_na_mpesa_shortcode;
let phoneNumber = "party-sending-funds"; //should follow the format:2547xxxxxxxx
let callBackUrl = "your-ngrok-url/mpesa/lipa-na-mpesa-callback";
let accountReference = "lipa-na-mpesa-tutorial";
let transaction_desc = "Testing lipa na mpesa functionality";
try {
let {data} = await axios.post(url,{
"BusinessShortCode":bs_short_code,
"Password":password,
"Timestamp":timestamp,
"TransactionType":transcation_type,
"Amount":amount,
"PartyA":partyA,
"PartyB":partyB,
"PhoneNumber":phoneNumber,
"CallBackURL":callBackUrl,
"AccountReference":accountReference,
"TransactionDesc":transaction_desc
},{
"headers":{
"Authorization":auth
}
}).catch(console.log);
return res.send({
success:true,
message:data
});
}catch(err){
return res.send({
success:false,
message:err['response']['statusText']
});
};
};
Implementeringen følger disse trin:
Sørg for, at din server kører med kommandoen:
npm run dev
Åbn derefter en anden fane og kør følgende kommando:
npm run ngrok
Dette vil videresende dig til et bestemt link som f.eks http://78066c1c2d6b.ngrok.io. Kopiér det link og indsæt callBackUrl-variablen. Bemærk, at linket er forskelligt, hver gang du stopper og starter serveren igen.
Lipa na Mpesa online tilbagekald
Når du sender en anmodning, vil svaret fra API'en blive sendt via tilbagekaldet. Hvis du ønsker at opdatere nogle poster, kan du opdatere dem her baseret på svaret, der er sendt tilbage. Du implementerer et simpelt tilbagekald som metode i klassen.
lipaNaMpesaOnlineCallback(req,res){
//Get the transaction description
let message = req.body.Body.stkCallback['ResultDesc'];
return res.send({
success:true,
message
});
};
Få adgang til beskrivelsen af den gennemførte transaktion eller returner den sendte besked.
Hvis du vil skubbe din app i produktion, skal du ændre callback-URL'en til dit serverdomæne, når den hostes online. Når du har tilføjet legitimationsoplysninger til .env fil, skal du tilføje den til din .gitignore fil, så du ikke afslører dine legitimationsoplysninger, når du skubber dit projekt til GitHub.
Victor Mochere er en blogger, influencer på sociale medier og en netprenør, der skaber og markedsfører digitalt indhold.
Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.
Hvis du ønsker at blive offentliggjort på victor-mochere.com, skal du sende os din artikel ved hjælp af denne formular.
Hvis der er et emne, du vil se offentliggjort på victor-mochere.com, kan du sende det til os ved hjælp af dette formular.
Vi er forpligtet til at opretholde vores redaktionelle standarder, herunder nøjagtighed. Vores politik er at gennemgå hvert emne fra sag til sag, straks efter at være opmærksom på en potentiel fejl eller behov for afklaring, og at løse det så hurtigt som muligt. Hvis du bemærker en fejl eller skrivefejl, der skal rettes, så tøv ikke med at kontakte os til øjeblikkelig handling.
Tilladelse til at bruge citater fra enhver artikel gives under forudsætning af, at passende kreditering af kilden gives ved at henvise til artiklens direkte link på Victor Mochere. Imidlertid er reproduktion af noget indhold på dette websted uden eksplicit tilladelse forbudt.
Vores indhold er læserstøttet. Det betyder, at hvis du klikker på nogle af annoncerne eller links på denne hjemmeside, så kan vi optjene en kommission.
Victor Mochere er en af de største informative blogs på nettet. Vi udgiver velkorrerede opdaterede fakta og vigtige opdateringer fra hele verden.
© 2022 Victor Mochere. Alle rettigheder forbeholdes.
© 2022 Victor Mochere. Alle rettigheder forbeholdes.