#payment #money #payment-gateway #mtn #momo #africa

mtnmomo

MTN Momo支付API,支持沙箱和生产环境。所有产品均受支持:收款、支付和汇款。

2次发布

0.1.3 2023年12月31日
0.1.2 2023年12月30日
0.1.1 2023年12月30日
0.1.0 2023年12月29日

#39 in 金融

MIT许可证

180KB
3K SLoC

MOMO.rs是MOMO支付网关的Rust库。

build tests crates.io Crates.io MIT licensed Docs

MOMO logo

安装

[dependencies]
mtnmomo = "0.1.3"

或者你可以使用cargo add

cargo add mtnmomo

MTN移动货币API

此包提供了一种连接到MTN MoMo API的简单方法,它提供了以下产品

  • 收款
  • 支付
  • 汇款
  • 沙箱环境下的配置

如何使用

use mtnmomo::Momo;
use uuid::Uuid;
use dotenv::dotenv;
use std::env;

#[tokio::main]
async fn main() {
dotenv().ok();
let mtn_url = env::var("MTN_URL").expect("MTN_COLLECTION_URL must be set"); // https://sandbox.momodeveloper.mtn.com
let primary_key = env::var("MTN_COLLECTION_PRIMARY_KEY").expect("PRIMARY_KEY must be set");
let secondary_key = env::var("MTN_COLLECTION_SECONDARY_KEY").expect("SECONDARY_KEY must be set");
let momo = Momo::new_with_provisioning(mtn_url, primary_key.clone()).await.unwrap();
let collection = momo.collection(primary_key, secondary_key);
}

初始化Momo结构后,您可以使用收款、支付或汇款方法初始化相应产品。产品有您可以使用的方法来与API交互。例如,要请求客户付款,您可以使用收款产品的request_to_pay方法。

重要提示

mtnmomo::Momo::new_with_provisioning用于使用沙箱环境初始化Momo结构。mtnmomo::Momo::new用于使用生产环境初始化Momo结构。

制作请求的示例

use mtnmomo::{Momo, Party, PartyIdType, Currency, RequestToPay};
use uuid::Uuid;
use dotenv::dotenv;
use std::env;

#[tokio::main]
async fn main() {
  dotenv().ok();
  let mtn_url = env::var("MTN_URL").expect("MTN_COLLECTION_URL must be set"); // https://sandbox.momodeveloper.mtn.com
  let primary_key = env::var("MTN_COLLECTION_PRIMARY_KEY").expect("PRIMARY_KEY must be set");
  let secondary_key = env::var("MTN_COLLECTION_SECONDARY_KEY").expect("SECONDARY_KEY must be set");
  let momo = Momo::new_with_provisioning(mtn_url, primary_key.clone()).await.unwrap();
  let collection = momo.collection(primary_key, secondary_key);

   let payer : Party = Party {
          party_id_type: PartyIdType::MSISDN,
         party_id: "234553".to_string(),
     };

  let request = RequestToPay::new("100".to_string(), Currency::EUR, payer, "test_payer_message".to_string(), "test_payee_note".to_string());
  let result = collection.request_to_pay(request).await;
}

上述代码将请求从电话号码"234553"的客户那里支付100欧元。客户将在其手机上收到提示以确认支付。如果客户确认支付,则将处理支付,并且客户将收到确认消息。如果客户拒绝支付,则不会处理支付,并且客户将收到一条通知他们支付已被拒绝的消息。

依赖关系

~7–20MB
~295K SLoC