{"_id":"mpp-card","_rev":"29-7651c5d05387f9bff7f93daa9f2a346c","name":"mpp-card","dist-tags":{"latest":"0.1.8"},"versions":{"0.1.4":{"name":"mpp-card","version":"0.1.4","keywords":["mpp","machine-payments","card-payments","402","payment-protocol","agent-payments"],"author":{"name":"Visa Inc"},"license":"MIT","_id":"mpp-card@0.1.4","maintainers":[{"name":"jbrans-visa","email":"jbrans@visa.com"}],"dist":{"shasum":"f5068ef5e68caefb13554871f95e6654fbb5ce0b","tarball":"https://registry.npmjs.org/mpp-card/-/mpp-card-0.1.4.tgz","fileCount":305,"integrity":"sha512-iB/Kx1g+GUXoMqLgwfRMi/cgnXV9ZDttqjzP2fTp9vW92pZ3qA6IK07yQKF3JyDV+XVwZ3RQrhQQDFaG0LICOg==","signatures":[{"sig":"MEUCICRPM9Ww03BgrvzaSqTPmHd2M/T5ni7eQBauLMKJDqBvAiEAxJKL4qhQupLXmc5m0Qk+eZDd/6okaCgMvKcnicdT0T8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":645533},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"src":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"},"./card":{"src":"./src/card/index.ts","types":"./dist/card/index.d.ts","default":"./dist/card/index.js"},"./hono":{"src":"./src/middlewares/hono.ts","types":"./dist/middlewares/hono.d.ts","default":"./dist/middlewares/hono.js"},"./proxy":{"src":"./src/proxy/index.ts","types":"./dist/proxy/index.d.ts","default":"./dist/proxy/index.js"},"./client":{"src":"./src/client/index.ts","types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./elysia":{"src":"./src/middlewares/elysia.ts","types":"./dist/middlewares/elysia.d.ts","default":"./dist/middlewares/elysia.js"},"./nextjs":{"src":"./src/middlewares/nextjs.ts","types":"./dist/middlewares/nextjs.d.ts","default":"./dist/middlewares/nextjs.js"},"./server":{"src":"./src/server/index.ts","types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"./express":{"src":"./src/middlewares/express.ts","types":"./dist/middlewares/express.d.ts","default":"./dist/middlewares/express.js"},"./mcp-sdk/client":{"src":"./src/mcp-sdk/client/index.ts","types":"./dist/mcp-sdk/client/index.d.ts","default":"./dist/mcp-sdk/client/index.js"},"./mcp-sdk/server":{"src":"./src/mcp-sdk/server/index.ts","types":"./dist/mcp-sdk/server/index.d.ts","default":"./dist/mcp-sdk/server/index.js"}},"gitHead":"147df6978f1ecf188e176c1694d567af096fb895","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","prepublishOnly":"tsc"},"_npmUser":{"name":"jbrans-visa","email":"jbrans@visa.com"},"_npmVersion":"10.9.2","description":"TypeScript SDK for card payments in the Machine Payments Protocol","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"ox":"^0.14.0","zod":"^4.3.6"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.5","elysia":"^1.4.27","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.3.3","@types/express":"^5.0.6","@modelcontextprotocol/sdk":"^1.27.1"},"peerDependencies":{"hono":">=4","elysia":">=1","express":">=5","@modelcontextprotocol/sdk":">=1.25.0"},"peerDependenciesMeta":{"hono":{"optional":true},"elysia":{"optional":true},"express":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mpp-card_0.1.4_1773805723637_0.38271792993165454","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"mpp-card","version":"0.1.5","keywords":["mpp","machine-payments","card-payments","402","payment-protocol","agent-payments"],"author":{"name":"Visa Inc"},"license":"SEE LICENSE IN LICENSE","_id":"mpp-card@0.1.5","maintainers":[{"name":"jbrans-visa","email":"jbrans@visa.com"}],"homepage":"https://paymentauth.org/payment-methods/card/","dist":{"shasum":"aa3851b1e84be87ee29ecceefb021a2ff1fa0140","tarball":"https://registry.npmjs.org/mpp-card/-/mpp-card-0.1.5.tgz","fileCount":191,"integrity":"sha512-nWjKV1jFsSwze3q8VASuo1WXwjNgWHkWWDJFWq1Z8U0w8mrLWDWza8zHh2fsZ4PQDEJoUs3ZcTHyDfjipp1NVg==","signatures":[{"sig":"MEUCIQDG4aB1dy3b1voF/UJHIw56/DSRI5V6j5hye5EpxXo7xQIgCel4/8EKjWOWgmLW/ZLPohxac01JAQip1ZSV2KDuw/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":419155},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"src":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"},"./card":{"src":"./src/card/index.ts","types":"./dist/card/index.d.ts","default":"./dist/card/index.js"},"./hono":{"src":"./src/middlewares/hono.ts","types":"./dist/middlewares/hono.d.ts","default":"./dist/middlewares/hono.js"},"./proxy":{"src":"./src/proxy/index.ts","types":"./dist/proxy/index.d.ts","default":"./dist/proxy/index.js"},"./client":{"src":"./src/client/index.ts","types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./elysia":{"src":"./src/middlewares/elysia.ts","types":"./dist/middlewares/elysia.d.ts","default":"./dist/middlewares/elysia.js"},"./nextjs":{"src":"./src/middlewares/nextjs.ts","types":"./dist/middlewares/nextjs.d.ts","default":"./dist/middlewares/nextjs.js"},"./server":{"src":"./src/server/index.ts","types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"./express":{"src":"./src/middlewares/express.ts","types":"./dist/middlewares/express.d.ts","default":"./dist/middlewares/express.js"},"./mcp-sdk/client":{"src":"./src/mcp-sdk/client/index.ts","types":"./dist/mcp-sdk/client/index.d.ts","default":"./dist/mcp-sdk/client/index.js"},"./mcp-sdk/server":{"src":"./src/mcp-sdk/server/index.ts","types":"./dist/mcp-sdk/server/index.d.ts","default":"./dist/mcp-sdk/server/index.js"}},"gitHead":"1f22f49224cb973b3ce63880791c48bb0d7d0788","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","prepublishOnly":"rm -rf dist && tsc"},"_npmUser":{"name":"jbrans-visa","email":"jbrans@visa.com"},"_npmVersion":"10.9.2","description":"TypeScript SDK for card payments in the Machine Payments Protocol","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"ox":"^0.14.0","zod":"^4.3.6"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.5","elysia":"^1.4.27","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.3.3","@types/express":"^5.0.6","@modelcontextprotocol/sdk":"^1.27.1"},"peerDependencies":{"hono":">=4","elysia":">=1","express":">=5","@modelcontextprotocol/sdk":">=1.25.0"},"peerDependenciesMeta":{"hono":{"optional":true},"elysia":{"optional":true},"express":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mpp-card_0.1.5_1773817929079_0.2775808262599957","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"mpp-card","version":"0.1.6","keywords":["mpp","machine-payments","card-payments","402","payment-protocol","agent-payments"],"author":{"name":"Visa Inc"},"license":"SEE LICENSE IN LICENSE","_id":"mpp-card@0.1.6","maintainers":[{"name":"jbrans-visa","email":"jbrans@visa.com"}],"homepage":"https://paymentauth.org/payment-methods/card/","dist":{"shasum":"e2b6770ba2ea7d98f6638c417d8f112b23b34274","tarball":"https://registry.npmjs.org/mpp-card/-/mpp-card-0.1.6.tgz","fileCount":191,"integrity":"sha512-lKUx5POFaXk1oCAFYmk5Ok/qQNNZcePzEb5TWhxvqWUAU+9tbJ/FT53IyLdDqrT4WN4enfXL2OaCbnJW8aDFYg==","signatures":[{"sig":"MEQCIAJAZNLTH83X7SRwvpVSoRB7ViT5xRu02PjEUpBWe2CuAiBPlGdSGHNtPM5Z+WcukFCO3HIMP3Cjx5mW/85jDkKzUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":419255},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"src":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"},"./card":{"src":"./src/card/index.ts","types":"./dist/card/index.d.ts","default":"./dist/card/index.js"},"./hono":{"src":"./src/middlewares/hono.ts","types":"./dist/middlewares/hono.d.ts","default":"./dist/middlewares/hono.js"},"./proxy":{"src":"./src/proxy/index.ts","types":"./dist/proxy/index.d.ts","default":"./dist/proxy/index.js"},"./client":{"src":"./src/client/index.ts","types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./elysia":{"src":"./src/middlewares/elysia.ts","types":"./dist/middlewares/elysia.d.ts","default":"./dist/middlewares/elysia.js"},"./nextjs":{"src":"./src/middlewares/nextjs.ts","types":"./dist/middlewares/nextjs.d.ts","default":"./dist/middlewares/nextjs.js"},"./server":{"src":"./src/server/index.ts","types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"./express":{"src":"./src/middlewares/express.ts","types":"./dist/middlewares/express.d.ts","default":"./dist/middlewares/express.js"},"./mcp-sdk/client":{"src":"./src/mcp-sdk/client/index.ts","types":"./dist/mcp-sdk/client/index.d.ts","default":"./dist/mcp-sdk/client/index.js"},"./mcp-sdk/server":{"src":"./src/mcp-sdk/server/index.ts","types":"./dist/mcp-sdk/server/index.d.ts","default":"./dist/mcp-sdk/server/index.js"}},"gitHead":"c1ad344683a5043c3593160d58380fcb4bfc7d6b","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","prepublishOnly":"rm -rf dist && tsc"},"_npmUser":{"name":"jbrans-visa","email":"jbrans@visa.com"},"_npmVersion":"10.9.2","description":"TypeScript SDK for card payments in the Machine Payments Protocol","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"ox":"^0.14.0","zod":"^4.3.6"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.5","elysia":"^1.4.27","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.3.3","@types/express":"^5.0.6","@modelcontextprotocol/sdk":"^1.27.1"},"peerDependencies":{"hono":">=4","elysia":">=1","express":">=5","@modelcontextprotocol/sdk":">=1.25.0"},"peerDependenciesMeta":{"hono":{"optional":true},"elysia":{"optional":true},"express":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mpp-card_0.1.6_1773821664411_0.7059353408352316","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"mpp-card","version":"0.1.7","keywords":["mpp","machine-payments","card-payments","402","payment-protocol","agent-payments"],"author":{"name":"Visa Inc"},"license":"SEE LICENSE IN LICENSE","_id":"mpp-card@0.1.7","maintainers":[{"name":"jbrans-visa","email":"jbrans@visa.com"}],"homepage":"https://paymentauth.org/payment-methods/card/","dist":{"shasum":"2ddb02f318c809171dcc92ed262822e8407680cf","tarball":"https://registry.npmjs.org/mpp-card/-/mpp-card-0.1.7.tgz","fileCount":191,"integrity":"sha512-Vc1SRb6S9vrK01T70CNbFUbkNBQT9XMCzj8zFkEYG41uhDyEbGPDJvGP1BstIGLDtsuS+Q4E8ELPbbH0HW1ZNg==","signatures":[{"sig":"MEQCIGtaAy1ZGHnCM0y7ouIinJFqnVnriMhUSLXh8+IiLROVAiBvcyfJCu9VxqAgfqyG1iqj+H7px/z+YoAqgm3MHc9+MQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421331},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"src":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"},"./card":{"src":"./src/card/index.ts","types":"./dist/card/index.d.ts","default":"./dist/card/index.js"},"./hono":{"src":"./src/middlewares/hono.ts","types":"./dist/middlewares/hono.d.ts","default":"./dist/middlewares/hono.js"},"./proxy":{"src":"./src/proxy/index.ts","types":"./dist/proxy/index.d.ts","default":"./dist/proxy/index.js"},"./client":{"src":"./src/client/index.ts","types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./elysia":{"src":"./src/middlewares/elysia.ts","types":"./dist/middlewares/elysia.d.ts","default":"./dist/middlewares/elysia.js"},"./nextjs":{"src":"./src/middlewares/nextjs.ts","types":"./dist/middlewares/nextjs.d.ts","default":"./dist/middlewares/nextjs.js"},"./server":{"src":"./src/server/index.ts","types":"./dist/server/index.d.ts","default":"./dist/server/index.js"},"./express":{"src":"./src/middlewares/express.ts","types":"./dist/middlewares/express.d.ts","default":"./dist/middlewares/express.js"},"./mcp-sdk/client":{"src":"./src/mcp-sdk/client/index.ts","types":"./dist/mcp-sdk/client/index.d.ts","default":"./dist/mcp-sdk/client/index.js"},"./mcp-sdk/server":{"src":"./src/mcp-sdk/server/index.ts","types":"./dist/mcp-sdk/server/index.d.ts","default":"./dist/mcp-sdk/server/index.js"}},"gitHead":"d51663d273a63a1bb66b40c17edca278969c2d07","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","prepublishOnly":"rm -rf dist && tsc"},"_npmUser":{"name":"jbrans-visa","email":"jbrans@visa.com"},"_npmVersion":"10.9.2","description":"TypeScript SDK for card payments in the Machine Payments Protocol","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"ox":"^0.14.0","zod":"^4.3.6"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.5","elysia":"^1.4.27","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.3.3","@types/express":"^5.0.6","@modelcontextprotocol/sdk":"^1.27.1"},"peerDependencies":{"hono":">=4","elysia":">=1","express":">=5","@modelcontextprotocol/sdk":">=1.25.0"},"peerDependenciesMeta":{"hono":{"optional":true},"elysia":{"optional":true},"express":{"optional":true},"@modelcontextprotocol/sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/mpp-card_0.1.7_1773866201629_0.9677601261452646","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"mpp-card","version":"0.1.8","description":"TypeScript SDK for card payments in the Machine Payments Protocol","type":"module","license":"SEE LICENSE IN LICENSE","author":{"name":"Visa Inc"},"keywords":["mpp","machine-payments","card-payments","402","payment-protocol","agent-payments"],"homepage":"https://paymentauth.org/payment-methods/card/","engines":{"node":">=18"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","src":"./src/index.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server/index.d.ts","src":"./src/server/index.ts","default":"./dist/server/index.js"},"./client":{"types":"./dist/client/index.d.ts","src":"./src/client/index.ts","default":"./dist/client/index.js"},"./card":{"types":"./dist/card/index.d.ts","src":"./src/card/index.ts","default":"./dist/card/index.js"},"./hono":{"types":"./dist/middlewares/hono.d.ts","src":"./src/middlewares/hono.ts","default":"./dist/middlewares/hono.js"},"./express":{"types":"./dist/middlewares/express.d.ts","src":"./src/middlewares/express.ts","default":"./dist/middlewares/express.js"},"./nextjs":{"types":"./dist/middlewares/nextjs.d.ts","src":"./src/middlewares/nextjs.ts","default":"./dist/middlewares/nextjs.js"},"./elysia":{"types":"./dist/middlewares/elysia.d.ts","src":"./src/middlewares/elysia.ts","default":"./dist/middlewares/elysia.js"},"./mcp-sdk/client":{"types":"./dist/mcp-sdk/client/index.d.ts","src":"./src/mcp-sdk/client/index.ts","default":"./dist/mcp-sdk/client/index.js"},"./mcp-sdk/server":{"types":"./dist/mcp-sdk/server/index.d.ts","src":"./src/mcp-sdk/server/index.ts","default":"./dist/mcp-sdk/server/index.js"},"./proxy":{"types":"./dist/proxy/index.d.ts","src":"./src/proxy/index.ts","default":"./dist/proxy/index.js"}},"scripts":{"build":"tsc","dev":"tsc --watch","prepublishOnly":"rm -rf dist && tsc","test":"vitest run"},"dependencies":{"ox":"^0.14.0","zod":"^4.3.6"},"peerDependencies":{"@modelcontextprotocol/sdk":">=1.25.0","elysia":">=1","express":">=5","hono":">=4"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true},"elysia":{"optional":true},"express":{"optional":true},"hono":{"optional":true}},"sideEffects":false,"devDependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@types/express":"^5.0.6","@types/node":"^25.3.3","elysia":"^1.4.27","hono":"^4.12.5","typescript":"^5.9.3","vitest":"^4.1.0"},"_id":"mpp-card@0.1.8","gitHead":"6e74e502b0fe21af853a52d2d3f331005827517a","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-SJ3YbpyUN8ztsJhoKoDTEogdscFdjrh4CkZa15YzCuzhAILeBEnVg/2xjbjM5W/cN5rvyqzg7jPhLWfmzMcBrw==","shasum":"1b1735d7f12d683e1010411c33af3e14cf182d9f","tarball":"https://registry.npmjs.org/mpp-card/-/mpp-card-0.1.8.tgz","fileCount":191,"unpackedSize":418030,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE0Hzm0Fz2KcbUl4a2uUUcMozqpTP47PFtw8jXNR2rGwAiEAtHtqSuw/2A+QgxUxpNlHRvjFk/KFmzN1NJLxg5fFSqE="}]},"_npmUser":{"name":"jbrans-visa","email":"jbrans@visa.com"},"directories":{},"maintainers":[{"name":"jbrans-visa","email":"jbrans@visa.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mpp-card_0.1.8_1773869296067_0.582365044346322"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-12T17:18:08.075Z","modified":"2026-03-18T21:28:16.662Z","0.0.1":"2026-03-12T17:18:08.272Z","0.0.2":"2026-03-12T17:23:31.509Z","0.0.4":"2026-03-12T20:18:23.682Z","0.0.5":"2026-03-13T08:08:20.950Z","0.0.6":"2026-03-15T00:56:13.165Z","0.0.7":"2026-03-15T18:21:19.219Z","0.0.8":"2026-03-15T19:56:40.627Z","0.0.9":"2026-03-16T00:19:06.482Z","0.1.0":"2026-03-16T07:08:42.386Z","0.1.1":"2026-03-16T19:01:25.710Z","0.1.2":"2026-03-18T01:14:40.036Z","0.1.3":"2026-03-18T03:45:50.068Z","0.1.4":"2026-03-18T03:48:43.816Z","0.1.5":"2026-03-18T07:12:09.243Z","0.1.6":"2026-03-18T08:14:24.582Z","0.1.7":"2026-03-18T20:36:41.791Z","0.1.8":"2026-03-18T21:28:16.226Z"},"author":{"name":"Visa Inc"},"license":"SEE LICENSE IN LICENSE","homepage":"https://paymentauth.org/payment-methods/card/","keywords":["mpp","machine-payments","card-payments","402","payment-protocol","agent-payments"],"description":"TypeScript SDK for card payments in the Machine Payments Protocol","maintainers":[{"name":"jbrans-visa","email":"jbrans@visa.com"}],"readme":"# mpp-card\n\nTypeScript SDK for card payments in the [Machine Payments Protocol](https://paymentauth.org). Gate any HTTP endpoint behind a Visa, Mastercard, Amex, or Discover payment — the server returns `402 Payment Required` with a challenge, the client obtains an encrypted network token and retries, and the server charges the card and returns a receipt. Works with any payment processor.\n\n## Documentation\n\nFull protocol specification at **[paymentauth.org/draft-card-charge-00.html](https://paymentauth.org/draft-card-charge-00.html)**.\n\n## Install\n\n```bash\nnpm i mpp-card\n```\n\n## Quick Start\n\n### Server\n\n```ts\nimport { MppCard } from 'mpp-card/server'\n\nconst mpp = MppCard.create({\n  acceptedNetworks: ['visa', 'mastercard'],\n  merchantName: 'Demo',\n  privateKey: process.env.PRIVATE_KEY,\n  secretKey: process.env.MPP_SECRET_KEY,\n  gateway: myServerEnabler, // Visa Acceptance, or custom\n})\n\nconst charge = mpp.charge({ amount: '500', currency: 'usd' })\n\nexport async function handler(request: Request) {\n  const result = await charge(request)\n  if (result.status === 402) return result.challenge\n  return result.withReceipt(Response.json({ data: '...' }))\n}\n```\n\nUse `generateKeyPair()` from `mpp-card/server` to generate a key pair, or bring your own RSA-2048 PEM. When `gateway` is omitted and `NODE_ENV` is not `\"production\"`, charges are mocked automatically.\n\n### Client\n\n```ts\nimport { MppCard, vgsClientEnabler } from 'mpp-card/client'\n\nMppCard.create({\n  cardId: 'CRD...',\n  enabler: vgsClientEnabler({ clientId: '...', clientSecret: '...' }),\n})\n\n// Global fetch now handles 402 automatically\nconst res = await fetch('https://api.merchant.com/data')\n```\n\nOmit `enabler` for a built-in dev mock.\n\n### Node.js HTTP\n\n```ts\nimport * as http from 'node:http'\n\nconst listener = MppCard.toNodeListener(charge)\n\nhttp.createServer(async (req, res) => {\n  const result = await listener(req, res)\n  if (result.status === 402) return\n  res.writeHead(200, { 'Content-Type': 'application/json' })\n  res.end(JSON.stringify({ data: '...' }))\n}).listen(3000)\n```\n\n## Custom Integrations\n\n### Payment Gateway (Server Enabler)\n\nConnect any payment processor by implementing `ServerEnabler`:\n\n```ts\nimport type { ServerEnabler } from 'mpp-card/server'\n\nconst custom: ServerEnabler = {\n  async charge({ token, network, amount, currency, idempotencyKey, ...extra }) {\n    // token.token.paymentToken — network token (DPAN)\n    // token.dynamicData.dynamicDataValue — cryptogram\n    // All credential payload fields pass through via ...extra\n    return { reference: 'ch_xxx', status: 'success' }\n  },\n}\n```\n\n### Credential Issuer (Client Enabler)\n\nConnect any credential issuer by implementing `ClientEnabler`:\n\n```ts\nimport type { ClientEnabler } from 'mpp-card/client'\n\nconst custom: ClientEnabler = {\n  async getPaymentData({ cardId, challenge }) {\n    // challenge.encryptionJwk — server's RSA public key\n    return {\n      encryptedPayload: '...',  // JWE (RSA-OAEP-256 + AES-256-GCM)\n      network: 'visa',\n      // Extra fields pass through to the credential and server enabler\n    }\n  },\n}\n```\n\nBuilt-in enablers: `vgsClientEnabler`, `visaAcceptanceClientEnabler`, `visaAcceptanceServerEnabler`. See `examples/` for usage.\n\n## Exports\n\n```ts\n// Server\nimport { MppCard, card, generateKeyPair, decryptToken } from 'mpp-card/server'\nimport type { ServerEnabler } from 'mpp-card/server'\n\n// Client\nimport { MppCard, vgsClientEnabler, visaAcceptanceClientEnabler } from 'mpp-card/client'\nimport type { ClientEnabler } from 'mpp-card/client'\n\n// Core\nimport { Challenge, Credential, Receipt, Errors } from 'mpp-card'\n```\n\n## Protocol\n\nBuilt on the [\"Payment\" HTTP Authentication Scheme](https://datatracker.ietf.org/doc/draft-ryan-httpauth-payment/). See [draft-mpp-card-charge-00](https://paymentauth.org/draft-card-charge-00.html) for the card charge intent specification.\n\n## License\n\nSee [LICENSE](./LICENSE) for terms.\n","readmeFilename":"README.md"}