我的网络应用程序使用PayPal每月订阅.我在付款时收到IPN通知,用户注册/取消等等,这一切似乎都运行良好.
IPN消息中似乎缺少的一件事是关于下一个计费日期的任何形式的指示. https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNandPDTVariables/#id091EB0901HT
起初我认为,因为它是按月订阅,我可以简单地在上一个日期添加一个月,但PayPal似乎有一种时髦的方式来确定下一个付款日期 - 它不总是30或31天或一个月.
下一个开票日期可从PayPal内部获得,但似乎不会在任何IPN消息中发送.
有没有人知道从IPN消息中可用的信息中解决这个问题的简单方法?
我一直在与一个团队合作,为我们的应用程序提供 PayPal 集成,并且我们使用 REST API 来设置订阅的实施进展顺利。然而,我在尝试测试一些负面场景(例如用户的卡已过期)时遇到了问题。我注意到可以在沙箱环境中启用负面测试,但我相信这只适用于经典 API(我们正在使用 REST API)。
有什么方法可以设置一个带有过期卡的测试用户,或者一个银行(不是 PayPal)帐户中没有钱的测试用户等等。我想了解审批的行为和执行设置阶段更彻底的订阅以及我们的应用程序在每个阶段可以处理哪些错误。
谢谢
我第一次与贝宝合作。我有一个产品,我想将贝宝与它集成。
我想完成以下任务:
我已经浏览了 paypal 的文档,我有以下问题。
请为我的问题提出一个可行的解决方案。
提前致谢。
我需要将贝宝订阅集成到我的项目中。我使用新的 paypal 订阅 api https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions并需要知道如何识别付款人和我自己的数据库用户。
这是我脑海中的场景:
但貌似paypal不能提供。
这是我的智能结帐按钮代码
paypal.Buttons({
style: {
layout: 'horizontal',
size: 'small',
color: 'blue',
label: 'pay',
height: 55,
tagline: 'false'
},
createSubscription: function(data, actions) {
return actions.subscription.create({
'plan_id': 'P-5GS67390M7258253CLUHXAHQ',
'metadata' : {
'user_id' : 'myuserid'
}
});
},
onApprove: function(data, actions) {
console.log(data);
alert('You have successfully created subscription ' + data.subscriptionID);
}
}).render('#paypal-button-container');
</script>
Run Code Online (Sandbox Code Playgroud)
我发现只有一种方法可以做到这一点
paypal付款成功后
onApprove: function(data, …Run Code Online (Sandbox Code Playgroud)我正在尝试与 PayPal 集成,但无法加载 sdk/js。
我从字面上将其缩减为他们的示例代码,但它仍然会在加载 SDK js 时出现 HTTP 错误 400。按照此处给出的步骤... https://developer.paypal.com/docs/subscriptions/integrate/#4-create-a-subscription
<!DOCTYPE html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<script
src="https://www.paypal.com/sdk/js?client-id=AeRCvNJjX_wuV8I8KnIxllYZhizA7I3JZBzQJk4O2q8DoC1ORE9GZM1S1wJd2ch7XZWfsG3GHAYIUWhc&vault=true">
</script>
<div id="paypal-button-container"></div>
<script>
paypal.Buttons({
createSubscription: function(data, actions) {
return actions.subscription.create({
'plan_id': 'P-3S4679857D7841235LUOV5VY'
});
},
onApprove: function(data, actions) {
alert('You have successfully created subscription ' + data.subscriptionID);
}
}).render('#paypal-button-container');
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
SDK js 不加载。查看响应,我可以看到 sdk/js 请求中的 HTTP 错误 400 和 paypal-debug-id 值。
我已经检查并重新检查我是否传递了正确的客户端 ID。
FWIW:我注意到在他们的其他一些按钮示例中,您可以使用“sb”代替您的客户 ID。如果我只使用 client-id=sb,它会显示一个付款按钮,但如果我包含“&value=true”或使用我的实际 client-id,它会返回错误 404。
我的网站上有两个用于按月订阅的 Smart 按钮(运行良好)。我成功收到 IPN 响应,其中支付信息已准备好添加到数据库中。但是我需要通过 IPN 响应获取我的应用程序的 UserID。
如何使用智能支付按钮传递自定义变量,以便将其传递给 IPN(如果可能,用于购买交易和退款/取消交易?)
这是我的智能按钮代码:
<div id="paypal_button"></div>
<script src="https://www.paypal.com/sdk/js?client-id=[ID]...></script>
<script>
paypal.Buttons({
style:{
color:"blue",
shape:"rect",
label:"paypal",
tagline:false
},
createSubscription: function(data, actions) {
return actions.subscription.create({'plan_id': 'P-02S33....'});
},
onApprove: function(data, actions) {
alert('You have successfully created subscription ENTERPRISE' + data.subscriptionID);
}
}).render('#paypal_button');
</script>
Run Code Online (Sandbox Code Playgroud) 我正在使用 PayPal 智能付款按钮在我的网站上启用付款。我设法禁用了送货地址字段,但我无法禁用帐单地址。
据我所知,大多数接受在线支付的网站不需要账单地址或任何信息,除了信用卡详细信息和持卡人姓名。
为什么 PayPal 需要输入账单地址,有没有办法禁用它?
谢谢!
我正在尝试在我的网站上实施 PayPal-Smart-Buttons 以进行订阅。我从 PayPal 文档(https://developer.paypal.com/docs/subscriptions/integrate/#subscriptions-with-smart-payment-buttons)中复制了代码。所以我的代码看起来像这样:
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<script
src="https://www.paypal.com/sdk/js?client-id=AZz6Px2hMTBBNvg8GvMiT8FuTTvATwoAMCLVGLt-On-iewuacyQv-d6LSQunDqK1KES4KHTGDU3Sgpsb&vault=true">
</script>
<div id="paypal-button-container"></div>
<script>
paypal.Buttons({
createSubscription: function(data, actions) {
return actions.subscription.create({
'plan_id': 'P-64K047315T678654PL3W74YY'
});
},
onApprove: function(data, actions) {
alert('You have successfully created subscription ' + data.subscriptionID);
}
}).render('#paypal-button-container');
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
以前,我为每个产品创建了两个产品和一个计划。以下是配置的计划:
{
"plans":[
{
"id":"P-64K047315T678654PL3W74YY",
"name":"AC-Bot Silver Subscription",
"status":"ACTIVE",
"usage_type":"LICENSED",
"quantity_supported":false,
"create_time":"2020-06-20T12:17:39Z",
"links":[
{
"href":"https://api.sandbox.paypal.com/v1/billing/plans/P-64K047315T678654PL3W74YY",
"rel":"self",
"method":"GET",
"encType":"application/json"
}
]
},
{
"id":"P-9LX00946YY976221PL3W74ZI",
"name":"AC-Bot Gold Subscription",
"status":"ACTIVE",
"usage_type":"LICENSED",
"quantity_supported":false, …Run Code Online (Sandbox Code Playgroud) 当尝试将 PayPal 订阅按钮和用于一次性付款的捕获/订购按钮添加到同一页面时,您需要使用不同的参数导入 PayPal 的 Javascript 文件两次(intent=subscription&vault=true而不是仅导入intent=capture)
如果您尝试导入两个按钮将不会呈现。
如何在同一页面上同时显示 PayPal 订阅和 PayPal 一次性付款智能按钮?
重现问题的示例代码:
<script src="https://www.paypal.com/sdk/js?client-id={{YOUR CLIENT ID}}¤cy=USD"></script>
<script src="https://www.paypal.com/sdk/js?client-id={{YOUR CLIENT ID}}¤cy=USD&intent=subscription&vault=true"></script>
<div id="some-container"></div>
<div id="some-subscription-container"></div>
<script>
paypal.Buttons().render('#some-container');
paypal.Buttons().render('#some-subscription-container');
</script>
Run Code Online (Sandbox Code Playgroud) 我正在使用 PayPal webhooks 自动获取订阅信息。
不过,从付款到订阅激活之间我们需要等待大约 20 秒。
是因为沙盒环境的原因吗?生产环境速度更快吗?
这一点很重要,因为顾客必须等待,如果可以避免等待时间那就更好了。