行動支付是非洲大部分地區人們主要的支付方式。在盧安達,MTN 行動支付(MoMo)擁有超過 300 萬活躍用戶,也是大多數在地商家首選的支付方式,而非信用卡或銀行轉帳。
MTN 幾年前已向第三方開發者開放其 MoMo API,自此已出現一些伺服器端包裝函式庫(Node、PHP、Python)。但目前缺少的是 React Native 的客戶端 SDK —— 一款可供行動應用程式直接使用的工具,具備完整的 TypeScript 型別,且無需每次從頭撰寫 OAuth2、沙盒佈建與錯誤處理的樣板程式碼。
因此我建立了一個:openbank-africa-sdk。
功能特色
- 自動處理 MTN MoMo 沙盒佈建(API 使用者 + API 金鑰建立)
- OAuth2 驗證並具備自動權杖刷新功能
- 收款:請求付款、交易狀態查詢、帳戶餘額查詢
- 付款:向使用者匯款、查詢轉帳狀態
- 型別化錯誤,根據 MTN 官方錯誤參考對應(不再需要猜測 INTERNAL_PROCESSING_ERROR 在凌晨兩點的意思)
- 零執行期依賴 —— 在 Node.js 後端或 React Native 應用程式中運作一致
快速範例
import { OpenBankClient } from 'openbank-africa-sdk';
const client = new OpenBankClient({
adapter: 'mtn-momo',
subscriptionKey: process.env.MTN_SUBSCRIPTION_KEY,
callbackHost: 'https://my-app.com/webhooks/momo',
environment: 'sandbox',
});
await client.authenticate();
const payment = await client.collections.requestToPay({
amount: 5000,
currency: 'RWF',
phoneNumber: '250788123456',
externalId: 'order-123',
payerMessage: 'Payment for order #123',
});
const status = await client.collections.getStatus(payment.referenceId);
Enter fullscreen mode Exit fullscreen mode
就這樣。無需手動產生 UUID、無需手動建立用於權杖請求的 Basic Auth 標頭,也不用翻閱 API 文件記憶哪些標頭該放在哪裡。
為什麼命名為「OpenBank Africa」而非「MoMo SDK」
此架構刻意採用配接器設計。MTN MoMo 是第一個支援的配接器,但目標是未來在同一介面下支援 Airtel Money 及其他供應商,讓開發人員在為多個非洲市場打造支付功能時,不必針對不同供應商學習不同的 SDK。
試用
- GitHub: https://github.com/francedermaz/openbank-africa-sdk
- npm: https://www.npmjs.com/package/openbank-africa-sdk
採用 MIT 授權,免費且開放貢獻。如果您正在使用 MTN MoMo 開發應用程式,特別是在盧安達,歡迎提供反饋、回報問題或發送 PR。Airtel Money 支援是下一步的開發目標。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.