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

通过API使用PayPal捐赠时能否设置收货地址?

关于PayPal捐赠API设置收货地址的解决方案

首先明确说:捐赠场景下完全可以让PayPal收集或预先设置收货地址,你遇到的问题核心是代码里的一个参数限制了地址收集。

咱们先看你现有代码里的关键行:

$param .= '&no_note=1&no_shipping=1&rm=1';

这里的no_shipping=1是告诉PayPal:不要向用户收集收货地址信息,这就是你拿不到地址的直接原因。

调整方案:

  1. 开启地址收集
    把no_shipping=1改成no_shipping=0(允许用户选择是否填写地址),或者直接删除这个参数,PayPal会在捐赠流程中默认展示地址填写环节。如果需要强制用户必须填写地址才能完成捐赠,就改成no_shipping=2。

  2. 预先填充用户地址(可选)
    如果你已经在自己的系统里获取了用户的地址,可以把这些信息预先传递给PayPal,避免用户重复填写,可用的参数包括:

    • first_name:用户名
    • last_name:用户姓氏
    • address_street:街道地址(支持两行,用%0A换行)
    • address_city:城市
    • address_state:州/省(德国可以填州代码,比如BE代表柏林)
    • address_zip:邮编
    • address_country:国家代码(比如DE)

修改后的代码示例:

$param = '';
$param .= '&business=XXXX';
$param .= '&lc=DE';
$param .= '&item_name=My Company';
$param .= '&item_number=' . $spendenConfig['itemnumber'];
$param .= '&amount=' . $spendenConfig['amount'];
$param .= '&currency_code=EUR';
// 修改no_shipping参数为0,开启地址收集
$param .= '&no_note=1&no_shipping=0&rm=1';
// 可选:预先填充地址信息
$param .= '&first_name=Max&last_name=Mustermann';
$param .= '&address_street=Musterstrasse 123%0AAppartment 45';
$param .= '&address_city=Berlin';
$param .= '&address_zip=12345';
$param .= '&address_country=DE';
$param .= '&return=' . $paypalReturnUrl;
$param .= '&cancel_return=' . $this->PAYPAL_CANCEL_URL;
$param .= '&bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted&status=success';
header('Location: https://www.paypal.com/cgi-bin/webscr?cmd=_donations' . $param);

获取地址信息用于开收据:

当用户完成捐赠后,PayPal会通过return URL的回调参数(或者IPN通知)把地址信息返回给你,你可以在回调页面中获取这些参数(比如$_GET['address_street']、$_GET['address_city']等),用来生成捐赠收据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:29:23