如何将自定义数据发送到 Paypal 并接收回来
How to send custom data to Paypal and receive it back
我知道有类似的问题存在,但是由于没有明确的答案(至少我没有找到)而且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 说要使用 webhooks
和 REST API
。
P.S。我是一个喜欢编码的设计师,但这不是我的强项。
如果您使用的是 REST API,您确实会使用 Webhooks 而不是 IPN。这会将交易数据的 POST 发送到您在注册 webhook 时提供的侦听器脚本。
在该脚本中,您可以接收所有这些数据并根据需要进行处理。在这里您可以生成自定义品牌电子邮件通知、点击第 3 方 APIs、更新您自己的数据库,或者您可能希望使用交易数据自动执行的任何其他操作。
PayPal 没有 "metadata" 对象。相反,您可以使用某种订单 ID 或记录 ID 将您需要的所有数据保存在本地数据库中。然后在 PayPal 请求中传递该订单 ID,该值将在 Webhook 中返回。
因此,在您的脚本中,您可以使用订单 ID 从您的数据库中提取所有数据,并在您需要的地方使用当时可用的所有数据。
希望对您有所帮助!
我知道有类似的问题存在,但是由于没有明确的答案(至少我没有找到)而且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 说要使用 webhooks
和 REST API
。
P.S。我是一个喜欢编码的设计师,但这不是我的强项。
如果您使用的是 REST API,您确实会使用 Webhooks 而不是 IPN。这会将交易数据的 POST 发送到您在注册 webhook 时提供的侦听器脚本。
在该脚本中,您可以接收所有这些数据并根据需要进行处理。在这里您可以生成自定义品牌电子邮件通知、点击第 3 方 APIs、更新您自己的数据库,或者您可能希望使用交易数据自动执行的任何其他操作。
PayPal 没有 "metadata" 对象。相反,您可以使用某种订单 ID 或记录 ID 将您需要的所有数据保存在本地数据库中。然后在 PayPal 请求中传递该订单 ID,该值将在 Webhook 中返回。
因此,在您的脚本中,您可以使用订单 ID 从您的数据库中提取所有数据,并在您需要的地方使用当时可用的所有数据。
希望对您有所帮助!