php - 贝宝按钮订阅和添加到数据库
问题描述
我在我的网站上设置了一个 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');
订阅捕获.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();
}
然而,这并不安全,因为任何查看代码的人都可以手动发送POST
请求subscription_capture.php
以可能绕过订阅。有没有更好的方法来处理成功的订阅并将订阅 ID 添加到我的数据库中?
我读到 Paypal 的 Button 是一种比设置 PayPalIPN 更简单的方式来处理付款。
解决方案
要接收订阅被激活的安全通知,请注册webhook 事件,例如BILLING.SUBSCRIPTION.ACTIVATED
(已激活配置文件)或PAYMENT.SALE.COMPLETED
(已付款)
Webhook 是非常古老的 IPN 服务的继承者。
推荐阅读
- ethereum - (中间值).toBigNumber 不是函数
- javascript - HTML5 Canvas 弹跳球从房间里的免费线上
- wordpress - 激活 WPML 插件后 Elementor 页眉和页脚消失
- c - 从一行中读取多个字符串。检测无效输入
- ios - 使用真实设备数量和 iOS 版本测试 iOS SDK 公共功能的最佳方法应该是什么?
- python - 字符串变量似乎在嵌套的 for 循环中重置
- html - 如何在引导导航栏中对齐元素
- go - 如何导入vscode路径
- react-native - 监听 Expo 推送通知
- python - Python调用函数两次,使用不同的args/kwargs,并让它完成不同的行为