
获取 PayPal 的 Client ID 和 Secret Key(通常称为“客户端 ID”和“密钥”)是集成 PayPal 支付功能的第一步。这个过程完全在 PayPal 开发者后台完成。
以下是详细的步骤指南,包括不同类型的 App 的区别。
第 1 步:登录 PayPal 开发者平台
- 访问 PayPal Developers 网站: https://developer.paypal.com/dashboard/applications/live
- 点击右上角的 Log In,使用你的 企业级 PayPal 账户 登录(个人账户可能功能受限)。如果你还没有商业账户,需要先注册一个。

第 2 步:进入 Dashboard 和 API 凭证页面
- 登录后,点击右上角的你的名字或头像,在下拉菜单中选择 Dashboard。这将进入 PayPal 开发者后台。
- 在左侧的菜单栏中,找到并点击 Apps & Credentials。这里就是你管理所有 API 应用程序的地方。

第 3 步:选择环境并创建应用
PayPal 提供两种环境,它们的 Client ID 和 Secret 是独立的:
- Sandbox(沙盒环境):用于测试。不会产生真实交易,使用模拟的买家卖家账户。
- Live(生产环境):用于正式上线。处理真实资金交易。
首先,你应该在 Sandbox 环境下进行测试。
- 确保页面顶部的环境切换器选中的是 Sandbox。
- 你会看到一个名为 My Apps & Credentials 的区域。这里通常已经有一个默认的应用,名称类似 “Express Checkout Sandbox App”。你可以直接使用它,也可以点击 Create App 按钮创建一个新的应用(例如,为你的特定网站或应用命名)。
- 创建应用时:
- App Name: 给你的应用起一个易于识别的名字(例如:”My Online Store”)。
- Select Merchant: 选择你的沙盒测试商家账户。通常默认即可,系统会自动关联一个。

第 4 步:获取 Client ID 和 Secret Key
创建应用或点击现有应用的名称后,你会进入应用的详情页面。在这里,你可以清晰地看到你的凭证:
- Client ID: 直接显示在页面上。
- Secret: 默认是隐藏的,点击 Show 按钮来查看它。
请立即复制并妥善保存这两个值! Secret Key 只显示一次,如果你关闭了页面,将无法再次查看,需要重新生成。
第 5 步:切换到 Live 环境(准备上线时)
当你的开发测试完成,准备接受真实付款时,你需要获取 Live 环境的凭证。
- 在 Apps & Credentials 页面,将顶部的环境切换器从 Sandbox 改为 Live。
- 同样,你可以使用默认的 Live 应用,或点击 Create App 创建一个新的。
- 获取 Live 环境的 Client ID 和 Secret。这个 Secret 比 Sandbox 的更为重要,必须严格保密!
重要提示和最佳实践
- Sandbox vs. Live: 这是最重要的概念。
- 开发阶段: 在代码中配置 Sandbox 的 Client ID 和 Secret。
- 上线阶段: 将代码中的配置替换为 Live 的 Client ID 和 Secret。
- Secret Key 的安全性:
- 绝对不要 将 Live Secret Key 提交到 Git 等版本控制系统或写在客户端代码(如 JavaScript)中。
- 应该将 Secret Key 存储在环境变量、服务器配置文件或安全的密钥管理服务中。
- 如果 Secret Key 泄露:
- 立即返回 Apps & Credentials 页面。
- 找到对应的应用,在 Secret 旁边有一个 Change 或 Generate 按钮。点击它生成一个新的 Secret Key,并立即更新你的服务器配置。
- 不同的集成方式:
- REST API: 使用上述步骤获取的 Client ID 和 Secret。
- 经典 API(NVP/SOAP): 需要的是 API 用户名、密码和签名,而不是 Client ID/Secret。你可以在 Apps & Credentials -> Sandbox/Live 页面的 API Credentials 部分找到它们。
拿到凭据后:接入 WooCommerce 的步骤
如果你用的是 WordPress + WooCommerce,官方的 WooCommerce PayPal Payments 插件可以用 REST 应用的 Client ID 和 Secret 手动连接。注意它用的是 REST API 凭据,不是旧版 NVP/SOAP 的 API 用户名、密码和签名,也不是 PayPal 登录密码。
开始前的准备
- WordPress、WooCommerce 和 WooCommerce PayPal Payments 插件都已更新,不要套用已弃用的 PayPal Standard。
- 结账页使用有效 HTTPS,服务器能访问
api-m.sandbox.paypal.com和api-m.paypal.com。 - 有 PayPal Business 账户;沙盒测试还需要一个 Sandbox Business 卖家账户和一个 Sandbox Personal 买家账户。
- 结账页不要被页面缓存,安全插件不要拦截 WooCommerce REST API、AJAX 和 webhook。
- 先备份网站。
在 WooCommerce 中手动连接
- 进入 WordPress 后台 → WooCommerce → 设置 → 付款,找到 PayPal,进入 WooCommerce PayPal Payments 设置页。
- 在欢迎页点击 See advanced options,选择手动连接。如果已经在 “Complete Payment Setup” 页面,先点 Back to Welcome 再展开高级选项。
- 测试阶段启用 Sandbox,把同一个 Sandbox 应用的 Client ID 和 Secret 分别粘贴到对应字段。
- 点击 Connect Account,成功后保存设置。
入口和字段以 WooCommerce 官方文档为准:Account Setup and Onboarding。
用 Sandbox 跑通一笔完整交易
- 在 PayPal Developer Dashboard 的 Testing Tools → Sandbox Accounts 准备买家和卖家测试账户。
- 用未登录管理员的无痕窗口,把低价测试商品加入购物车,选择 PayPal,用 Sandbox Personal 账户付款。
- 回到 WooCommerce,确认订单号、金额、币种、付款人信息和 PayPal Transaction ID 都已写入。
- 登录 Sandbox Business 账户,确认交易出现在 Activity 中。
- 在 WooCommerce 里做一次退款,确认退款状态能同步回 PayPal。
如果一直报认证失败,可以在服务器终端测试凭据本身能否换取令牌(Secret 用 read -s 输入,不留在命令历史里):
export PAYPAL_CLIENT_ID='你的Sandbox Client ID'
read -s PAYPAL_SECRET
curl -sS https://api-m.sandbox.paypal.com/v1/oauth2/token \
-u "$PAYPAL_CLIENT_ID:$PAYPAL_SECRET" \
-H 'Accept: application/json' \
-d 'grant_type=client_credentials'
unset PAYPAL_SECRET PAYPAL_CLIENT_ID
返回内容里有 access_token,说明这组 Sandbox 凭据可用;返回 invalid_client,优先检查环境是否选错、复制时是否带了空格、ID 和 Secret 是否来自同一个应用。
切换正式收款前的检查
- Developer Dashboard 切到 Live,确认应用属于正确的真实 Business 账户。
- WooCommerce PayPal Payments 关闭 Sandbox,换成同一个 Live 应用的 Client ID 和 Secret,重新连接并保存。
- 清除对象缓存和 CDN 缓存,但不要缓存结账页。
- 用真实小额订单测试,测试后按正常流程退款。
- 确认后台订单、PayPal Activity、邮件通知、库存扣减和退款状态一致,WooCommerce 日志里没有持续的 webhook、401、403 或 5xx 错误。
常见报错与处理方向
| 现象 | 优先检查 | 处理 |
|---|---|---|
| invalid_client | Sandbox/Live 是否混用,ID 和 Secret 是否同一个应用 | 回到 Apps & Credentials 按环境重新复制 |
| 连接后仍显示未授权 | 是否为 Business 账户、账户信息是否完整 | 确认不是 Personal 账户,补全 PayPal 要求的资料 |
| 欢迎页找不到手动连接 | 是否停在 Complete Payment Setup | Back to Welcome → See advanced options |
| 结账页没有 PayPal | 币种、国家、产品类型、插件开关 | 检查支付方式可用条件和 WooCommerce 日志 |
| 付款成功但订单不更新 | webhook、REST API、WAF、防火墙 | 放行 PayPal 回调,排除缓存和安全规则误拦 |
| 服务器连接超时 | DNS、TLS、出站 443 端口 | 在服务器上直接测试 PayPal API,联系主机商放行 |
如果 PayPal 后台显示账户受限、需要补充 KYC,或交易因合规、风险规则被拒绝,重新生成 Client ID 解决不了问题。这时保存 PayPal 返回的 Debug ID、订单号、时间和金额,联系 PayPal 支持,也不要把 Secret 发给客服或第三方。
按照以上步骤,你就可以顺利获取到 PayPal 的 Client ID 和 Secret Key 了。祝你集成顺利!



