Payment Drivers
Payment drivers are thin adapters in laravel-payments that connect standalone SDKs to the Salami transaction lifecycle (create transaction records, handle callbacks, fire events).
Driver Architecture
Each driver extends AbstractDriver and implements one or more contracts:
| Contract |
Method |
Purpose |
RequestsPayment |
requestPayment(), checkPaymentRequestStatus() |
Collect money (STK Push) |
SendsMoney |
sendMoney() |
Send money (B2C, IFT, RTGS, etc.) |
HandlesCallback |
handleCallback() |
Process provider callbacks/IPNs |
ChecksBalance |
checkBalance() |
Query account balance |
FetchesTransactions |
fetchTransactions() |
Get mini/full statements |
FetchesTransactionStatus |
getTransactionStatus() |
Query single transaction status |
SendsAirtime |
sendAirtime() |
Purchase airtime |
ValidatesTransactions |
validateTransaction() |
Validate account/transaction |
ReversesTransactions |
reversal() |
Reverse a transaction |
RegistersUrls |
registerUrls() |
Register callback URLs |
Available Drivers
M-Pesa Kenya
| Driver Key |
Type |
Contracts |
MpesaKeExpress |
STK Push |
RequestsPayment, HandlesCallback, FetchesTransactionStatus, ReversesTransactions, ChecksBalance |
MpesaKeC2B |
C2B |
HandlesCallback, ValidatesTransactions, RegistersUrls, SimulatesTransactions, ChecksBalance, ReversesTransactions, FetchesTransactionStatus |
MpesaKeB2C |
B2C |
SendsMoney, ReversesTransactions, HandlesCallback, FetchesTransactionStatus, ChecksBalance |
MpesaKeB2B |
B2B |
SendsMoney, ReversesTransactions, FetchesTransactionStatus, ChecksBalance, HandlesCallback |
Co-op Bank Kenya
| Driver Key |
Type |
Contracts |
CoopKeExpress |
STK Push |
RequestsPayment, HandlesCallback |
CoopKeB2M |
To M-Pesa |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
CoopKeIFT |
Internal Transfer |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
CoopKePesaLink |
PesaLink Bank |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
CoopKePesaLinkPhone |
PesaLink Phone |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
CoopKeAccountBalance |
Balance |
ChecksBalance |
CoopKeMiniStatement |
Statements |
FetchesTransactions |
CoopKeAccountValidation |
Validation |
ValidatesTransactions |
CoopKeExchangeRate |
FX Rates |
(custom method) |
Equity Bank Kenya (Jenga)
| Driver Key |
Type |
Contracts |
EquityKeExpress |
M-Pesa STK |
RequestsPayment, HandlesCallback |
EquityKeEquitelExpress |
Equitel STK |
RequestsPayment, HandlesCallback |
EquityKeIFT |
Internal Transfer |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
EquityKeB2M |
To Mobile |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
EquityKeRTGS |
RTGS |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
EquityKeSWIFT |
SWIFT |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
EquityKePesaLink |
PesaLink Bank |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
EquityKePesaLinkPhone |
PesaLink Phone |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
EquityKeAccountBalance |
Balance |
ChecksBalance |
EquityKeMiniStatement |
Statements |
FetchesTransactions |
EquityKeAirtime |
Airtime |
SendsAirtime |
Airtel Money Kenya
| Driver Key |
Type |
Contracts |
AirtelKeExpress |
USSD Push |
RequestsPayment, HandlesCallback |
AirtelKeB2C |
Disbursement |
SendsMoney, HandlesCallback, FetchesTransactionStatus |
AirtelKeAccountBalance |
Balance |
ChecksBalance |
Other
| Driver Key |
Provider |
Contracts |
AirtelGh |
Airtel Ghana |
ExtractsTransactionsFromSms |
MtnGh / MtnRwa / MtnUg |
MTN MoMo |
ExtractsTransactionsFromSms |
PesalinkKe |
PesaLink |
ExtractsTransactionsFromSms |
PaypalIPN |
PayPal |
HandlesCallback |
Kopokopo |
Kopokopo |
HandlesCallback |
TigoTz |
Tigo Pesa |
ExtractsTransactionsFromSms |
Log |
Testing |
(multiple) |
Usage via PaymentsManager
// Get a driver by key
$driver = app('payments')->driver('CoopKeExpress');
// From a PaymentApp model
$driver = app('payments')->driverFromApp($paymentApp);
// Use it
$transaction = $driver->requestPayment([
'Amount' => 1000,
'PhoneNumber' => '254712345678',
]);