ivantoz / mpesa
一个用于Mpesa API的PHP包
Requires
- php: >=5.3.0
README
介绍
本包旨在帮助PHP开发者轻松实现各种Mpesa API。它基于REST API,其文档可在http://developer.safaricom.co.ke上找到。
使用composer安装
composer require ivantoz/mpesa
配置
在项目根目录下创建一个.env文件,并在其中设置消费者密钥和消费者密钥,如下所示
MPESA_CONSUMER_KEY= [消费者密钥]
MPESA_CONSUMER_SECRET=[消费者密钥]
MPESA_ENV=[生产环境或沙盒环境]
对于Laravel用户,打开Config/App.php文件,在providers下添加\Ivantoz\Mpesa\MpesaServiceProvider::class
,在aliases下添加' Mpesa'=> \Ivantoz\Mpesa\MpesaServiceProvider::class。
记得在切换沙盒和生产环境时,适当编辑consumer_key和consumer_secret值。
用法
确认和验证URL
B2C付款请求
这将在M-Pesa短码和注册在M-Pesa上的手机号码之间创建交易。
$mpesa= new \Ivantoz\Mpesa\Mpesa();
$b2cTransaction=$mpesa->b2c($InitiatorName, $SecurityCredential, $CommandID, $Amount, $PartyA, $PartyB, $Remarks, $QueueTimeOutURL, $ResultURL, $Occasion);
账户余额请求
用于查询M-Pesa BuyGoods(收银机号)的余额。
$mpesa= new \Ivantoz\Mpesa\Mpesa();
$balanceInquiry=$mpesa->accountBalance($CommandID, $Initiator, $SecurityCredential, $PartyA, $IdentifierType, $Remarks, $QueueTimeOutURL, $ResultURL);
交易状态请求 这用于检查交易状态。
$mpesa= new \Ivantoz\Mpesa\Mpesa();
$trasactionStatus=$mpesa->transactionStatus($Initiator, $SecurityCredential, $CommandID, $TransactionID, $PartyA, $IdentifierType, $ResultURL, $QueueTimeOutURL, $Remarks, $Occasion);
C2B付款请求
用于在客户和企业之间模拟资金转移。
$mpesa= new \Ivantoz\Mpesa\Mpesa();
$b2bTransaction=$mpesa->c2b($ShortCode, $CommandID, $Amount, $Msisdn, $BillRefNumber );
需要注意的是,您应该在已注册的验证和确认URL中注册,以便将回调响应发送到这些URL。
STK推送模拟
这用于代表客户发起在线付款。
$mpesa= new \Ivantoz\Mpesa\Mpesa();
$stkPushSimulation=$mpesa->STKPushSimulation($BusinessShortCode, $LipaNaMpesaPasskey, $TransactionType, $Amount, $PartyA, $PartyB, $PhoneNumber, $CallBackURL, $AccountReference, $TransactionDesc, $Remarks);
STK推送状态查询
这用于检查Lipa Na M-Pesa在线付款的状态。
$mpesa= new \Ivantoz\Mpesa\Mpesa();
$STKPushRequestStatus=$mpesa->STKPushQuery($checkoutRequestID,$businessShortCode,$password,$timestamp);
回调路由 M-Pesa API是异步的。当API网关接收到有效的M-Pesa API请求时,它被发送到M-Pesa,并添加到队列中。M-Pesa随后处理队列中的请求,并将响应发送到API网关,API网关然后将响应转发到在CallBackURL或ResultURL请求参数中注册的URL。当M-Pesa接收到的请求比队列能处理的更多时,M-Pesa会通过拒绝更多请求来响应,API网关将向在QueueTimeOutURL请求参数中注册的URL发送队列超时响应。
从回调中获取POST数据 这用于以JSON格式从回调中获取POST数据。可以将数据解码并存储在数据库中。
$mpesa= new \Ivantoz\Mpesa\Mpesa();
$callbackData=$mpesa->getDataFromCallback();
完成交易 在从回调中获取POST数据后,在回调路由的末尾使用此方法来完成交易
$mpesa= new \Ivantoz\Mpesa\Mpesa();
$callbackData=$mpesa->finishTransaction();
如果验证失败,将false
传递给finishTransaction()
$mpesa= new \Ivantoz\Mpesa\Mpesa();
$callbackData=$mpesa->finishTransaction(false);