贝宝按钮订阅和添加到数据库
Posted
技术标签:
【中文标题】贝宝按钮订阅和添加到数据库【英文标题】:PayPal Buttons Subscribe and Add to Database 【发布时间】:2021-10-09 03:45:18 【问题描述】:我在我的网站上设置了一个 PayPal 订阅按钮。我想成功订阅,我将买家subscriptionID
添加到我的数据库中。
paypal.Buttons(
createSubscription: function(data, actions)
return actions.subscription.create(
'plan_id': 'P-PLANID'
);
,
onApprove: function(data, actions)
$.ajax(
url: 'subscription_capture.php',
type: 'post',
data: subid: data.subscriptionID,
async: false,
success: function(d)
location.reload();
,
);
).render('#paypal-button-container');
subscription_capture.php
if(isset($_POST) and isset($_POST['subid']))
include 'db.php';;
$query = $db->prepare("INSERT INTO `subscription` (`user_id`,`subscriptionID`) VALUES(?,?)");
$query->bind_param('ss', $user_id, $_POST['subid']);
$query->execute();
但这并不安全,因为任何查看代码的人都可以手动向subscription_capture.php
发送POST
请求,从而可能绕过订阅。有没有更好的方法来处理成功的订阅并将订阅 ID 添加到我的数据库中?
我了解到 Paypal 的 Button 是一种比设置 PayPalIPN 更简单的方式来处理付款。
【问题讨论】:
【参考方案1】:要接收订阅激活的安全通知,请注册webhook events,例如BILLING.SUBSCRIPTION.ACTIVATED
(已激活个人资料)或PAYMENT.SALE.COMPLETED
(已付款)
Webhook 是非常古老的 IPN 服务的继承者。
【讨论】:
我创建了一个应用程序,然后创建了一个指向我的网站的 Webhook,该网站读取$_POST
数据。现在我如何通过Buttons
获得订阅的 webhook 触发器?
使用与按钮相同的客户端 ID 订阅事件。 $_POST 数据用于表单数据,您想读取所有输入并将其解析为 JSON。以上是关于贝宝按钮订阅和添加到数据库的主要内容,如果未能解决你的问题,请参考以下文章