如何获取PayPal的 Client ID 和 Secret Key?

获取 PayPal 的 Client ID 和 Secret Key(通常称为“客户端 ID”和“密钥”)是集成 PayPal 支付功能的第一步。这个过程完全在 PayPal 开发者后台完成。

以下是详细的步骤指南,包括不同类型的 App 的区别。

第 1 步:登录 PayPal 开发者平台

第 2 步:进入 Dashboard 和 API 凭证页面

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

第 3 步:选择环境并创建应用

PayPal 提供两种环境,它们的 Client ID 和 Secret 是独立的:

  • ​Sandbox(沙盒环境)​​:用于测试。不会产生真实交易,使用模拟的买家卖家账户。
  • ​Live(生产环境)​​:用于正式上线。处理真实资金交易。

​首先,你应该在 Sandbox 环境下进行测试。​​

  1. 确保页面顶部的环境切换器选中的是 ​Sandbox。
  2. 你会看到一个名为 ​My Apps & Credentials​ 的区域。这里通常已经有一个默认的应用,名称类似 “Express Checkout Sandbox App”。你可以直接使用它,也可以点击 ​Create App​ 按钮创建一个新的应用(例如,为你的特定网站或应用命名)。
  3. ​创建应用时​:
    • ​App Name​: 给你的应用起一个易于识别的名字(例如:”My Online Store”)。
    • ​Select Merchant​: 选择你的沙盒测试商家账户。通常默认即可,系统会自动关联一个。

第 4 步:获取 Client ID 和 Secret Key

创建应用或点击现有应用的名称后,你会进入应用的详情页面。在这里,你可以清晰地看到你的凭证:

  • ​Client ID​: 直接显示在页面上。
  • ​Secret​: 默认是隐藏的,点击 ​Show​ 按钮来查看它。

​请立即复制并妥善保存这两个值!​​ Secret Key 只显示一次,如果你关闭了页面,将无法再次查看,需要重新生成。

第 5 步:切换到 Live 环境(准备上线时)

当你的开发测试完成,准备接受真实付款时,你需要获取 ​Live​ 环境的凭证。

  1. 在 ​Apps & Credentials​ 页面,将顶部的环境切换器从 ​Sandbox​ 改为 ​Live。
  2. 同样,你可以使用默认的 Live 应用,或点击 ​Create App​ 创建一个新的。
  3. 获取 Live 环境的 ​Client ID​ 和 ​Secret。​这个 Secret 比 Sandbox 的更为重要,必须严格保密!​​

重要提示和最佳实践

  1. ​Sandbox vs. Live​: 这是最重要的概念。
    • ​开发阶段​: 在代码中配置 ​Sandbox​ 的 Client ID 和 Secret。
    • ​上线阶段​: 将代码中的配置替换为 ​Live​ 的 Client ID 和 Secret。
  2. ​Secret Key 的安全性​:
    • ​绝对不要​ 将 Live Secret Key 提交到 Git 等版本控制系统或写在客户端代码(如 JavaScript)中。
    • 应该将 Secret Key 存储在环境变量、服务器配置文件或安全的密钥管理服务中。
  3. ​如果 Secret Key 泄露​:
    • 立即返回 ​Apps & Credentials​ 页面。
    • 找到对应的应用,在 ​Secret​ 旁边有一个 ​Change​ 或 ​Generate​ 按钮。点击它生成一个新的 Secret Key,并立即更新你的服务器配置。
  4. ​不同的集成方式​:
    • ​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 登录密码。

开始前的准备

  1. WordPress、WooCommerce 和 WooCommerce PayPal Payments 插件都已更新,不要套用已弃用的 PayPal Standard。
  2. 结账页使用有效 HTTPS,服务器能访问 api-m.sandbox.paypal.com 和 api-m.paypal.com。
  3. 有 PayPal Business 账户;沙盒测试还需要一个 Sandbox Business 卖家账户和一个 Sandbox Personal 买家账户。
  4. 结账页不要被页面缓存,安全插件不要拦截 WooCommerce REST API、AJAX 和 webhook。
  5. 先备份网站。

在 WooCommerce 中手动连接

  1. 进入 WordPress 后台 → WooCommerce → 设置 → 付款,找到 PayPal,进入 WooCommerce PayPal Payments 设置页。
  2. 在欢迎页点击 See advanced options,选择手动连接。如果已经在 “Complete Payment Setup” 页面,先点 Back to Welcome 再展开高级选项。
  3. 测试阶段启用 Sandbox,把同一个 Sandbox 应用的 Client ID 和 Secret 分别粘贴到对应字段。
  4. 点击 Connect Account,成功后保存设置。

入口和字段以 WooCommerce 官方文档为准:Account Setup and Onboarding。

用 Sandbox 跑通一笔完整交易

  1. 在 PayPal Developer Dashboard 的 Testing Tools → Sandbox Accounts 准备买家和卖家测试账户。
  2. 用未登录管理员的无痕窗口,把低价测试商品加入购物车,选择 PayPal,用 Sandbox Personal 账户付款。
  3. 回到 WooCommerce,确认订单号、金额、币种、付款人信息和 PayPal Transaction ID 都已写入。
  4. 登录 Sandbox Business 账户,确认交易出现在 Activity 中。
  5. 在 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 是否来自同一个应用。

切换正式收款前的检查

  1. Developer Dashboard 切到 Live,确认应用属于正确的真实 Business 账户。
  2. WooCommerce PayPal Payments 关闭 Sandbox,换成同一个 Live 应用的 Client ID 和 Secret,重新连接并保存。
  3. 清除对象缓存和 CDN 缓存,但不要缓存结账页。
  4. 用真实小额订单测试,测试后按正常流程退款。
  5. 确认后台订单、PayPal Activity、邮件通知、库存扣减和退款状态一致,WooCommerce 日志里没有持续的 webhook、401、403 或 5xx 错误。

常见报错与处理方向

现象优先检查处理
invalid_clientSandbox/Live 是否混用,ID 和 Secret 是否同一个应用回到 Apps & Credentials 按环境重新复制
连接后仍显示未授权是否为 Business 账户、账户信息是否完整确认不是 Personal 账户,补全 PayPal 要求的资料
欢迎页找不到手动连接是否停在 Complete Payment SetupBack 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 了。祝你集成顺利!

分享您的喜爱

发表回复