Paypal 支付按钮和 IPN:如何唯一地链接用户?

Posted

技术标签:

【中文标题】Paypal 支付按钮和 IPN:如何唯一地链接用户?【英文标题】:Paypal payment buttons and IPN: how to link users up uniquely? 【发布时间】:2011-05-16 03:47:18 【问题描述】:

奇怪的是,Paypal 网站上的文档并没有很好地涵盖这一点。

我们有一个付款按钮,可重定向到 Paypal 以处理付款。

我们还有一个 IPN 服务器正在运行,它会在支付完成后捕获 paypal 付款。

但是,我们可以在哪里将我们系统用户的“用户 ID”放在 paypal 按钮中,以便将其转发到 IPN 请求,以便在我们的系统上匹配他们已付款的用户。 Paypal 似乎希望人们手动执行此操作,这是一项真正的使命。

【问题讨论】:

【参考方案1】:

我目前正在做一些 PayPal 集成,我同意他们的文档是一团糟!

我终于在某处找到了一份指南,其中详细说明了 PayPal 按钮表单的哪些变量被转发到 IPN 回调。您可以使用变量item_name 来转发用户ID:

<input type="hidden" name="item_name" value="user id">

【讨论】:

【参考方案2】:

你应该使用:

<input type="hidden" name="item_number" value="user id">

这里是文档:

https://www.paypalobjects.com/IntegrationCenter/ic_std-variable-ref-buy-now.html

【讨论】:

【参考方案3】:

如文档中所述 (https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNandPDTVariables/)

在你的表格中:

<input type="hidden" name="custom" value="<?php echo $id ?>">

并通过 ipn 获取它:

$_POST['custom']

【讨论】:

【参考方案4】:

对于任何试图让它为 Paypal SmartButtons 工作的人,您应该执行以下操作:

return actions.order.create(
  purchase_units: [
       invoice_id: 'your_custom_stuff1',
       custom_id: 'your_custom_stuff2',
       amount: 
         value: '100'
       
  ]
);

IPN 会将其作为 POST 数据发送,例如在 PHP 中:

$_POST['invoice']; // 'your_custom_stuff1'
$_POST['custom']; // 'your_custom_stuff2'

【讨论】:

以上是关于Paypal 支付按钮和 IPN:如何唯一地链接用户?的主要内容,如果未能解决你的问题,请参考以下文章

Paypal 自适应支付 IPN 回调:如何返回完整未更改的 ipn 消息

Paypal 动态按钮和 IPN 链接

PayPal 按钮通过 IPN 发送自定义变量

PayPal IPN 模拟器工作正常,但 IPN 不响应沙盒支付

Sage Pay 有类似 PayPal 的 IPN 吗?

为使用 PayPal、IPN 付款的用户启用游戏访问权限