wasksofts-technology / omnipay-mpesa
lipa na mpesa omnipay网关
Requires
- php: ^7|^8
- omnipay/common: ^3
README
别名wasksofts/omnipay mpesa
Lipa na MPesa (LNM) API是一个旨在利用Safaricom推出的新功能STK Push的API。此功能允许将交易发起从付款客户的一侧移至收款组织的一侧。这消除了记住业务paybill号码和账户号码的挑战,并允许客户只需在他们的手机上输入MPesa PIN来确认交易。这是通过在客户的手机上出现的STK push/弹出窗口完成的,它会提示他们输入PIN。对于企业而言,此API使他们能够在支付请求中预先设置所有正确信息,从而减少错误支付到其系统的可能性。这是一个C2B交易,但发起者是组织而不是客户。由于组织可以在发送请求之前预先设置请求中所需的所有变量,因此此API没有像之前的C2B API那样的验证-确认过程。
TL;DR
只想看一些代码吗?
use Omnipay\Omnipay; $gateway = Omnipay::create('Mpesa'); $gateway->setStoreNumber('174379'); $gateway->setPTNumber('174379'); //paybill number or TILL number $gateway->setConsumerKey(''); $gateway->setConsumerSecret(''); $gateway->setPassKey(''); $gateway->setTestMode(false); $response = $gateway->payment([ 'amount' => '100', 'phone_number' => '254708374149', 'account' => 'apitest', 'description' => 'This is a purchase', 'callbackUrl' => 'https://example.com/callback_url.php', ])->send(); if ($response->isSuccessful()) { echo "Check phone and Input your pin to purchase!"; }else{ // Payment failed echo $response->getMessage(); } $data = $response->getData(); echo '<pre>';print_r($data);echo '</pre>';
您的回调URL应包含以下内容
用于处理STK push请求回调
$callbackJSONData=file_get_contents('php://input'); $callbackData=json_decode($callbackJSONData); $result=[ "resultDesc"=>$callbackData->Body->stkCallback->ResultDesc, "resultCode"=>$callbackData->Body->stkCallback->ResultCode, "merchantRequestID"=>$callbackData->Body->stkCallback->MerchantRequestID, "checkoutRequestID"=>$callbackData->Body->stkCallback->CheckoutRequestID, "amount"=>$callbackData->Body->stkCallback->CallbackMetadata->Item[0]->Value, "mpesaReceiptNumber"=>$callbackData->Body->stkCallback->CallbackMetadata->Item[1]->Value, "transactionDate"=>$callbackData->Body->stkCallback->CallbackMetadata->Item[3]->Value, "phoneNumber"=>$callbackData->Body->stkCallback->CallbackMetadata->Item[4]->Value ]; return json_encode($result); //you can save json_data on database
stkpushquery
$response = $gateway->confirmPayment([
'checkout_request_id' => 'ws_CO_12072024131357408712244372'
])->send();
c2b
//注册URL的实现
$response = $gateway->registerUrl()->send();
c2b的回调
$callbackJSONData=file_get_contents('php://input');
$callbackData=json_decode($callbackJSONData);
$amount = $callbackData->TransAmount;
$trx_id = $callbackData->TransID;
$phone_number = $callbackData->MSISDN;
$BillRefNumber = $callbackData->BillRefNumber;
//you can save json_data on database
Omnipay是一个框架无关的多网关支付处理库,适用于PHP 7+。此包实现了Omnipay对omnipay-lipa-na-mpesa的支持。
这里应该是您的描述。尽量限制在一两段之内,并且可能提及您支持哪些PSRs,以避免与用户和贡献者产生混淆。
安装
使用require安装网关。需要league/omnipay
基本包和此网关。
composer require league/omnipay wasksofts-technology/omnipay-mpesa
用法
此包提供以下网关
- omnipay-mpesa
有关一般用法说明,请参阅主要的Omnipay存储库。
支持
如果您遇到Omnipay的一般问题,我们建议在Stack Overflow上发布。请确保添加omnipay标签,以便可以轻松找到。
如果您想保持对发布公告的更新,讨论项目想法或提出更详细的问题,还有一个邮件列表,您可以订阅。
如果您认为您已经发现了一个错误,请使用GitHub问题跟踪器报告它,或者更好的是,分支库并提交一个拉取请求。
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过mukamanusteven@gmail.com发送电子邮件,而不是使用问题跟踪器。
致谢
许可协议
MIT 许可协议。请参阅许可文件获取更多信息。