Skip to content

Add post-integration management (go-live, ops, diagnostics, support) … - #15

Merged
OmarAboulMakarem merged 1 commit into
mainfrom
feature/post-integration-management
Oct 4, 2026
Merged

OmarAboulMakarem merged 1 commit into
mainfrom
feature/post-integration-management

Conversation

@MRagabMob

Copy link
Copy Markdown
Collaborator

Add post-integration management (go-live, operations, diagnostics, support) — v3.4.0

Why

The skill stopped at "first test payment passed". Merchants also need help going live, running the integration day to day, diagnosing problems with Paymob's own tools, and getting support. This PR adds that, and fixes the gaps and bugs found in an audit of the existing plugin.

What's new

  • references/post-integration.md
    • Go-live: Paymob's 9 go-live stages, a 12-point merchant-side go-live checklist, and the wizard's "Send your go-live documents" (noted as not live approval).
    • Operations: Dashboard work (transactions, orders, Quick Links, users & roles), refunds in ops, balances/transfers/settlements, disputes, and monitoring with a daily reconciliation.
    • Diagnostics: a symptom-to-tool table covering Code Lab, HMAC Signature Troubleshooter, Postman export, Virtual Showroom, Store Check, Mobe and hooks.paymob.com.
    • Support: support channels and a redacted ticket template.
    • Changes after launch: key rotation, new methods, plugin updates, domain changes.
  • Integration Wizard catalog in live-resources.md: Code Lab, account tools, go-live docs, HMAC Signature Troubleshooter, Store Check (/store-doctor/), Mobe, Contact Support.
  • SKILL.md: Phase 4 routing, capabilities-menu rows, new troubleshooting rows.
  • New commands:
    • /paymob-go-live-check: read-only readiness audit.
    • /paymob-support-ticket: drafts a redacted ticket and routes it to the right channel. It files through MCP create_support_ticket only after explicit confirmation.
  • Synced files: universal-prompt.md, AGENTS.md, README and manifests, bumped to 3.4.0.

Fixes

  • Server-side pricing: checkout samples took the amount from the browser. All backends now price the order server-side and share one request/response contract with the frontend. The Pixel sample now calls an endpoint that exists.
  • Python HMAC in universal-prompt.md: booleans were stringified as "True", so verification always failed.
  • Constant-time comparisons: they could throw on a missing or short hmac. They now check length first (Node, Python, card-token and subscription samples).
  • Stack-specific bugs:
    • Python was missing import os.
    • .NET parsed the intention id as Int64, was missing System.Net.Http.Json, and had no DI registration for the order repository.
    • The React return page was missing its hooks and used the wrong order id.
    • CSRF was disabled on browser-facing checkout routes (Rails, Django). The frontend now documents the CSRF header.
  • Consistency fixes:
    • country is now EGY everywhere (was EG in one sample).
    • {base_url} is defined as the full origin without a trailing slash.
    • Dedup key is aligned to obj.id.
    • The refund/void tables are unified.
    • The dashboard key path is consistent.
    • A dangling intention-api.md reference is fixed.
    • HMAC null-value handling note added.
    • A stray README tag is removed.
  • /paymob-check-hmac: now also checks safe comparison, value stringification, and where the hmac is read from.
  • validate.py: new cross-reference checks:
    • every reference file is listed in SKILL.md
    • reference mentions resolve
    • commands exist and are documented
    • README version strings match the manifests

Testing

  • python3 scripts/validate.py passes.
  • Python, Ruby, PHP, JS and TS code samples pass syntax checks.

Please review

  • The wizard tool descriptions (§4–§5 of post-integration.md) against the live site.
  • Store Check scope. It is documented as WordPress-focused.

…and fix audit issues

Post-integration coverage (v3.4.0):
- New references/post-integration.md: Paymob's 9 go-live stages, merchant-side
  go-live checklist, wizard go-live document upload, Dashboard operations
  (transactions, orders, quick links, users & roles), refunds in ops, balances,
  disputes, monitoring + daily reconciliation, symptom->tool diagnostics,
  support channels + redacted ticket template, key rotation and post-launch changes.
- SKILL.md: Phase 4 routing, capabilities menu rows, new troubleshooting rows.
- live-resources.md: full Integration Wizard catalog (Code Lab, Postman export,
  Virtual Showroom, account tools, go-live docs, HMAC Signature Troubleshooter,
  Store Check at /store-doctor/, Mobe, Contact Support, feedback).
- New commands: /paymob-go-live-check, /paymob-support-ticket.
- universal-prompt.md, AGENTS.md, README, manifests synced.

Fixes:
- Checkout samples priced orders from the browser request; all backends now
  load amount/items server-side, share one request/response contract with the
  frontend, and the Pixel sample calls an endpoint that exists.
- universal-prompt Python HMAC used str(bool) -> "True" (always mismatched).
- Timing-safe compares could throw on length mismatch (Node, Python, card-token,
  subscription samples).
- Python missing `import os`; .NET intention id parsed as Int64; .NET missing
  System.Net.Http.Json and IOrderRepository DI; React return page missing hooks
  and fell back to Paymob order_id; Ruby duplicate heading; CSRF skipped on
  browser-facing checkout (Rails/Django).
- country "EG" -> "EGY"; {base_url} defined without trailing slash; idempotency
  key wording aligned to obj.id; refund/void table unified; dashboard key path;
  dangling intention-api.md reference; HMAC null-value note; stray README tag.
- /paymob-check-hmac: checks for safe compare, stringification, hmac location.
- validate.py: new cross-reference checks (references listed in SKILL.md,
  backtick reference mentions resolve, commands documented/exist, README versions).
@OmarAboulMakarem
OmarAboulMakarem merged commit 090ee8e into main Oct 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants