agentsclimarketplace

Jpm merchant integrations

Skill jpmorgan-payments/pdp-skills/skills/jpm-merchant-integrations

Implement J.P. Morgan Payments API integrations in a merchant project once OAuth authentication is in place. Use this skill after a merchant has completed JPM onboarding and wired up authentication (typically right after `jpm-oauth`) and is ready to integrate one of the two currently-supported APIs — Checkout (drop-in payment UI) or Online Payments (direct card / wallet / APM processing). Recommends implementing one API at a time, reusing the credentials and auth module already wired into the project.From its SKILL.md

Install
npx -y skills add jpmorgan-payments/pdp-skills --skill jpm-merchant-integrations

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • reads credentialsReads from 2 credential sources: `JPM_CHECKOUT_URL` and 1 more.
  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.9 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

JPM Merchant API Integrations

Guide a merchant through integrating one of the two supported J.P. Morgan Payments APIs (Checkout and Online Payments). Authentication is assumed to be in place — if it isn't, point the user at jpm-integrations-get-started (which hands off to jpm-oauth) and exit.

Step 1 — Confirm prerequisites

The merchant should already have:

  • Validated credentials (clientId, cert path, private key path, SHA-1 thumbprint, resource_id)
  • An auth module in their project that exposes a getAccessToken() function (or its language equivalent)

If you arrived here from jpm-oauth, both are already known — the auth module's path is in conversation context. Use it directly.

If invoked standalone, ask:

  • Question: "Is JPM authentication already wired up in this project?"
  • Header: "Auth ready?"
  • Options:
    • "Yes — I already have a working getAccessToken() (or equivalent)"
    • "No — I haven't set up auth yet"

If No: tell the user to run jpm-integrations-get-started first (it will hand off to jpm-oauth), then come back here. Exit.

If Yes but the auth module path isn't in conversation context, ask where the module lives so the integration code can import from it.

Step 2 — Pick one API to integrate

JPM's guidance — and ours — is to implement one API at a time. Each has its own request shapes, error semantics, and test scenarios. Bundling both into one change set makes it harder to isolate failures, slows down PR review, and tends to delay shipping either of them. Better path: ship Checkout, prove it in CAT, then open a separate change for Online Payments.

Ask:

  • Question: "Which API would you like to integrate first?"
  • Header: "API"
  • Options:
    • "Checkout — drop-in payment UI" — pre-built UI you embed in your checkout page; styling via Commerce Center or JS. Fastest to ship if you don't need a fully custom UI.
    • "Online Payments — direct API processing" — card, wallet, local, and alternative payment methods via direct REST calls. Use when you want full control over the UI and flow.

Once chosen, ask the user (free text):

"Briefly describe what you're building or migrating — e.g. 'a simple checkout page for a single product', 'migrating from Stripe Elements'. A sentence or two is enough."

Carry this description into Step 3 so the implementation, file structure, and code comments are tailored to the merchant's actual use case rather than a generic reference build.

Once chosen, read the corresponding reference file from this skill's directory:

  • Checkout → references/checkout.md (also consult examples/checkout-sample-app.md if the merchant wants a complete reference build)
  • Online Payments → references/online-payments.md

If the user asks for a different API (Tokenization, Reporting, In-Store Payments, Pay by Bank, Push to Card, Global Payments, Wire, US RTP, Embedded, 3-D Secure, Consumer Profile, Notifications, etc.), tell them this skill doesn't yet cover that API in the initial release and offer to integrate Checkout or Online Payments instead. Don't try to invent the integration from scratch.

Step 3 — Implement the chosen API

Follow the steps in the chosen reference file. Cross-cutting principles that apply to all four:

  • Reuse the existing auth module. Every JPM API call needs Authorization: Bearer <access_token> from the merchant's getAccessToken(). Import that function — do not re-implement token fetching inside the integration code. The auth module already caches correctly; bypassing it is exactly the per-call-token anti-pattern jpm-oauth warned against.
  • Use environment-aware base URLs. Base URLs differ between CAT and PROD and sometimes between sub-services within an environment. Read them from env vars (e.g. JPM_CHECKOUT_URL, JPM_ONLINE_URL) rather than hardcoding. The reference file for each API lists the URLs that apply.
  • Confirm output paths before writing. Default to a sibling folder of the auth module (src/checkout/, src/payments/, etc.) but offer "new top-level folder" and "custom path" alternatives, the same way jpm-oauth did.
  • Smoke test in CAT before PROD. Each reference includes a minimal end-to-end test recipe — run it with the merchant's CAT credentials before any PROD config change.

Step 4 — Offer to add another

Once the chosen API is implemented and the user confirms it's working in CAT:

Ask:

  • Question: "That integration looks good. Want to add another JPM API now?"
  • Header: "More?"
  • Options:
    • "Yes — pick another"
    • "No — I'm done for now"

If Yes, return to Step 2 (the user picks a different API; skip Step 1, prerequisites are still satisfied).

If No, exit with a one-line summary of which APIs were integrated this session.

Rules

  • Do not re-implement OAuth inside the integration code. The merchant's auth module already handles token fetching with caching. Re-implementing it inline is what JPM's "don't generate tokens per call" guidance warns against.
  • Confirm every output file path with the user before writing.
  • Only the two APIs listed in Step 2 (Checkout and Online Payments) are supported in the initial release. For anything else, defer politely and offer one of the two instead.
  • Don't write CAT credentials into PROD config or vice versa. The auth module reads from env vars, so the merchant flips environments by switching .env files — never by editing source.

What ships with it: 3 files

128.0 KB alongside SKILL.md

examples/

references/

Gives 0 of the 12 instructions most auth identity skills give in ~1.2k tokens

Counted across 408 of the 432 authors here whose files we hold, read 2026-09-06

  • Use parameterized queries for all SQL and database access to prevent SQL injectionin 60 of 408, across 40 files
  • Hash passwords with bcrypt or Argon2idin 50 of 408, across 34 files
  • Store secrets in Vault or environment variablesin 37 of 408, across 17 files
  • Add security headers to all responsesin 28 of 408, across 14 files
  • Rate limit public endpoints per clientin 22 of 408, across 8 files
  • Store tokens in httpOnly cookiesin 21 of 408, across 16 files
  • Use HTTPS in productionin 17 of 408, across 4 files
  • Apply rate limiting to all API endpointsin 17 of 408, across 9 files
  • Validate all input with Bean Validationin 16 of 408, across 3 files
  • Enable JWT or OIDC for stateless authenticationin 15 of 408, across 2 files
  • Scan dependencies for CVEsin 15 of 408, across 2 files
  • Log audit records for sensitive operationsin 15 of 408, across 2 files

Said here and by no other author read

  • Verify credentials and auth module exist
  • Route unauthenticated users to jpm-integrations-get-started
  • Ask which API to integrate first
  • Implement one API at a time
  • Read the reference file for the chosen API
  • Reuse the existing auth module for tokens

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.