linlak/momoapi

Momo php 库是一个小巧的 php 包,帮助开发者将 momo api 集成到他们的项目(s)中。

v1.0.1 2019-04-01 20:59 UTC

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,这支持所有产品,包括以下内容

注意

每次我们在花括号 ("{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颁发的证书

编写良好的代码

问候

林纳斯·诺沃穆卡马

邮箱:ugsalons@gmail.com

电话:+256783198167

电话:+256751921465