mom-factura-testing
Original:🇺🇸 English
Translated
Test and debug Mom Factura Payment API integrations using QA environment and payment simulation. Use when setting up test environments, simulating payment outcomes (success, failure, timeout), debugging API errors, or validating integration before production.
1installs
Sourceithustle/momenu-skills
Added on
NPX Install
npx skill4agent add ithustle/momenu-skills mom-factura-testingTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Mom Factura Testing & QA
Test payment integrations without processing real transactions.
Base URL:
https://api.momenu.onlineEnable QA Mode
Add header to use the test environment. Works from any origin.
x-env-qa: trueFor local development, also add (localhost/127.0.0.1 only).
x-dev-mode: trueContent-Type: application/json
x-api-key: YOUR_API_KEY
x-env-qa: true
x-dev-mode: trueSimulate Payment Results
The field in the MCX endpoint body triggers specific scenarios. Only active when .
simulateResultx-env-qa: true| Value | Behavior |
|---|---|
| Payment succeeds, returns transactionId and invoiceUrl |
| Fails: client has no balance |
| Fails: no response from provider |
| Fails: payment explicitly rejected |
| Fails: phone not registered |
Internal test phone mapping (automatic, no action needed):
- success → 244900000000
- insufficient_balance → 244900000001
- timeout → 244900000002
- rejected → 244900000003
- invalid_number → 244999999999
Test Examples
Successful MCX Payment
bash
curl -X POST https://api.momenu.online/api/payment/mcx \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-env-qa: true" \
-d '{"paymentInfo":{"amount":1000,"phoneNumber":"244923456789"},"simulateResult":"success"}'Insufficient Balance
bash
curl -X POST https://api.momenu.online/api/payment/mcx \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-env-qa: true" \
-d '{"paymentInfo":{"amount":5000,"phoneNumber":"244923456789"},"simulateResult":"insufficient_balance"}'Amount Validation Error
bash
curl -X POST https://api.momenu.online/api/payment/mcx \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-env-qa: true" \
-d '{"paymentInfo":{"amount":2500,"phoneNumber":"244923456789"},"products":[{"id":"1","productName":"P","productPrice":3000,"productQuantity":1}],"simulateResult":"success"}'Returns:
{ "success": false, "code": "AMOUNT_MISMATCH" }E-kwanza in QA (no simulateResult support)
bash
curl -X POST https://api.momenu.online/api/payment/ekwanza \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-env-qa: true" \
-d '{"paymentInfo":{"amount":2000,"phoneNumber":"244923456789"}}'Reference in QA
bash
curl -X POST https://api.momenu.online/api/payment/reference \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-env-qa: true" \
-d '{"paymentInfo":{"amount":10000}}'Test Helpers
JavaScript
javascript
const API = "https://api.momenu.online";
const headers = {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY",
"x-env-qa": "true"
};
async function testMCX(simulateResult = "success") {
const res = await fetch(`${API}/api/payment/mcx`, {
method: "POST", headers,
body: JSON.stringify({
paymentInfo: { amount: 1000, phoneNumber: "244923456789" },
simulateResult
})
});
return res.json();
}
// Run all scenarios
for (const s of ["success","insufficient_balance","timeout","rejected","invalid_number"]) {
testMCX(s).then(r => console.log(s, r.success ? "PASS" : "FAIL", r));
}Python
python
import requests
API = "https://api.momenu.online"
headers = {"Content-Type": "application/json", "x-api-key": "YOUR_API_KEY", "x-env-qa": "true"}
def test_mcx(simulate="success"):
r = requests.post(f"{API}/api/payment/mcx", json={
"paymentInfo": {"amount": 1000, "phoneNumber": "244923456789"},
"simulateResult": simulate
}, headers=headers)
return r.json()
for s in ["success", "insufficient_balance", "timeout", "rejected", "invalid_number"]:
result = test_mcx(s)
print(f"{s}: {'PASS' if result.get('success') else 'FAIL'} - {result}")Common Issues
| Error | Cause | Fix |
|---|---|---|
| DOMAIN_NOT_ALLOWED | Origin not registered | Add |
| MISSING_API_KEY | Header missing | Check header is |
| AMOUNT_MISMATCH | amount != products total | Verify SUM(price*qty) == amount, or send only one |
| MISSING_PHONE | No phone for MCX/E-kwanza | Add |
| simulateResult ignored | Not in QA mode | Add header |
| simulateResult ignored | Wrong endpoint | Only works on MCX, not E-kwanza or Reference |
Pre-Production Checklist
- Remove header
x-env-qa: true - Remove header
x-dev-mode: true - Remove from request bodies
simulateResult - Register production domain in merchant panel
- Store API key in environment variables (never hardcode)
- Implement error handling for all error codes
- Implement webhook endpoint to receive payment confirmations
- Implement status endpoint fallback for E-kwanza and Reference
- Verify amount validation with products
- Test with real phone numbers