如何将自定义数据发送到 Paypal 并接收回来

Posted

技术标签:

【中文标题】如何将自定义数据发送到 Paypal 并接收回来【英文标题】:How to send custom data to Paypal and receive it back 【发布时间】:2020-01-20 18:49:26 【问题描述】:

我知道存在类似的问题,但是由于没有明确的答案(至少我没有找到任何答案),而且 Paypal 的文档有点乱,所以我在这里问。

我需要POST 自定义数据(由用户通过网络表单输入)以及默认使用 Paypal 按钮发送的所有变量。

我需要这些自定义数据,因为我正在根据这些值使用 FPDI/TFPDF 生成 PDF。我也在发送使用这些变量的电子邮件。

我让它与 Stripe 一起工作。这是发出POST 请求的charge.js 的一部分。 formData 包含 Stripe 令牌 + 自定义数据。

// grab the form action url
const backendUrl = form.getAttribute('action');
// Make ajax call
fetch(backendUrl, 
method: "POST",
mode: "same-origin",
credentials: "same-origin",
body: formData
)
.then(function(response) 
return response.json();
)
.then(function(jsonData) 
let data = jsonData;
if(data.success == true)
// make those pdf's available to user immediately

else
// error handling

);

下一站是charge.php,我在那里收费。如果收费成功,则会生成 PDF 并发送电子邮件。

这里有一点摘录:

try

$charge = \Stripe\Charge::create(array(
'source'  => $token,
'amount'  => $amount,
'currency' => $currency,
'description' => $item_name,
'metadata' => array(
  'customer_name' => $recipient_name,
  'customer_email' => $recipient_email,
  'order_id' => $order_id,
  'order_type' => $order
 )
));

catch(\Stripe\Error\Card $e) 
$success = false;
$err = "Declined - $e";


if($charge->status == 'succeeded') 
// Generate PDF's and send emails
 

// send back stuff that might be useful for thank you page, etc.
 echo json_encode(array('success' => $success, 'err' => $err, 
'recipient_name' => $recipient_name, 'recipient_email' => 
 $recipient_email, etc.));

使用 Paypal 做同样事情的正确方法是什么?我应该在流程的哪个部分生成 PDF 并发送电子邮件?

根据我的理解,IPN 侦听器脚本应该是那个地方?但是 Paypal 说要使用 webhooksREST API

附:我是一个喜欢编码的设计师,但这不是我的强项。

【问题讨论】:

【参考方案1】:

如果您使用的是 REST API,您确实会使用 Webhooks 而不是 IPN。这会将交易数据的 POST 发送到您在注册 webhook 时提供的侦听器脚本。

在该脚本中,您可以接收所有这些数据并根据需要进行处理。在这里,您可以生成自定义品牌电子邮件通知、点击第 3 方 API、更新您自己的数据库,或者您可能希望使用交易数据自动执行任何其他操作。

不过,PayPal 没有“元数据”对象。相反,您可以使用订单 ID 或某种记录 ID 将所需的所有数据保存在本地数据库中。然后在 PayPal 请求中传递该订单 ID,该值将在 Webhook 中返回。

因此,在您的脚本中,您可以使用订单 ID 将所有数据从您的数据库中提取出来,然后在您需要的地方提取所有可用的数据。

希望有帮助!

【讨论】:

嘿,德鲁……肯定有帮助!回顾一下,没有办法通过<input type='hidden' id='custom'> 提供自定义数据并将其接收回侦听器脚本? 这将用于 PayPal 标准集成。

以上是关于如何将自定义数据发送到 Paypal 并接收回来的主要内容,如果未能解决你的问题,请参考以下文章

Paypal 将自定义变量传递给订阅按钮

如何将自定义事件/信号从一个进程发送到 MacOS 中的另一个进程

PayPal Express Checkout.js - 发送自定义参数

Paypal 结帐按钮未将自定义字段传递给 PIN 消息

使用 paypal 节点 sdk 将自定义字段添加到计费协议

如何在 PayPal 智能按钮交易中发送自定义数据字段