{"_id":"@35m/sdk","name":"@35m/sdk","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@35m/sdk","version":"0.1.0","description":"35pay 客户端 SDK · 5 行接入聚合支付（WeChat / Alipay / Stripe / Creem / 易支付）","license":"MIT","homepage":"https://pay.35team.com","repository":{"type":"git","url":"git+https://github.com/guo2001china/35m.git","directory":"packages/sdk"},"bugs":{"url":"https://github.com/guo2001china/35m/issues"},"keywords":["35pay","payment","checkout","wechat-pay","alipay","stripe","creem","aggregated-payment","saas","indie"],"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"engines":{"node":">=18"},"devDependencies":{"@types/node":"^22.15.17","tsup":"^8.3.0","typescript":"^5.8.3"},"publishConfig":{"access":"public"},"author":{"name":"35m","email":"sdk@35m.ai"},"scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint src --max-warnings=0"},"_id":"@35m/sdk@0.1.0","_integrity":"sha512-qcOGE0znLS1s5lAz2av0pNax4vu4gRHHqbAtFQ/3dmJeB0wcHTlS+BZ7Y2otRiPxnc60OPxMzadq3X4fRzQGew==","_resolved":"/private/var/folders/sd/6t1pmz9j4dg98pszcfsvcq440000gn/T/1a7c52797082eb61326d8fe43a583fd5/35m-sdk-0.1.0.tgz","_from":"file:35m-sdk-0.1.0.tgz","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-qcOGE0znLS1s5lAz2av0pNax4vu4gRHHqbAtFQ/3dmJeB0wcHTlS+BZ7Y2otRiPxnc60OPxMzadq3X4fRzQGew==","shasum":"eb9fab794cca7cb86496141f259baef60880fa8b","tarball":"https://registry.npmjs.org/@35m/sdk/-/sdk-0.1.0.tgz","fileCount":7,"unpackedSize":19554,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD70Do8BMcmEHhOwI8LyV+a/6tyMM+8Vrh37PIl3a3mqwIgWK3+iFwqXohQW4ErkqJmJD8fN/Len4uupBw7AtVvI0c="}]},"_npmUser":{"name":"35m.ai","email":"sdk@35m.ai"},"directories":{},"maintainers":[{"name":"35m.ai","email":"sdk@35m.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.1.0_1777375480943_0.24935477247743076"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-28T11:24:40.883Z","0.1.0":"2026-04-28T11:24:41.079Z","modified":"2026-04-28T11:24:41.247Z"},"maintainers":[{"name":"35m.ai","email":"sdk@35m.ai"}],"description":"35pay 客户端 SDK · 5 行接入聚合支付（WeChat / Alipay / Stripe / Creem / 易支付）","homepage":"https://pay.35team.com","keywords":["35pay","payment","checkout","wechat-pay","alipay","stripe","creem","aggregated-payment","saas","indie"],"repository":{"type":"git","url":"git+https://github.com/guo2001china/35m.git","directory":"packages/sdk"},"author":{"name":"35m","email":"sdk@35m.ai"},"bugs":{"url":"https://github.com/guo2001china/35m/issues"},"license":"MIT","readme":"# @35m/sdk\n\n35pay 的 JavaScript / TypeScript SDK。\n\n## 安装\n\n```bash\nnpm i @35m/sdk\n```\n\n## 用法\n\n### 1. 创建支付\n\n```ts\nimport { createPay } from '@35m/sdk'\n\nconst pay = createPay({\n  apiKey: process.env.PAY_SECRET_KEY!, // sk_test_xxx 或 sk_live_xxx\n})\n\nconst session = await pay.createCheckout({\n  amount: 9900,                    // 单位：分\n  currency: 'CNY',\n  description: '追思视频套餐',\n  metadata: { orderId: order.id },\n  successUrl: 'https://yoursite.com/orders/123',\n  cancelUrl:  'https://yoursite.com/orders/123?canceled',\n})\n\n// 把用户重定向到 35pay 托管收银台\nres.redirect(session.url)\n```\n\n### 2. 接收 Webhook\n\n35pay 在用户支付完成后会调用你配置的 Webhook URL。所有请求带 `X-35pay-Signature` 头。\n\n```ts\nimport { Pay } from '@35m/sdk'\n\nexport async function POST(req: Request) {\n  const sig = req.headers.get('x-35pay-signature')!\n  const body = await req.text()\n\n  if (!Pay.verifyWebhookSignature(body, sig, process.env.PAY_WEBHOOK_SECRET!)) {\n    return new Response('invalid signature', { status: 401 })\n  }\n\n  const event = JSON.parse(body) as { type: string; data: { sessionId: string; metadata: Record<string, unknown> } }\n\n  if (event.type === 'payment.paid') {\n    await markOrderPaid(event.data.metadata.orderId as string)\n  }\n  return new Response('ok')\n}\n```\n\n### 3. 查询会话 / 退款\n\n```ts\nconst session = await pay.getSession('sess_xxx')\n\n// 退款\nawait pay.refund('rec_xxx', 9900, '客户要求')\n```\n\n## 与 SaaS 的关系\n\n`@35m/sdk` 是一个轻量的 HTTP 客户端，所有真实支付逻辑由 35pay SaaS 处理：\n- 商户在 [pay.35team.com](https://pay.35team.com) 后台配置自己的微信 / Stripe / Creem 商户号\n- SDK 只负责创建会话、查询状态、退款这些薄 API\n- 用户的支付页面由 35pay 托管展示（你拿到 `session.url` 跳过去即可）\n- 资金直接走商户的 provider 账户，35pay 不持有任何资金\n\n## License\n\n商业 License，请联系商务咨询自托管 / 企业版。\n","readmeFilename":"README.md","_rev":"1-00be9678b676f0e9db1544ad08e9137f"}