M-Pesa ist ein mobiltelefonbasierter Geldtransfer-, Finanzierungs- und Mikrofinanzierungsdienst. Der Dienst ermöglicht es Benutzern, Geld einzuzahlen, abzuheben, Geld zu überweisen und Waren und Dienstleistungen (Lipa na M-Pesa) einfach mit einem mobilen Gerät zu bezahlen. Um Entwicklern bei der Implementierung von Mpesa auf ihren Plattformen zu helfen, hat Safaricom die Daraja-API veröffentlicht, eine REST-basierte API, die die Funktionalitäten von Mpesa auf Systementwickler verlagert. Lipa na Mpesa Online ist eine der Funktionalitäten, die von der Daraja-API bereitgestellt werden. Es ist ein Dienst, der verwendet wird, um Mpesa-Transaktionen im Namen des Kunden zu initiieren STK-PUSH. Das bedeutet, dass der Benutzer lediglich die PIN eingeben muss. Es wird unter anderem in E-Commerce- und Rechnungszahlungssystemen eingesetzt.
Safaricom kontrolliert alle Operationen bezüglich Mpesa und Daraja API. Für den Zugriff auf die Daraja-API benötigen Sie ein Entwicklerkonto. Die folgenden Schritte erläutern, wie Sie ein Entwicklerkonto erstellen können.
Um die Daraja-API verwenden zu können, benötigen Sie eine App, damit Sie über die erforderlichen Zugriffsschlüssel verfügen. Befolgen Sie diese Schritte, um eine App zu erstellen.
Konfigurieren der Anwendung
Nachdem Sie das Entwicklerkonto und eine App eingerichtet haben, ist es an der Zeit, Ihre Anwendung einzurichten. Implementieren Sie eine REST-API mit dem Express.js-Framework. Ihr Endziel ist es, einen funktionierenden Endpunkt für Lipa na Mpesa online zu implementieren. Um die Kommunikation zu und von der Daraja-API abzuwickeln, können Sie verwenden Axios. Um effektiv mitzumachen, klonen Sie das abgeschlossene Projekt aus GitHub. Um Ihre API zu testen, können Sie verwenden Postman.
Abrufen des Verbraucherschlüssels und des Verbrauchergeheimnisses
Klicken Sie auf der Apps-Seite des Portals auf die neu erstellte App aus dem vorherigen Prozess. Kopieren Sie im Abschnitt Schlüssel den Verbraucherschlüssel und das Verbrauchergeheimnis und fügen Sie sie in Ihre .env Datei jeweils wie unten gezeigt:
//in the .env file
consumer_key = "your consumer key"
consumer_secret = "your consumer secret"
Nachdem Sie den Verbraucherschlüssel und das Verbrauchergeheimnis gespeichert haben, können Sie mit dem nächsten Schritt zum Abrufen eines OAuth-Tokens fortfahren.
Um jeden Aufruf an die Daraja-API zu tätigen, müssen Sie immer ein OAuth-Token bereitstellen. Aus diesem Grund implementieren Sie es als Middleware, die jedes Mal aufgerufen wird, wenn Sie auf einen Endpunkt zugreifen. Die Funktion wird wie folgt sein:
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']
});
}
};
Nachdem Sie ein Zugriffstoken generiert haben, können Sie nun Ihre Kernfunktionalität implementieren. Da es sich bei Express.js um eine Reihe von Middleware-Aufrufen handelt, implementieren Sie es auch als Middleware. Die Umsetzung erfolgt wie folgt:
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']
});
};
};
Die Implementierung folgt diesen Schritten:
Stellen Sie mit dem Befehl sicher, dass Ihr Server läuft:
npm run dev
Öffnen Sie dann einen weiteren Tab und führen Sie den folgenden Befehl aus:
npm run ngrok
Dadurch werden Sie zu einem bestimmten Link weitergeleitet, z http://78066c1c2d6b.ngrok.io. Kopieren Sie diesen Link und fügen Sie die callBackUrl-Variable ein. Beachten Sie, dass der Link jedes Mal anders ist, wenn Sie den Server stoppen und erneut starten.
Lipa na Mpesa Online-Rückruf
Wenn Sie eine Anfrage senden, wird die Antwort von der API über den Rückruf gesendet. Falls Sie einige Datensätze aktualisieren möchten, können Sie sie hier basierend auf der zurückgesendeten Antwort aktualisieren. Einen einfachen Callback implementieren Sie als Methode in der Klasse.
lipaNaMpesaOnlineCallback(req,res){
//Get the transaction description
let message = req.body.Body.stkCallback['ResultDesc'];
return res.send({
success:true,
message
});
};
Rufen Sie die Beschreibung der durchgeführten Transaktion auf oder senden Sie die gesendete Nachricht zurück.
Wenn Sie Ihre App per Push in die Produktion übertragen möchten, müssen Sie die Rückruf-URL in Ihre Serverdomäne ändern, wenn sie online gehostet wird. Nachdem Sie Anmeldeinformationen hinzugefügt haben .env Datei, fügen Sie sie Ihrer hinzu .gitignore -Datei, damit Sie Ihre Anmeldeinformationen nicht preisgeben, wenn Sie Ihr Projekt per Push an GitHub übertragen.
Victor Mochere ist Blogger, Social Media Influencer und Netpreneur, der digitale Inhalte erstellt und vermarktet.
Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.
Wenn Sie auf victor-mochere.com veröffentlicht werden möchten, senden Sie uns Ihren Artikel bitte hier Formular.
Wenn es ein Thema gibt, das Sie auf victor-mochere.com veröffentlicht sehen möchten, senden Sie es bitte über dieses an uns Formular.
Wir verpflichten uns, unsere redaktionellen Standards, einschließlich der Genauigkeit, einzuhalten. Unsere Politik besteht darin, jedes Problem von Fall zu Fall zu überprüfen, sobald ein potenzieller Fehler oder ein Klärungsbedarf vorliegt, und ihn so schnell wie möglich zu beheben. Wenn Sie einen Fehler oder Tippfehler bemerken, der korrigiert werden muss, zögern Sie bitte nicht Kontaktieren Sie uns zum sofortigen Handeln.
Die Erlaubnis zur Verwendung von Zitaten aus jedem Artikel wird unter der Voraussetzung erteilt, dass eine angemessene Quellenangabe durch Verweis auf den direkten Link des Artikels auf Victor Mochere. Das Reproduzieren von Inhalten auf dieser Website ohne ausdrückliche Genehmigung ist jedoch strengstens untersagt.
Unsere Inhalte sind leserunterstützt. Das heißt, wenn Sie auf einige der Anzeigen oder Links auf dieser Website klicken, erhalten wir möglicherweise eine Provision.
Victor Mochere ist einer der größten Informationsblogs im Internet. Wir veröffentlichen gut kuratierte aktuelle Fakten und wichtige Updates aus der ganzen Welt.
© 2022 Victor Mochere. Alle Rechte vorbehalten.
© 2022 Victor Mochere. Alle Rechte vorbehalten.