mwanziamutua/omnipay-mpesa

mpesa omnipay网关

v1.0.0 2022-11-04 07:44 UTC

This package is auto-updated.

Last update: 2024-09-04 12:15:37 UTC


README

Lipa na MPesa (LNM) API 是一个利用 Safaricom 推出的新功能 STK Push 设计的 API。此功能允许交易发起从付款客户的侧面转移到收款组织的侧面。这消除了记住业务支付账单号和账号号的挑战,并允许客户通过在手机上输入他们的 MPesa PIN 简单确认交易。这是通过在客户手机上出现的 STK push/弹出窗口完成的,该窗口提示他们输入 PIN。对于企业来说,此 API 使他们能够在支付请求中预先设置所有正确信息,并减少向其系统执行错误付款的机会。这是一个 C2B 交易,但发起者是组织而不是客户。由于组织可以在发送请求之前预先设置请求中所需的所有变量,因此此 API 没有像以前的 C2B API 那样的验证-确认过程。

TL;DR

只想看看一些代码吗?

  use Omnipay\Omnipay;
  use Omnipay\Mpesa;

  $gateway = Omnipay::create('Mpesa');
  $gateway->setShortCode('174379');
  $gateway->setConsumerKey('');
  $gateway->setConsumerSecret('');
  $gateway->setPassKey('');
  $gateway->setTestMode('sandbox'); 

      $purchase = $gateway->purchase(array(
         'amount' => '100',
         'phone_number' => '254708374149',
         'account' => 'apitest',
         'description' => 'This is a purchase',
         'callbackUrl' => 'https://example.com/callback_url.php',
       ));
       
       
       if ($response->isSuccessful()) {
             echo "Input your pin to purchase!";

       }else{
           // Payment failed
           return $response->getMessage();
      } 

      $data = $response->getData();
      echo '<pre>';print_r($data);echo '</pre>';

您的回调 URL 应该包含以下内容

/**
 * Use this to process the STK push request callback
 */
    $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

c2b 模拟

我们正在实施 c2b,我们将很快更新

Omnipay 是一个与框架无关、多网关支付处理库,适用于 PHP 5.3+。此包实现了 Omnipay 对 omnipay-lipa-na-mpesa 的支持。

这里应该放置您的描述。尽量限制在一两段之内,并提及您支持哪些 PSRs,以避免与用户和贡献者产生混淆。

安装

使用 require 安装网关。需要 league/omnipay 基础包和此网关。

$ composer require league/omnipay mwanziamutua/omnipay-mpesa -

用法

此包提供以下网关

  • omnipay-mpesa

有关一般用法说明,请参阅主 Omnipay 仓库。

支持

如果您在使用 Omnipay 时遇到一般问题,我们建议您在 Stack Overflow 上发布。确保添加 omnipay 标签,以便可以轻松找到。

如果您想了解发布公告,讨论项目想法或提出更详细的问题,还有一个您可以订阅的 邮件列表

如果您认为您发现了一个错误,请使用 GitHub 问题跟踪器 报告,或者最好是分叉库并提交拉取请求。

变更日志

请参阅 CHANGELOG 了解最近更改的信息。

测试

$ composer test

贡献

请参阅 CONTRIBUTING 了解详细信息。