NodeJS环境下如何调用PayPal接口实现支付前卖家入驻
NodeJS实现PayPal卖家入驻注册链接生成方案
实现前置条件
你需要提前获取到PayPal接口的有效访问令牌(Access-Token)和自定义的跟踪ID(Tracking-ID),以下提供两种常见实现方式:
方式1:使用axios实现(推荐,代码更简洁)
首先安装依赖:
npm install axios
对应的实现代码:
const axios = require('axios'); // 配置参数,替换为你自己的实际值 const PAYPAL_BASE_URL = 'https://api-m.sandbox.paypal.com'; const ACCESS_TOKEN = '<你的Access-Token>'; const TRACKING_ID = '<你的自定义Tracking-ID>'; async function generateSellerReferralLink() { try { const response = await axios.post( `${PAYPAL_BASE_URL}/v2/customer/partner-referrals`, { tracking_id: TRACKING_ID, operations: [ { operation: "API_INTEGRATION", api_integration_preference: { rest_api_integration: { integration_method: "PAYPAL", integration_type: "THIRD_PARTY", third_party_details: { features: ["PAYMENT", "REFUND"] } } } } ], products: ["EXPRESS_CHECKOUT"], legal_consents: [ { type: "SHARE_DATA_CONSENT", granted: true } ] }, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${ACCESS_TOKEN}` } } ); // 注册链接在返回体的links数组中,rel为"action_url"的项就是卖家入驻跳转链接 const referralLink = response.data.links.find(link => link.rel === 'action_url').href; console.log('卖家入驻注册链接:', referralLink); return referralLink; } catch (error) { console.error('生成入驻链接失败:', error.response ? error.response.data : error.message); throw error; } } // 调用方法 generateSellerReferralLink();
方式2:使用NodeJS原生https模块实现(无需第三方依赖)
const https = require('https'); // 配置参数,替换为你自己的实际值 const PAYPAL_HOST = 'api-m.sandbox.paypal.com'; const PATH = '/v2/customer/partner-referrals'; const ACCESS_TOKEN = '<你的Access-Token>'; const TRACKING_ID = '<你的自定义Tracking-ID>'; function generateSellerReferralLink() { return new Promise((resolve, reject) => { const postData = JSON.stringify({ tracking_id: TRACKING_ID, operations: [ { operation: "API_INTEGRATION", api_integration_preference: { rest_api_integration: { integration_method: "PAYPAL", integration_type: "THIRD_PARTY", third_party_details: { features: ["PAYMENT", "REFUND"] } } } } ], products: ["EXPRESS_CHECKOUT"], legal_consents: [ { type: "SHARE_DATA_CONSENT", granted: true } ] }); const options = { hostname: PAYPAL_HOST, port: 443, path: PATH, method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${ACCESS_TOKEN}`, 'Content-Length': Buffer.byteLength(postData) } }; const req = https.request(options, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { if (res.statusCode >= 200 && res.statusCode < 300) { const result = JSON.parse(data); const referralLink = result.links.find(link => link.rel === 'action_url').href; resolve(referralLink); } else { reject(new Error(`请求失败,状态码:${res.statusCode},响应:${data}`)); } }); }); req.on('error', (e) => { reject(new Error(`请求出错:${e.message}`)); }); req.write(postData); req.end(); }); } // 调用方法 generateSellerReferralLink() .then(link => console.log('卖家入驻注册链接:', link)) .catch(err => console.error('生成入驻链接失败:', err));
注意事项
- 示例使用的是沙箱环境地址,上线前需要将域名替换为正式环境的
api-m.paypal.com - Access-Token需要定期刷新,有效期通常为几小时,不要硬编码在代码中长期使用
- tracking_id可以用你平台内的卖家ID填充,后续可以通过该ID关联PayPal返回的卖家账户信息
内容的提问来源于stack exchange,提问作者ingaine24
相关产品推荐
相关产品推荐

