Skip to content
Back to skills

Verify Webhook

ASecurity

Validate an incoming Orange Money webhook before trusting it and shipping the order

  • 29 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 20, 2026
ai-agentsrustgo

Security analysis

A100/100

Scanned September 20, 2026

npx -y skills add theYahia/WWmcp --skill verify-webhook --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Verify Webhook?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Verify Webhook
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/theyahia-verify-webhook/badge)](https://www.skillsdirectory.com/skills/theyahia-verify-webhook)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: verify-webhook
description: Validate an incoming Orange Money webhook before trusting it and shipping the order
argument-hint: <order_id> <amount> <pay_token>
---

# /verify-webhook — Webhook validation

## Algorithm

1. Take order_id, amount and pay_token out of the webhook payload the user received.
   Never act on the payload's status field alone — that field is attacker-controllable if
   the notif_url is reachable from the internet.
2. Call `validate_webhook` with order_id, amount and pay_token. This re-queries Orange
   Money's transactionstatus endpoint, so the answer comes from Orange, not from the payload.
3. Compare the authoritative status to what the payload claimed. If they differ, treat the
   payload as forged and say so loudly.
4. Compare the amount to the order total on the user's side. A matching order_id with a
   smaller amount is the classic underpayment attack.
5. If anything is inconclusive, call `get_payment_status` with the same three fields for a
   second read before releasing goods.

## Response format

```
## Webhook validation — CMD-2026-0142

| Field | Payload said | Orange says |
|-------|--------------|-------------|
| status | SUCCESS | SUCCESS |
| amount | 15,000 XOF | 15,000 XOF |

**Verdict**: VALID — safe to fulfil.
```

## Notes

- A mismatch verdict means do not fulfil. Say that plainly rather than hedging.
- Orange Money retries notifications; the same order_id arriving twice is normal.
  Fulfilment must be idempotent on order_id.
- This tool proves the transaction state. It does not prove the request came from Orange —
  that is why re-querying rather than signature-checking is the pattern here.

## Examples

```
/verify-webhook CMD-2026-0142 15000 abc123token
/verify-webhook ORDER-88 5000 xyz789token
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.