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

时间:2019-09-19 17:16:37

标签: php post paypal paypal-ipn paypal-rest-sdk

我知道也存在类似的问题,但是由于没有明确的答案(至少我没有找到答案),而且Paypal的文档有些混乱,因此我在这里提出要求。

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

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

我让它与Stripe一起使用。这是发出charge.js请求的POST的一部分。 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一起使用。

P.S。我是一个喜欢编码的设计师,但这不是我的专长。

1 个答案:

答案 0 :(得分:1)

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

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

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

因此,您可以从脚本中使用订单ID将所有数据从数据库中拉回,然后从需要的位置提取所有可用数据。

希望有帮助!