<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>跨区支付 on 逍遥笔记</title><link>https://blog.7qiang.com/tags/%E8%B7%A8%E5%8C%BA%E6%94%AF%E4%BB%98/</link><description>Recent content in 跨区支付 on 逍遥笔记</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>逍遥笔记</copyright><lastBuildDate>Sat, 01 Aug 2026 20:00:00 +0800</lastBuildDate><atom:link href="https://blog.7qiang.com/tags/%E8%B7%A8%E5%8C%BA%E6%94%AF%E4%BB%98/index.xml" rel="self" type="application/rss+xml"/><item><title>提链 — ChatGPT 跨区支付链接提取的完整技术拆解</title><link>https://blog.7qiang.com/posts/chatgpt-paylink-extraction-technical-guide/</link><pubDate>Sat, 01 Aug 2026 20:00:00 +0800</pubDate><guid>https://blog.7qiang.com/posts/chatgpt-paylink-extraction-technical-guide/</guid><description>&lt;img src="https://blog.7qiang.com/blog-cover-cyber-mask.gif" alt="Featured image of post 提链 — ChatGPT 跨区支付链接提取的完整技术拆解" /&gt;&lt;section class="xiaoyao-contact-card" aria-label="联系逍遥"&gt;
 &lt;img class="xiaoyao-contact-card__qr" src="https://blog.7qiang.com/contact-qr.png" width="690" height="690" loading="lazy" decoding="async" alt="逍遥微信二维码"&gt;
 &lt;div class="xiaoyao-contact-card__content"&gt;
 &lt;h3 class="xiaoyao-contact-card__title"&gt;联系逍遥&lt;/h3&gt;
 &lt;p class="xiaoyao-contact-card__description"&gt;扫码添加微信，或点击下方按钮复制联系方式。&lt;/p&gt;
 &lt;div class="xiaoyao-contact-buttons" data-contact-buttons&gt;
 &lt;button class="xiaoyao-contact-button xiaoyao-contact-button--wechat" type="button" data-copy-contact="plus6566" data-copy-label="微信号"&gt;
 &lt;span class="xiaoyao-contact-button__label"&gt;微信&lt;/span&gt;
 &lt;span class="xiaoyao-contact-button__value"&gt;plus6566&lt;/span&gt;
 &lt;span class="xiaoyao-contact-button__status" data-copy-status&gt;点击复制&lt;/span&gt;
 &lt;/button&gt;
 &lt;button class="xiaoyao-contact-button xiaoyao-contact-button--qq" type="button" data-copy-contact="826215906" data-copy-label="QQ 号"&gt;
 &lt;span class="xiaoyao-contact-button__label"&gt;QQ&lt;/span&gt;
 &lt;span class="xiaoyao-contact-button__value"&gt;826215906&lt;/span&gt;
 &lt;span class="xiaoyao-contact-button__status" data-copy-status&gt;点击复制&lt;/span&gt;
 &lt;/button&gt;
 &lt;span class="xiaoyao-contact-feedback" role="status" aria-live="polite"&gt;&lt;/span&gt;
&lt;/div&gt;

 &lt;/div&gt;
&lt;/section&gt;

&lt;p&gt;进微信群请联系博主，各位觉得文章对你有帮助的话可否打赏一些呀~&lt;/p&gt;
&lt;hr&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;⚠️ 免责声明&lt;/strong&gt;：本文仅供安全研究与技术讨论。文中不提供可直接复用的攻击工具或完整利用脚本。本文目的是帮助开发者理解 Stripe 跨区支付的工作原理，以及为什么某些支付方式在不同区域可见性不同。提链工具不篡改金额、不注入优惠码，用户以正常价格通过本地支付方式完成订阅。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="前言"&gt;前言
&lt;/h2&gt;&lt;p&gt;“提链&amp;quot;这个词，最近在各种 ChatGPT 合租群、代充群里频繁出现。&lt;/p&gt;
&lt;p&gt;什么意思呢？简单来说：&lt;strong&gt;把 ChatGPT 的信用卡结账页面，转换成一个本地支付方式（iDEAL / UPI / PIX / Kakao Pay / GCash…）的跳转链接。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你可能会问——OpenAI 不是只接受信用卡吗？&lt;/p&gt;
&lt;p&gt;准确地说，&lt;strong&gt;OpenAI 的前端只展示信用卡表单&lt;/strong&gt;。但后端用的是 Stripe，而 Stripe 在全球支持几十种本地支付方式。这些支付方式对应的国家、货币、支付类型都不同，OpenAI 在结账页面上做了筛选，只让你看到&amp;quot;信用卡 / 借记卡&amp;quot;一个选项。&lt;/p&gt;
&lt;p&gt;但 Stripe 的能力是在的。只要你能在创建 Checkout Session 时告诉 Stripe “我要用荷兰 iDEAL 支付”——Stripe 就会老老实实返回一个 iDEAL 的跳转链接。&lt;/p&gt;
&lt;p&gt;提链，就是&lt;strong&gt;从 Stripe 的 Checkout Session 里把这个跳转链接提出来&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;上一篇文章我们拆了 &lt;a class="link" href="https://blog.7qiang.com/posts/chatgpt-plus-0php-cross-region-pricing-exploit-2026/" target="_blank" rel="noopener"
 &gt;0 PHP 白嫖 ChatGPT Plus&lt;/a&gt; 的跨区定价混淆攻击。那个是利用区域信号碎片化 + 工具注入参数让金额变成 0——纯粹的漏洞利用，现在大概率已经被修了。&lt;/p&gt;
&lt;p&gt;而提链不同。&lt;strong&gt;提链是正常的商业行为&lt;/strong&gt;——用户以当地正常价格、通过当地正常的支付方式付款。只不过 OpenAI 的 UI 不展示这些选项，你得自己绕过前端的限制，直接和 Stripe 对话。&lt;/p&gt;
&lt;p&gt;今天把它从协议层完整拆开。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一为什么需要提链信用卡的困境"&gt;一、为什么需要提链——信用卡的困境
&lt;/h2&gt;&lt;p&gt;全球 80 亿人，有信用卡的不到 20 亿。&lt;/p&gt;
&lt;p&gt;印度人用 UPI，巴西人用 PIX，荷兰人用 iDEAL，韩国人用 Kakao Pay，越南人用 MoMo。这些不是什么小众支付方式——它们在各自国家的渗透率往往超过 70%。&lt;/p&gt;
&lt;p&gt;但 OpenAI 的结账页面只给你一个 Stripe Elements 信用卡表单：卡号、有效期、CVC。没有信用卡？不好意思。&lt;/p&gt;
&lt;p&gt;讽刺的是，Stripe 本身是支持这些本地支付方式的。OpenAI 创建 Checkout Session 时，就是通过 &lt;code&gt;billing_details.country&lt;/code&gt; 和 &lt;code&gt;billing_details.currency&lt;/code&gt; 来决定哪些支付方式可用。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;国家&lt;/th&gt;
 &lt;th&gt;货币&lt;/th&gt;
 &lt;th&gt;可用支付方式&lt;/th&gt;
 &lt;th&gt;月费&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;??🇱 荷兰&lt;/td&gt;
 &lt;td&gt;EUR&lt;/td&gt;
 &lt;td&gt;iDEAL&lt;/td&gt;
 &lt;td&gt;€20&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🇮🇳 印度&lt;/td&gt;
 &lt;td&gt;INR&lt;/td&gt;
 &lt;td&gt;UPI&lt;/td&gt;
 &lt;td&gt;₹1,950&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🇧🇷 巴西&lt;/td&gt;
 &lt;td&gt;BRL&lt;/td&gt;
 &lt;td&gt;PIX&lt;/td&gt;
 &lt;td&gt;R$99.90&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;??🇭 瑞士&lt;/td&gt;
 &lt;td&gt;CHF&lt;/td&gt;
 &lt;td&gt;TWINT&lt;/td&gt;
 &lt;td&gt;CHF 20&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🇰🇷 韩国&lt;/td&gt;
 &lt;td&gt;KRW&lt;/td&gt;
 &lt;td&gt;Kakao Pay&lt;/td&gt;
 &lt;td&gt;₩26,400&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🇵🇱 波兰&lt;/td&gt;
 &lt;td&gt;PLN&lt;/td&gt;
 &lt;td&gt;BLIK&lt;/td&gt;
 &lt;td&gt;zł79.99&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🇻🇳 越南&lt;/td&gt;
 &lt;td&gt;VND&lt;/td&gt;
 &lt;td&gt;MoMo&lt;/td&gt;
 &lt;td&gt;₫460,000&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;??🇭 菲律宾&lt;/td&gt;
 &lt;td&gt;PHP&lt;/td&gt;
 &lt;td&gt;GCash&lt;/td&gt;
 &lt;td&gt;₱990&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些价格不是我编的——它们真实存在于 Stripe 的 Checkout Session 响应里。OpenAI 按照区域设置了不同的定价，Stripe 负责处理。只是 OpenAI 的前端选择性地隐藏了这些支付方式。&lt;/p&gt;
&lt;p&gt;提链工具要做的，就是&lt;strong&gt;绕过前端的限制，以目标国家/货币创建 Checkout Session，然后从 Stripe 的 confirm 响应中提取第三方支付的跳转链接&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二提链的技术原理四步拆解"&gt;二、提链的技术原理——四步拆解
&lt;/h2&gt;&lt;h3 id="step-1获取-access-token"&gt;Step 1：获取 Access Token
&lt;/h3&gt;&lt;p&gt;登录 chatgpt.com，在浏览器中打开：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://chatgpt.com/api/auth/session
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;返回一个 JSON：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;user&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;user-xxx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;email&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;accessToken&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;accessToken&lt;/code&gt; 是一个标准 JWT，有效期通常 5~10 分钟。它是后续所有 API 调用的认证凭据。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;提链工具同时也支持直接粘贴 &lt;code&gt;__Secure-next-auth.session-token&lt;/code&gt; cookie——这个 cookie 可以用来换取新的 access token。但最简单的方式还是直接复制上面的 JSON。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="step-2创建-checkout-session"&gt;Step 2：创建 Checkout Session
&lt;/h3&gt;&lt;p&gt;用 Access Token 调用 OpenAI 的 checkout API：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;POST https://chatgpt.com/backend-api/payments/checkout
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Authorization: Bearer eyJ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; &amp;#34;entry_point&amp;#34;: &amp;#34;all_plans_pricing_modal&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; &amp;#34;plan_name&amp;#34;: &amp;#34;chatgptplusplan&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; &amp;#34;billing_details&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; &amp;#34;country&amp;#34;: &amp;#34;NL&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; &amp;#34;currency&amp;#34;: &amp;#34;EUR&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; &amp;#34;checkout_ui_mode&amp;#34;: &amp;#34;custom&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;关键参数是 &lt;code&gt;billing_details&lt;/code&gt; 里的 &lt;code&gt;country&lt;/code&gt; 和 &lt;code&gt;currency&lt;/code&gt;。这两个字段决定了 Stripe 在初始化支付页面时会提供哪些支付方式。传 &lt;code&gt;NL&lt;/code&gt; + &lt;code&gt;EUR&lt;/code&gt;，Stripe 就会在 &lt;code&gt;payment_method_types&lt;/code&gt; 里包含 &lt;code&gt;ideal&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;响应：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;checkout_session_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;oaics_xxxxxxxxxxxx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;processor_entity&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;openai_llc&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;publishable_key&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;pk_live_xxxxxxxxxxxx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;payment_method_types&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;card&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ideal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;oaics_&lt;/code&gt; 前缀是 OpenAI 定制的 Stripe Checkout Session ID 格式。&lt;/p&gt;
&lt;h3 id="step-3stripe-协议流程"&gt;Step 3：Stripe 协议流程
&lt;/h3&gt;&lt;p&gt;拿到 Checkout Session ID 后，需要完成一系列 Stripe API 调用。这是提链的核心技术含量所在——不是简单地 POST 一个接口就完事了。&lt;/p&gt;
&lt;p&gt;完整的协议流程有 12 步：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;┌──────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 1. Session Refresh │ (用 cookie 换新的 AT)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 2. Create Checkout │ (拿 AT 创建 checkout session)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 3. Stripe Init │ (初始化支付页面状态)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 4. Update OAI Taxes │ (通知 OpenAI 更新税务)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 5. Stripe Tax Region │ (更新 Stripe 税务区域)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 6. Stripe Customer Data │ (更新客户信息)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 7. OAI Checkout Snapshot │ (保存 checkout 快照)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 8. Pre-Confirm │ (部分支付方式需要)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 9. Create Payment Method │ (创建 PM，类型=ideal/upi/pix...)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 10. Confirm │ (确认支付，触发重定向)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 11. Approve │ (如果需要额外批准)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 12. Extract Redirect URL │ (从 confirm 响应中提取跳转链接)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└──────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;每一步都有自己的参数格式和必要的状态管理。Stripe 的 Checkout Session 是有状态的——它跟踪你的 &lt;code&gt;eid&lt;/code&gt;（element ID）、&lt;code&gt;mrid&lt;/code&gt;（merchant reference ID）、&lt;code&gt;expected_amount&lt;/code&gt; 等等。如果你跳过了某一步或者参数不对，后续步骤就会报错。&lt;/p&gt;
&lt;h3 id="step-4提取支付链接"&gt;Step 4：提取支付链接
&lt;/h3&gt;&lt;p&gt;第 10 步 &lt;code&gt;Confirm&lt;/code&gt; 之后，如果支付方式是重定向类型（iDEAL、UPI、PIX 等都是），Stripe 会在响应中返回一个 &lt;code&gt;redirect_url&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;requires_action&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;next_action&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;redirect_to_url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;redirect_to_url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://hooks.stripe.com/redirect/authenticate/src_xxx?client_secret=...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个 URL 就是最终的支付链接。用户在浏览器中打开它，会被重定向到对应的支付方式页面（iDEAL 的银行选择页、UPI 的付款确认页、PIX 的二维码页面等）。完成支付后，Stripe webhook 通知 OpenAI，OpenAI 确认订阅生效。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;整个流程，金额由 Stripe 的价格表决定，提链工具不篡改任何金额字段。&lt;/strong&gt; 用户付的就是对应国家/地区的标准月费。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三stripe-checkout-session-的内部结构"&gt;三、Stripe Checkout Session 的内部结构
&lt;/h2&gt;&lt;p&gt;拆开看，Stripe Checkout Session 里藏了不少有趣的东西。&lt;/p&gt;
&lt;p&gt;第 3 步 &lt;code&gt;Stripe Init&lt;/code&gt; 调用的是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;POST https://api.stripe.com/v1/payment_pages/{oaics_xxx}/init
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;响应中最关键的几个字段：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;payment_method_types&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;card&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ideal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;line_items&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ChatGPT Plus subscription&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;amount&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;currency&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;eur&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;shipping_address_collection&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;payment_method_configuration&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;merchant_reference_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;mri_xxx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;customer_session_client_secret&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;cuss_xxx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;session_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;oaics_xxx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;payment_method_types&lt;/code&gt; 是关键——它决定了这个 Checkout Session 支持哪些支付方式。同一个接口，传不同的 &lt;code&gt;country&lt;/code&gt; / &lt;code&gt;currency&lt;/code&gt;，返回的 &lt;code&gt;payment_method_types&lt;/code&gt; 就不同。&lt;/p&gt;
&lt;p&gt;这也解释了为什么 OpenAI 前端只显示信用卡——它在创建 Checkout Session 时没有传目标国家的 &lt;code&gt;billing_details&lt;/code&gt;，或者传的是用户账号的注册国家（通常是 US），所以 Stripe 只返回 &lt;code&gt;[&amp;quot;card&amp;quot;]&lt;/code&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四八种支付方式的技术对比"&gt;四、八种支付方式的技术对比
&lt;/h2&gt;&lt;p&gt;每种支付方式在 Stripe 层面的行为略有不同：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;支付方式&lt;/th&gt;
 &lt;th&gt;PM Type&lt;/th&gt;
 &lt;th&gt;国家&lt;/th&gt;
 &lt;th&gt;货币&lt;/th&gt;
 &lt;th&gt;需要 pre_confirm&lt;/th&gt;
 &lt;th&gt;重定向类型&lt;/th&gt;
 &lt;th&gt;特殊处理&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;iDEAL&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;ideal&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;NL&lt;/td&gt;
 &lt;td&gt;EUR&lt;/td&gt;
 &lt;td&gt;✗&lt;/td&gt;
 &lt;td&gt;银行选择页&lt;/td&gt;
 &lt;td&gt;无&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UPI&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;upi&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;IN&lt;/td&gt;
 &lt;td&gt;INR&lt;/td&gt;
 &lt;td&gt;✗&lt;/td&gt;
 &lt;td&gt;VPA 输入页&lt;/td&gt;
 &lt;td&gt;无&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PIX&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pix&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;BR&lt;/td&gt;
 &lt;td&gt;BRL&lt;/td&gt;
 &lt;td&gt;✗&lt;/td&gt;
 &lt;td&gt;二维码页&lt;/td&gt;
 &lt;td&gt;无&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;TWINT&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;twint&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CH&lt;/td&gt;
 &lt;td&gt;CHF&lt;/td&gt;
 &lt;td&gt;✗&lt;/td&gt;
 &lt;td&gt;App 跳转&lt;/td&gt;
 &lt;td&gt;无&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Kakao Pay&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;kakao_pay&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;KR&lt;/td&gt;
 &lt;td&gt;KRW&lt;/td&gt;
 &lt;td&gt;✓&lt;/td&gt;
 &lt;td&gt;Kakao 确认页&lt;/td&gt;
 &lt;td&gt;需要 pre_confirm 调用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;BLIK&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;blik&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;PL&lt;/td&gt;
 &lt;td&gt;PLN&lt;/td&gt;
 &lt;td&gt;✗&lt;/td&gt;
 &lt;td&gt;6位码输入&lt;/td&gt;
 &lt;td&gt;无&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MoMo&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;momo&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;VN&lt;/td&gt;
 &lt;td&gt;VND&lt;/td&gt;
 &lt;td&gt;✓&lt;/td&gt;
 &lt;td&gt;MoMo App&lt;/td&gt;
 &lt;td&gt;需要 pre_confirm 调用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;GCash&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;gcash&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;PH&lt;/td&gt;
 &lt;td&gt;PHP&lt;/td&gt;
 &lt;td&gt;✗&lt;/td&gt;
 &lt;td&gt;GCash 确认页&lt;/td&gt;
 &lt;td&gt;无&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;大多数支付方式流程一致：创建 PM → Confirm → 提取 redirect URL。但 Kakao Pay 和 MoMo 需要额外的 &lt;code&gt;pre_confirm&lt;/code&gt; 调用——如果跳过这一步，Confirm 会返回 &lt;code&gt;incomplete&lt;/code&gt; 状态，没有 redirect URL。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pre_confirm&lt;/code&gt; 的请求格式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;POST https://api.stripe.com/v1/payment_pages/{oaics_xxx}/pre_confirm
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Content-Type: application/x-www-form-urlencoded
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;expected_payment_method_type=kakao_pay
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;看起来简单，但如果你不知道有这一步，Kakao Pay 的提链就会卡在最后一步——所有参数都对了，就是拿不到链接。这类细节只有通过 HAR 抓包 Stripe 的完整结账流程才能发现。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五从-0-php-到提链漏洞与工具的边界"&gt;五、从 0 PHP 到提链——漏洞与工具的边界
&lt;/h2&gt;&lt;p&gt;上一篇文章分析了 &lt;a class="link" href="https://blog.7qiang.com/posts/chatgpt-plus-0php-cross-region-pricing-exploit-2026/" target="_blank" rel="noopener"
 &gt;0 PHP 攻击&lt;/a&gt;，里面提到第三方工具在创建 Checkout Session 时可能注入了零元参数（如 &lt;code&gt;promo_campaign&lt;/code&gt;）。那么问题来了：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;提链工具和那个&amp;quot;CDK 提炼&amp;quot;工具是一回事吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不是。区别在于：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;0 PHP “提炼&amp;quot;工具&lt;/th&gt;
 &lt;th&gt;正常提链工具&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;目的&lt;/td&gt;
 &lt;td&gt;白嫖（amount = 0）&lt;/td&gt;
 &lt;td&gt;正常付款&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;是否注入优惠码&lt;/td&gt;
 &lt;td&gt;是（&lt;code&gt;promo_campaign&lt;/code&gt;、&lt;code&gt;discount&lt;/code&gt; 等）&lt;/td&gt;
 &lt;td&gt;否&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;金额来源&lt;/td&gt;
 &lt;td&gt;工具操纵&lt;/td&gt;
 &lt;td&gt;Stripe 价格表&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;合法性&lt;/td&gt;
 &lt;td&gt;灰色/违法&lt;/td&gt;
 &lt;td&gt;正常商业行为&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;正常的提链工具&lt;strong&gt;不注入任何优惠参数&lt;/strong&gt;。它只是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用你的 AT 创建一个以目标国家/货币计价的 Checkout Session&lt;/li&gt;
&lt;li&gt;走完 Stripe 的协议流程&lt;/li&gt;
&lt;li&gt;把 redirect URL 返回给你&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;你付的是 Stripe 价格表上对应区域的标准价格——荷兰 €20/月，印度 ₹1,950/月，巴西 R$99.90/月。没有优惠码，没有金额篡改。&lt;/p&gt;
&lt;p&gt;正常的提链工具的设计原则应该是：&lt;strong&gt;不注入 &lt;code&gt;promo_campaign&lt;/code&gt;，不传 &lt;code&gt;discount&lt;/code&gt;，不覆盖 &lt;code&gt;amount&lt;/code&gt;。&lt;/strong&gt; 工具只做一件事——把 Stripe 的本地支付能力释放出来，让没有信用卡的用户也能正常订阅。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六协议细节那些让你卡住的坑"&gt;六、协议细节——那些让你卡住的坑
&lt;/h2&gt;&lt;p&gt;如果你自己尝试过写提链脚本，你一定踩过这些坑。&lt;/p&gt;
&lt;h3 id="坑-1ip-一致性"&gt;坑 1：IP 一致性
&lt;/h3&gt;&lt;p&gt;Stripe Checkout Session 在创建和确认时需要使用同一个 IP。如果你用代理 A 创建了 Checkout Session，又用代理 B 去 Confirm——Stripe 会返回 &lt;code&gt;invalid_request_error&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这不是 Stripe 的 bug，是安全机制。Stripe 检测到 session 的创建 IP 和确认 IP 不一致，会认为可能是中间人攻击。&lt;/p&gt;
&lt;p&gt;解决方案：&lt;strong&gt;整个 12 步流程使用同一个 HTTP client（或 cookie jar），确保所有请求走同一个出口 IP。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="坑-2expected_amount"&gt;坑 2：&lt;code&gt;expected_amount&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Stripe 的 Confirm 请求需要传 &lt;code&gt;expected_amount&lt;/code&gt; 参数，值必须和 Checkout Session 的金额一致。这个值从哪来？&lt;/p&gt;
&lt;p&gt;最准确的来源是第 4 步 &lt;code&gt;Update Taxes&lt;/code&gt; 的响应。这一步把账单地址传给 OpenAI，OpenAI 计算含税金额后写入 Checkout Session，然后返回一个 snapshot，里面有 &lt;code&gt;amount_total&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;snapshot&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;amount_total&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;currency&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;eur&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你用 Init 步骤的金额去 Confirm，可能会因为税后金额不一致而失败。&lt;/p&gt;
&lt;h3 id="坑-3stripe-session-state"&gt;坑 3：Stripe Session State
&lt;/h3&gt;&lt;p&gt;Stripe 的 Checkout Session 维护了一个内部状态。每次 API 调用后，响应里都会更新 &lt;code&gt;eid&lt;/code&gt;、&lt;code&gt;mrid&lt;/code&gt; 等字段。下一次调用必须带上最新的状态值。&lt;/p&gt;
&lt;p&gt;这意味着你不能简单地并行调用 12 步——必须严格按顺序执行，每一步用上一步返回的最新状态。&lt;/p&gt;
&lt;h3 id="坑-4accept-language-和-guid"&gt;坑 4：&lt;code&gt;Accept-Language&lt;/code&gt; 和 &lt;code&gt;guid&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;这两个是容易忽略的细节：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stripe API 会根据 &lt;code&gt;Accept-Language&lt;/code&gt; 请求头返回不同的 &lt;code&gt;locale&lt;/code&gt; 配置。如果你不传，默认是 &lt;code&gt;en-US&lt;/code&gt;，但某些支付方式在特定 locale 下行为不同。&lt;/li&gt;
&lt;li&gt;Stripe 的某些内部 API 需要一个 &lt;code&gt;guid&lt;/code&gt; 参数，格式是 &lt;code&gt;xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx&lt;/code&gt;（UUID v4）。不是随便写的——格式不对会被拒绝。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="坑-5超时"&gt;坑 5：超时
&lt;/h3&gt;&lt;p&gt;整个流程从创建 Checkout Session 到拿到 redirect URL，通常需要 10~30 秒。某些支付方式（如 Kakao Pay）可能需要更长时间，因为 Stripe 需要和第三方支付系统交互。&lt;/p&gt;
&lt;p&gt;如果 Confirm 之后没有立刻返回 redirect URL，需要轮询 Init 接口。URL 可能在 Confirm 后几秒到几十秒内才出现。我们的工具最多等 90 秒——超过这个时间通常意味着哪里出了问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="七开源提链脚本"&gt;七、开源提链脚本
&lt;/h2&gt;&lt;p&gt;说了这么多原理，给一些现成的实现参考。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;⚠️ 时效性声明&lt;/strong&gt;：以下脚本收集于 2026 年 7 月。OpenAI/Stripe 的 API 接口、Stripe runtime 版本、风控策略随时可能变更，脚本&lt;strong&gt;可能已不可用&lt;/strong&gt;。仅供学习协议流程和理解技术原理，不保证当前可运行。使用前请自行验证。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="多支付方式提链套件"&gt;多支付方式提链套件
&lt;/h3&gt;&lt;p&gt;来源：社区开源的 &lt;code&gt;ideal-link-extractor&lt;/code&gt;，MIT License。&lt;/p&gt;
&lt;p&gt;包含 6 种支付方式的独立提取脚本：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;脚本&lt;/th&gt;
 &lt;th&gt;支付方式&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ideal_qr_extract.py&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;iDEAL（荷兰）&lt;/td&gt;
 &lt;td&gt;核心脚本（3263 行），其他脚本的参考实现&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;upi/upi_extract.py&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;UPI（印度）&lt;/td&gt;
 &lt;td&gt;含多代理轮转、并行模式&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;pix/pix_extract.py&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;PIX（巴西）&lt;/td&gt;
 &lt;td&gt;二维码提取&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;twint/twint_extract.py&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;TWINT（瑞士）&lt;/td&gt;
 &lt;td&gt;App 跳转链接&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kakao/kakao_extract.py&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Kakao Pay（韩国）&lt;/td&gt;
 &lt;td&gt;含 pre_confirm 处理&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;blik/blik_qr_extract.py&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;BLIK（波兰）&lt;/td&gt;
 &lt;td&gt;6 位码输入链接&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;detect_payment_methods.py&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;通用&lt;/td&gt;
 &lt;td&gt;按国家检测可用的 Stripe 支付方式&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;依赖：&lt;code&gt;requests&lt;/code&gt;、&lt;code&gt;curl_cffi&lt;/code&gt;、&lt;code&gt;qrcode[pil]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;基本用法（以 UPI 为例）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install requests curl_cffi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;UPI_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;eyJhbGciOi...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;UPI_PROXY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;socks5://user:pass@host:port&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;# 自备代理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python upi_extract.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;每个脚本通过环境变量配置代理（&lt;code&gt;XXX_PROXY&lt;/code&gt;）和 Token（&lt;code&gt;XXX_TOKEN&lt;/code&gt; 或 &lt;code&gt;token.txt&lt;/code&gt; 文件）。代理需自备——脚本不内置任何代理。&lt;/p&gt;
&lt;h3 id="momo-提取脚本越南"&gt;MoMo 提取脚本（越南）
&lt;/h3&gt;&lt;p&gt;独立维护的 MoMo/Kakao 脚本集，包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;kakao_extract.py&lt;/code&gt;——共享的会话管理和 Stripe 协议辅助函数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;momo_channel_probe.py&lt;/code&gt;——只读模式探测 MoMo 通道可用性&lt;/li&gt;
&lt;li&gt;&lt;code&gt;momo_probe.py&lt;/code&gt;——默认只读，设置 &lt;code&gt;MOMO_EXTRACT_REDIRECT=1&lt;/code&gt; 才尝试提取&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;依赖额外的 Playwright（需要 Chromium）。&lt;/p&gt;
&lt;h3 id="脚本的核心设计"&gt;脚本的核心设计
&lt;/h3&gt;&lt;p&gt;这些脚本的技术亮点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;代理状态持久化&lt;/strong&gt;——&lt;code&gt;proxy_state.json&lt;/code&gt; 记录每个代理的健康状态、成功/失败计数、冷却时间&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日志脱敏&lt;/strong&gt;——自动将代理地址、Token 等敏感信息替换为安全标签&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多 Worker 并行&lt;/strong&gt;——支持多线程并发提取，自动分配代理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stripe 协议完整实现&lt;/strong&gt;——Session state 管理、&lt;code&gt;eid&lt;/code&gt;/&lt;code&gt;mrid&lt;/code&gt; 追踪、tax region 更新，完整复刻浏览器行为&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：部分脚本包含 &lt;code&gt;promo_campaign&lt;/code&gt; 注入逻辑和 &lt;code&gt;REQUIRE_ZERO&lt;/code&gt; 选项（用于上一篇文章分析的 0 PHP 攻击路径）。这些属于漏洞利用代码，&lt;strong&gt;不建议使用&lt;/strong&gt;——OpenAI 大概率已做修复，强行使用可能导致账号风控。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="八为什么-openai-不直接提供这些支付方式"&gt;八、为什么 OpenAI 不直接提供这些支付方式？
&lt;/h2&gt;&lt;p&gt;好问题。Stripe 支持它们，OpenAI 用的是 Stripe，为什么不在结账页面上显示？&lt;/p&gt;
&lt;p&gt;几个可能的原因：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;合规成本&lt;/strong&gt;：每个国家的本地支付方式有不同的合规要求（反洗钱、实名验证等）。支持 iDEAL 意味着要满足荷兰的金融监管要求。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;退款风险&lt;/strong&gt;：某些本地支付方式的退款/dispute 流程和信用卡不同。PIX 的退款机制、UPI 的 chargeback 流程，都需要额外的运营投入。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;税务复杂度&lt;/strong&gt;：不同国家的增值税率不同，账单格式要求不同。OpenAI 需要为每个国家维护正确的税务处理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优先级&lt;/strong&gt;：信用卡覆盖了 OpenAI 的核心市场（北美、欧洲）。本地支付方式对应的市场（东南亚、拉美、南亚）目前可能不是优先级。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;但 Stripe 的能力已经在那里了。&lt;code&gt;payment_method_types&lt;/code&gt; 里已经包含了这些方式。OpenAI 只需要在前端把选项打开。在此之前——提链工具就是桥梁。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="九和-0-php-漏洞的关系一张图说清"&gt;九、和 0 PHP 漏洞的关系——一张图说清
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌───────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 正常提链工具 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ country=NL, currency=EUR │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ NO promo_campaign │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ → amount = €20 (Stripe 价格表) │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ → redirect URL → iDEAL 付款 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └───────────┬───────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 同一个 API │ 同一个 API
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌───────────▼───────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ OpenAI /payments/checkout API │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ + Stripe Checkout Session │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └───────────┬───────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ┌───────────▼───────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ 0 PHP 攻击工具 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ country=PH, currency=PHP │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ + promo_campaign injection │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ + cross-region confusion │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ → amount = ₱0 (被操纵) │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ → PH BIN 卡完成支付 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └───────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;同一个 API，两种用法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;提链&lt;/strong&gt;：合法利用 Stripe 的本地支付能力，正常价格&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0 PHP&lt;/strong&gt;：利用跨区信号碎片化 + 参数注入，把价格打到零&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提链不是漏洞利用。它只是 Stripe 本来就有的能力，被 OpenAI 前端隐藏了而已。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十写在最后"&gt;十、写在最后
&lt;/h2&gt;&lt;p&gt;提链的本质是一个简单的事实：&lt;strong&gt;Stripe 是一个全球支付平台，它天然支持几十种本地支付方式。OpenAI 的 UI 做了限制，但 API 没有。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从技术角度看，12 步协议流程的每一步都有其必要性——IP 一致性、状态管理、税务更新、pre_confirm。跳过任何一步都会导致最终拿不到 redirect URL。这也是为什么&amp;quot;提链&amp;quot;不是简单地抓个包就能搞定的——你需要理解 Stripe 的完整 Checkout 流程。&lt;/p&gt;
&lt;p&gt;从商业角度看，提链让全球用户有了一种不依赖信用卡的方式来使用 ChatGPT。在信用卡渗透率不到 10% 的印度，UPI 是 8 亿人的默认支付方式。提链本身不是什么灰色操作——它只是把 Stripe 的能力释放给了真正需要的人。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;最后的最后&lt;/strong&gt;：本文提到的所有脚本和协议细节都有时效性。OpenAI 和 Stripe 的接口在持续变化——Stripe runtime version 会更新，API 字段会调整，风控规则会收紧。今天能跑的脚本，明天可能就 403 了。理解原理比收藏脚本更重要。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="附录直卡绑定另一条路"&gt;附录：直卡绑定——另一条路
&lt;/h2&gt;&lt;p&gt;除了提链，还有一种完全不同的思路：&lt;strong&gt;直接给 ChatGPT 账号绑一张卡，然后正常走 checkout。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这就是&amp;quot;直卡焚决&amp;quot;方法的核心。它不绕过前端、不走第三方支付——它解决的是&amp;quot;没有美区信用卡&amp;quot;这个前置问题。&lt;/p&gt;
&lt;h3 id="原理"&gt;原理
&lt;/h3&gt;&lt;p&gt;OpenAI 的 &lt;code&gt;/backend-api/payments/payment_method&lt;/code&gt; 接口支持创建 Stripe &lt;code&gt;SetupIntent&lt;/code&gt;——这是 Stripe 的&amp;quot;先绑卡不扣款&amp;quot;机制。绑上之后，下次走 checkout 时就有卡可用了。&lt;/p&gt;
&lt;p&gt;配套的控制台脚本（在 chatgpt.com 的 Console 里运行）做了这几件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;自动发现 Stripe 公钥&lt;/strong&gt;——OpenAI 有两个 Stripe 商户分片（&lt;code&gt;KslHRdbaPg&lt;/code&gt; 和 &lt;code&gt;C6h1nxGoI3&lt;/code&gt;），脚本通过 &lt;code&gt;retrieveSetupIntent&lt;/code&gt; 自动匹配当前账号属于哪个分片&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创建 SetupIntent&lt;/strong&gt;——调用 OpenAI 的 &lt;code&gt;payment_method&lt;/code&gt; API，拿到 &lt;code&gt;client_secret&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;渲染 Stripe Card Element&lt;/strong&gt;——在页面上弹出一个模态框，内嵌 Stripe 的标准卡输入组件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;确认绑定&lt;/strong&gt;——&lt;code&gt;stripe.confirmCardSetup&lt;/code&gt; + &lt;code&gt;set_as_default_payment_method: true&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 关键调用
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kr"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;stripe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;confirmCardSetup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;clientSecret&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;payment_method&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;card&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;cardElement&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;billing_details&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;allow_redisplay&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;always&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;set_as_default_payment_method&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;绑卡成功后，脚本还会调用 &lt;code&gt;/backend-api/payments/payment_methods&lt;/code&gt; 拉取当前账号的所有支付方式列表，用 &lt;code&gt;console.table&lt;/code&gt; 打印出来。你可以看到新绑的卡已经成为默认支付方式。&lt;/p&gt;
&lt;h3 id="和提链的关系"&gt;和提链的关系
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;直卡绑定&lt;/strong&gt;：解决&amp;quot;没有卡&amp;quot;的问题。需要有一张能过 Stripe AVS/3DS 验证的实体或虚拟卡。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提链&lt;/strong&gt;：解决&amp;quot;不想/不能用信用卡&amp;quot;的问题。走本地支付方式，完全不涉及信用卡。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;两种方法互补——有卡的用直卡，没卡的用提链。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="相关阅读"&gt;相关阅读
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.7qiang.com/posts/chatgpt-plus-0php-cross-region-pricing-exploit-2026/" target="_blank" rel="noopener"
 &gt;0 PHP 白嫖 ChatGPT Plus — 跨区定价混淆攻击的完整技术拆解&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.7qiang.com/posts/gpt-plus-google-play-subscription-transfer/" target="_blank" rel="noopener"
 &gt;ChatGPT Plus Google Play 订阅转移漏洞分析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.7qiang.com/posts/gpt-plus-exploit-revenuecat-vulnerability/" target="_blank" rel="noopener"
 &gt;RevenueCat 凭证转移漏洞——匿名购买 + restore 归属偷渡&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.7qiang.com/posts/google-play-ccmax-proration-vulnerability-2026/" target="_blank" rel="noopener"
 &gt;Google Play CC Max 比例分配漏洞&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>