wasksofts-technology/omnipay-mpesa

lipa na mpesa omnipay网关

v1.3.2 2024-07-09 20:08 UTC

This package is not auto-updated.

Last update: 2024-10-01 21:33:21 UTC


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 许可协议。请参阅许可文件获取更多信息。

捐赠