You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JS中配置PayPal信用卡/借记卡订阅及相关问题解决

PayPal 信用卡/借记卡订阅配置指南

一、适配信用卡/借记卡的订阅请求JSON

修改原有请求的支付方式配置,移除PayPal账户强制限制,支持信用卡/借记卡直接支付,调整后的完整代码如下:

var data = {
  "plan_id": "P-XXXXXXXXXXXXXXXXX", // 替换为你的实际订阅计划ID
  "start_time": "2023-08-06T00:00:00Z",
  "shipping_amount": {
    "currency_code": "USD",
    "value": "5.00"
  },
  "subscriber": {
    "name": {
      "given_name": "FooBuyer",
      "surname": "Jones"
    },
    "email_address": "foobuyer@example.com",
    "shipping_address": {
      "name": {
        "full_name": "John Doe"
      },
      "address": {
        "address_line_1": "2211 N First Street",
        "address_line_2": "Building 17",
        "admin_area_2": "San Jose",
        "admin_area_1": "CA",
        "postal_code": "95131",
        "country_code": "US"
      }
    }
  },
  "application_context": {
    "brand_name": "Example Inc",
    "locale": "en-US",
    "shipping_preference": "SET_PROVIDED_ADDRESS",
    "user_action": "SUBSCRIBE_NOW",
    "payment_method": {
      "payee_preferred": "IMMEDIATE_PAYMENT_REQUIRED",
      "allowed_payment_methods": ["CREDIT_CARD", "DEBIT_CARD"]
    },
    "return_url": "https://example.com/return",
    "cancel_url": "https://example.com/cancel"
  }
};

二、关键配置说明

  • 支付方式调整:移除原payer_selected: "PAYPAL"限制,添加allowed_payment_methods指定支持信用卡/借记卡,用户无需登录PayPal账户即可完成支付,避免approval_pending状态(信用卡支付通常即时确认)。
  • 计划ID必填:必须将plan_id替换为你在PayPal后台创建的有效订阅计划ID,否则请求会直接失败。

三、订阅取消按钮实现

取消订阅需通过PayPal后端API完成(前端不可暴露密钥),步骤如下:

1. 前端按钮代码

<button id="cancel-sub-btn">取消订阅</button>

<script>
document.getElementById('cancel-sub-btn').addEventListener('click', async () => {
  const subscriptionId = 'I-XXXXXXXXXXXXXXXXX'; // 替换为用户的实际订阅ID
  try {
    const res = await fetch('/api/cancel-subscription', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ subscriptionId })
    });
    const result = await res.json();
    result.success ? alert('订阅已取消') : alert('取消失败,请重试');
  } catch (err) {
    console.error('取消出错:', err);
    alert('取消出错,请稍后重试');
  }
});
</script>

2. 后端处理示例(Node.js)

const axios = require('axios');

// 替换为你的PayPal客户端ID和密钥
const PAYPAL_CLIENT_ID = 'YOUR_CLIENT_ID';
const PAYPAL_CLIENT_SECRET = 'YOUR_CLIENT_SECRET';

app.post('/api/cancel-subscription', async (req, res) => {
  const { subscriptionId } = req.body;
  try {
    // 获取PayPal访问令牌
    const tokenRes = await axios.post(
      'https://api-m.paypal.com/v1/oauth2/token',
      'grant_type=client_credentials',
      { auth: { username: PAYPAL_CLIENT_ID, password: PAYPAL_CLIENT_SECRET } }
    );
    const accessToken = tokenRes.data.access_token;

    // 调用取消订阅API
    await axios.post(
      `https://api-m.paypal.com/v1/billing/subscriptions/${subscriptionId}/cancel`,
      { reason: 'User requested cancellation' },
      { headers: { 'Authorization': `Bearer ${accessToken}` } }
    );

    res.json({ success: true });
  } catch (err) {
    console.error('PayPal取消请求失败:', err);
    res.json({ success: false, error: err.message });
  }
});

四、approval_pending状态解决说明

使用PayPal账户支付时出现该状态,通常因以下原因:

  • 订阅计划设置了手动审批:可在PayPal后台的订阅计划设置中改为自动审批。
  • 用户PayPal账户需额外验证:导致支付无法即时完成。
    改用信用卡/借记卡支付时,只要卡片信息有效、余额充足,支付会即时确认,不会触发approval_pending。

内容的提问来源于stack exchange,提问作者Yeezus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 04:11:12