linlak / momoapi
Momo php 库是一个小巧的 php 包,帮助开发者将 momo api 集成到他们的项目(s)中。
Requires
- php: >=5.4
- guzzlehttp/guzzle: ^6.3
Requires (Dev)
- phpunit/phpunit: 5.2.*
Suggests
- guzzlehttp/guzzle: Required to perform http requests
This package is auto-updated.
Last update: 2024-09-13 05:27:49 UTC
README
这是一个为帮助开发者轻松将 momo api 集成到其系统中而设计的 php 库。
解决方案
在了解到大多数开发者在将 momoapi 集成到他们的系统中遇到困难后,我们提出了这个简单的 php 库,以使集成变得简单快捷。
先决条件
在您开始使用此库之前,我们假设您对 php、composer 和命名空间自动加载有良好的了解。并且已安装所有所需的软件以运行此处提供的示例。
您还必须在 Momo 开发者门户上有一个账户 https://momodeveloper.mtn.com/
软件
以下软件对于更好的结果是必需的:-
- 支持 PHP 和 MYSQL 的测试服务器,例如 xampp、lampp、wampp 等。
- Composer 是 PHP 的依赖关系管理器。 https://composer.php.ac.cn/
- 文本编辑器
- Sublime text
- 记事本 ++
- Visual code 等。
- 网页浏览器,例如 google chrome、mozilla 等。
特性
- 此库依赖于 guzzlehttp 来执行 HTTP 请求。
- ApiUsers、accessTokens、apiKeys 存储在数据库中,所有这些都是在第一次初始化产品时完成的。
- 当 accessTokens 接近到期时,会刷新它们。我们为您提供了所有这些。
安装
使用 composer 管理您的依赖关系并下载 Momo Api 库
composer require linlak/momoapi
示例
创建 ApiUser https://momodeveloper.mtn.com/docs/services/sandbox-provisioning-api
以下代码片段将帮助创建一个 apiUser,这支持所有产品,包括以下内容
- Collection https://momodeveloper.mtn.com/docs/services/collection
- Remittances https://momodeveloper.mtn.com/docs/services/remittance
- Disbursements https://momodeveloper.mtn.com/docs/services/disbursement
注意
每次我们在花括号 ("{text}") 中显示文本时,请将文本替换为所需的数据,不带括号。
让我们从以下代码片段中启动我们的 momo 库开始。
**注意:** apiUser 是自动生成的
momo_bootstrap.php
<?php
set_time_limit(500);
require '{path-to-vendor}/vendor/autoload.php';
use Momo\MomoApp\Bootstraper;
$momoBootstrap=new Bootstraper('{dbHost}','{dbName}','{dbUser}','{dbPass}','{environment}');
我们将在以下任务中执行以下操作
- 请求余额
- 验证账户持有人
momo_collections.php
<?php
require_once "momo_bootstrap.php}";
$callBackUrl="{callbackurl}";
$collection=$momoBootstrap->initCollection("{collection primaryKey}",{collection secondaryKey},$callbackUrl);
momo_remittances.php
<?php
require_once "momo_bootstrap.php}";
$callBackUrl="{callbackurl}";
$remittances=$momoBootstrap->initRemittances("{remittances primaryKey}",{remittances secondaryKey},$callBackUrl);
momo_disbursements.php
<?php
require_once "momo_bootstrap.php}";
$callBackUrl="{callbackurl}";
$disbursements=$momoBootstrap->initDisbursements("{disbursements primaryKey}",{disbursements secondaryKey},$callBackUrl);
collection_balance.php
<?php
require_once "momo_collections.php";
//instanceof BalanceResponse
$result=$collection->requestBalance();
//let's print the result
if($result->isFound()){
$availableBalance=$result->getAvailableBalance();
$currency=$result->getCurrency();
echo('availableBalance: '.$availableBalance.'\n\r');
echo('currency: '.$currency.'\n\r');
}
remittances_balance.php
<?php
require_once "momo_remittances.php";
//instanceof BalanceResponse
$result=$remittances->requestBalance();
//let's print the result
if($result->isFound()){
$availableBalance=$result->getAvailableBalance();
$currency=$result->getCurrency();
echo('availableBalance: '.$availableBalance.'\n\r');
echo('currency: '.$currency.'\n\r');
}
disbursements_balance.php
<?php
require_once "momo_disbursements.php";
//instanceof BalanceResponse
$result=$disbursements->requestBalance();
//let's print the result
if($result->isFound()){
$availableBalance=$result->getAvailableBalance();
$currency=$result->getCurrency();
echo('availableBalance: '.$availableBalance.'\n\r');
echo('currency: '.$currency.'\n\r');
}
让我们验证账户持有人
collections_accountholder.php
<?php
require_once "momo_collections.php";
$acoutHolderId="{acoutHolderId}";
$acoutHolderIdType="{acoutHolderIdType}";
//array
$result=$collection->acountHolder($accountHolderIdType,$accountHolderId);
//let's print the result
echo "<pre>";
print_r($result);
remittances_accountholder.php
<?php
require_once "momo_remittances.php";
$acoutHolderId="{acoutHolderId}";
$acoutHolderIdType="{acoutHolderIdType}";
//array
$result=$remittances->acountHolder($accountHolderIdType,$accountHolderId);
//let's print the result
echo "<pre>";
print_r($result);
disbursements_accountholder.php
<?php
require_once "momo_disbursements.php";
$acoutHolderId="{acoutHolderId}";
$acoutHolderIdType="{acoutHolderIdType}";
//array
$result=$disbursements->acountHolder($accountHolderIdType,$accountHolderId);
//let's print the result
echo "<pre>";
print_r($result);
我们现在将执行一个 requestToPay 和 requestToPayStatus。
注意: 这仅适用于 Collection 产品。
request_topay.php
<?php
require_once "momo_collections.php";
use Momo\MomoApp\Models\RequestToPay;
//requestToPay object
$requestToPay=new RequestToPay("{externalId}","{amount}","{partyId}","{partyIdType}","{payeeNote}","{payerMessage}");
//to set the currency
$requestToPay->setCurrency("{curency}");// read docs for more info on supported currencies.
$callbackUrl="{url to your webhook}";
//array
$result=$collection->requestToPay($requestToPay,$callbackUrl);
//let's print the result
echo "<pre>";
print_r($result);
request_status.php
<?php
require_once "momo_collections.php";
$referenceId="{referenceId returned in request_topay.php}";
//array
$result=$collection->requestToPayStatus($referenceId);
//let's print the result
echo "<pre>";
print_r($result);
我们现在将执行一个 transfer 和 tranferStatus。
注意: 这仅适用于 Remittances 和 Disbursements 产品。
transfer.php
<?php
require_once "momo_remittances.php";
use Momo\MomoApp\Models\RequestToPay;
//for Disbursements replace $remittances with $disbursements
//requestToPay object
$requestToPay=new RequestToPay("{externalId}","{amount}","{partyId}","{partyIdType}","{payeeNote}","{payerMessage}");
//to set the currency
$requestToPay->setCurrency("{curency}");// read docs for more info on supported currencies.
$callbackUrl="{url to your webhook}";
//array
$result=$remittances->transfer($requestToPay,$callbackUrl);
//let's print the result
echo "<pre>";
print_r($result);
transfer_status.php
<?php
require_once "momo_remittances.php";
//for Disbursements replace remittances with disbursements
$referenceId="{referenceId returned in transer.php}";
//array
$result=$remittances->transferStatus($referenceId);
//let's print the result
echo "<pre>";
print_r($result);
以下文件的样本结果
- request_topay.php
- request_status.php
- transfer.php
- transfer_status.php
上面的图片显示了上述文件的样本结果。您需要将结果与您的支付表进行比较,以确认请求是否已创建、成功、超时或被拒绝。
对于 request_topay.php 状态是 待处理,其他状态可以是待处理、成功、失败。如果状态是 失败,您应该检查 原因,看看是否被拒绝或超时。
注意:如果结果与上图所示不符,则请求未成功,或者在这些情况下未找到资源,因此结果为假,因此最好将其放在一个 IF 语句中。****
正如大家所知,编程是一门艺术。现在您可以操作结果以符合您的期望。
如果您已经成功到这一步,恭喜您已经成功将momo api集成到您的系统中。尽管还有更多的事情要做,但请继续关注更新,我强烈建议您使用 Composer 进行PHP依赖管理,它将帮助您通过单个命令轻松更新库。
composer update
使用上述命令,您将更新所有依赖项。
下一个内容
设置 Webhooks,这些将帮助您编写用于callbackUrl的代码。有关更多信息,请联系以下邮箱。
请关注更新。
致谢
每一项优秀的作品都值得赞赏,因此我应感谢一些认为这个工具很有价值的用户。
1. APPSCORE 数字技术学院 - 我感谢APPSCORE颁发的证书
编写良好的代码
问候
林纳斯·诺沃穆卡马
电话:+256783198167
电话:+256751921465
