MTN MoMo API 的 Python 包装器。
项目描述
# MTN 移动货币 API 客户端
MTN MoMo API 客户端,用于 Python。
[](https://travis-ci.com/sparkplug/momoapi-node)
[](https://badge.fury.io/js/mtn-momo)
[](https://coveralls.io/github/sparkplug/momoapi-python?branch=validations)
[](https://spectrum.chat/momo-api-developers/)
# 安装
添加最新版本的库到你的项目使用 pip:
```bash
$ pip install momoapi
```
这个库支持 Python 2.7+ 或 Python 3.4+ (PyPy supported)
# Sandbox Environment
## 创建沙盒环境 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 上的第一个版本。
MTN MoMo API 客户端,用于 Python。
[](https://travis-ci.com/sparkplug/momoapi-node)
[](https://badge.fury.io/js/mtn-momo)
[](https://coveralls.io/github/sparkplug/momoapi-python?branch=validations)
[](https://spectrum.chat/momo-api-developers/)
# 安装
添加最新版本的库到你的项目使用 pip:
```bash
$ pip install momoapi
```
这个库支持 Python 2.7+ 或 Python 3.4+ (PyPy supported)
# Sandbox Environment
## 创建沙盒环境 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 上的第一个版本。