Skip to main content

MTN MoMo API 的 Python 包装器。

项目描述

# MTN 移动货币 API 客户端

MTN MoMo API 客户端,用于 Python。

[![构建状态](https://travis-ci.com/sparkplug/momoapi-python.svg?branch=master)](https://travis-ci.com/sparkplug/momoapi-node)
[![最新版本](https://img.shields.io/pypi/v/tox-travis.svg)](https://badge.fury.io/js/mtn-momo)
[![覆盖状态](https ://coveralls.io/repos/github/sparkplug/momoapi-python/badge.svg?branch=validations)](https://coveralls.io/github/sparkplug/momoapi-python?branch=validations)
[![在 Spectrum 上加入社区](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/momo-api-developers/)


# 安装

添加最新版本的库到你的项目使用 pip:

```bash
$ pip install momoapi
```

这个库支持 Python 2.7+ 或 Python 3.4+ (PyPy supported)

# Sandbox Env​​ironment

## 创建沙盒环境 API user

接下来,我们需要获取 `User ID` 和 `User Secret`需要使用我们订阅的产品的主键,以及指定主机。该库附带一个命令行应用程序,可帮助创建沙盒凭据。它假设您已经在 `https://momodeveloper.mtn.com` 上创建了一个帐户并拥有`Ocp-Apim-Subscription-Key`。

```bash
## 在项目中,在命令行上。在这个例子中,我们的域名是 akabbo.ug
$ momoapi
$ providerCallBackHost: https://akabbo.ug
$ Ocp-Apim-Subscription-Key: f83xx8d8xx6749f19a26e2265aeadbcdeg
```

`providerCallBackHost` 是您的回调主机, `Ocp-Apim-Subscription-Key` 是您订阅的特定产品的 API 密钥。`API Key` 对产品来说是唯一的,您需要为您使用的每个产品提供一个 `API Key`。您应该会收到类似于以下内容的响应:

```bash
Here is your User Id and API secret : {'apiKey': 'b0431db58a9b41faa8f5860230xxxxxx', 'UserId': '053c6dea-dd68-xxxx-xxxx-c830dac9f401'}
`` `

这些是我们将用于沙盒环境的凭据。在生产中,在满足 KYC 要求后,这些凭据会在 MTN OVA 管理仪表板上为您提供。

## 配置

在我们充分利用该库之前,我们需要指定全局配置。全局配置必须包含以下内容:

* `BASE_URL`:MTN Momo API 的可选基本 URL。默认情况下,将使用暂存基础 url
*`ENVIRONMENT`:可选环境,“沙盒”或“生产”。默认为 'sandbox'
* `CALLBACK_HOST`:托管 webhook url 的域。这是强制性的。

指定全局变量后,您现在可以提供产品特定变量。每个 MoMo API 产品都需要自己的身份验证详细信息,即自己的“订阅密钥”、“用户 ID”和“用户密码”,有时也称为“API 密码”。因此,我们必须为您将使用的每个产品配置订阅密钥。

配置选项的完整列表可以在下面的示例中看到:

```python
config = {
"ENVIRONMENT": os.environ.get("ENVIRONMENT"),
"BASE_URL": os.environ.get("BASE_URL") ,
"CALLBACK_HOST": os.environ.get("CALLBACK_HOST"), # 强制。
"COLLECTION_PRIMARY_KEY": os.environ.get("COLLECTION_PRIMARY_KEY"),
"COLLECTION_USER_ID": os.environ.get("COLLECTION_USER_ID"),
"COLLECTION_API_SECRET": os.environ.get("COLLECTION_API_SECRET"),
"REMITTANCE_USER_ID": os .environ.get("REMITTANCE_USER_ID"),
"REMITTANCE_API_SECRET": os.environ.get("

"DISBURSEMENT_USER_ID": os.environ.get("DISBURSEMENT_USER_ID"),
"DISBURSEMENT_API_SECRET": os.environ.get("DISBURSEMENTS_API_SECRET"),
"DISBURSEMENT_PRIMARY_KEY": os.environ.get("DISBURSEMENT_PRIMARY_KEY"),
}
```

你只需要为您将使用的产品配置变量。

## Collections

可以使用以下参数创建集合客户端。请注意,MTN OVA 仪表板上提供了用于生产的“COLLECTION_USER_ID”和“COLLECTION_API_SECRET”;

* `COLLECTION_PRIMARY_KEY`:开发者门户上`Collection`产品的主键。
* `COLLECTION_USER_ID`:对于沙盒,使用通过`momoapi`命令生成的那个。
* `COLLECTION_API_SECRET`:对于沙盒,使用通过`momoapi`命令生成的那个。

您可以使用以下命令创建一个集合客户端:

```python
import os
from momoapi.collection import Collection

client = Collection({
"COLLECTION_USER_ID": os.environ.get("COLLECTION_USER_ID"),
"COLLECTION_API_SECRET": os.environ. get("COLLECTION_API_SECRET"),
"COLLECTION_PRIMARY_KEY": os.environ.get("COLLECTION_PRIMARY_KEY"),
})
``

### 方法

1.`requestToPay`:该操作用于向消费者(Payer)请求付款。付款人将被要求授权付款。一旦付款人授权付款,交易就会执行。交易将处于 PENDING 状态,直到付款人授权或拒绝或系统超时。交易的状态可以通过使用`getTransactionStatus`来验证。

2. `getTransaction`:使用`requestToPay`返回的`transactionId`获取交易信息。您可以间隔调用它,直到事务失败或成功。如果事务失败,它将抛出一个适当的错误。

3.`getBalance`:获取账户余额。

4. `isPayerActive`:检查帐户持有人是否在系统中注册并处于活动状态。

### 示例代码

```python
import os
from momoapi.collection import Collection

client = Collection({
"COLLECTION_USER_ID": os.environ.get("COLLECTION_USER_ID"),
"COLLECTION_API_SECRET": os.environ.get("COLLECTION_API_SECRET" ),
"COLLECTION_PRIMARY_KEY": os.environ.get("COLLECTION_PRIMARY_KEY"),
})

client.requestToPay(
mobile="256772123456", amount="600", external_id="123456789", payee_note="dd", payer_message=" dd", currency="EUR")
```

## Disbursement

Disbursement 客户端可以使用以下参数创建。请注意,MTN OVA 仪表板上提供了用于生产的“DISBURSEMENT_USER_ID”和“DISBURSEMENT_API_SECRET”;

* `DISBURSEMENT_PRIMARY_KEY`:开发者门户上`Disbursement`产品的主键。
* `DISBURSEMENT_USER_ID`:对于沙盒,使用通过`momoapi`命令生成的那个。
* `DISBURSEMENT_API_SECRET`:对于沙盒,使用通过`momoapi`命令生成的那个。

您可以使用以下

```python
import os
from momoapi.collection import Disbursement

client = Disbursement({
"DISBURSEMENT_USER_ID": os.environ.get("DISBURSEMENT_USER_ID"),
"DISBURSEMENT_API_SECRET": os.environ.get创建一个付款客户端("DISBURSEMENT_API_SECRET"),
"DISBURSEMENT_PRIMARY_KEY": os.environ.get("DISBURSEMENT_PRIMARY_KEY"),





1.`transfer`:用于从所有者账户向收款人账户转账。交易的状态可以通过使用`getTransactionStatus`方法来验证。

2.`getTransactionStatus`:使用`transfer`返回的`transactionId`获取交易信息。您可以间隔调用它,直到事务失败或成功。

2.`getBalance`:获取你的账户余额。

3. `isPayerActive`:此方法用于检查帐户持有人是否在系统中注册并处于活动状态。

#### 示例代码

```python
import os
from momoapi.collection import Disbursement

client = Disbursement({
"DISBURSEMENT_USER_ID": os.environ.get("DISBURSEMENT_USER_ID"),
"DISBURSEMENT_API_SECRET": os.environ.get("DISBURSEMENT_API_SECRET"),
"DISBURSEMENT_PRIMARY_KEY": os.environ.get("DISBURSEMENT_PRIMARY_KEY"),
})

client.transfer(amount="600", mobile="256772123456", external_id= "123456789", payee_note="dd", payer_message="dd", currency="EUR")

``

# Unit Tests

这个库有一个全面的测试套件,可以使用 `tox` 命令运行:

## to查看所有测试环境

```bash
$ tox -l
```
## 运行 Python 2.7 的测试

```bash
$ tox -e py27-cover
```

## 运行 Python 3 的测试。4

```bash
$ tox -e py34-cover
```

谢谢。


更新日志
=========

0.1.0 (2018-10-29)
------------------

* PyPI 上的第一个版本。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

momoapi-1.0.1.tar.gz (24.1 kB 查看哈希

已上传 source