PayPal - “订阅配置文件不受支持”

6
我正在使用网站支付标准来创建订阅的循环付款。 我需要找出下一个账单日是什么时候,看起来我可以使用GetRecurringPaymentsProfileDetails nvp api和循环付款配置文件id。 但当我发送循环付款配置文件id时,我会收到失败的反馈。
{'ack':'Failure',.... l_longmessage0: 'Subscription profiles not supported by Recurring Payment APIs.',
'l_shortmessage0': 'Subscription Profiles not supported.',....

这是否意味着无法通过GetRecurringPaymentsProfilesDetails NVP API检索订阅按钮的循环付款配置文件?

如果是这样,是否有其他API可以获取订阅配置文件的详细信息?

3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
7

GetRecurringPaymentsProfileDetails不支持通过Payments Standard创建的订阅配置文件,它只支持通过NVP API创建的循环付款配置文件。

截至本篇文章撰写时,没有API可以获取订阅详情。如果您想了解当前状态,必须使用IPN监听器来捕获并跟踪所有状态更改。


2
严肃地说,即使是我也想使用API取消订阅..有什么办法吗? - Vamshi
@六年没有IPN,是否有任何解决方案? - Ashish Chaturvedi
我刚确认这仍然是不支持的,PayPal希望我们通过IPN通知来跟踪订阅的状态。例如,您需要在数据库中保存一个订阅实体,并在每次接收到更改其状态的IPN时进行更新。 - JoseMarmolejos
我们已经到了第七年了。 :( - tofutim
@JudeCalimbas 你如何使用API取消操作? - tofutim
显示剩余4条评论

2
您可以使用/v1/payments/billing-agreements/{billingid}/transactions?start_date=YYY-MM-DD$end_date=YYY-MM-DD来劫持API...然后您只需要检查最后一笔交易是否符合您的期限即可。

1
他有所发现...如果您请求交易清单,您可以获得一些信息,但是如果您请求计划详情,您将无法获得任何信息。 - KnF
@KnF 是的,完全正确。 - Cyril ALFARO

0

我是通过这种方式获得它的:

let options = {
 method: 'post', headers: {'content-type':'application/json','Access-Control-Allow-Credentials':true},
 auth:{'username':process.env.PAYPALID,'password':process.env.PAYPALPASSWORD},
 url: 'https://api.paypal.com/v1/oauth2/token',
 data: 'grant_type=client_credentials',
}
axios(options).then((response)=>{let paypaltoken=response.data.access_token
axios.get('https://api.paypal.com/v1/payments/billing-agreements/'+agreementid+'/transactions?start_date=2018-01-01&end_date=2019-07-07', { headers: { 'Authorization':'Bearer '+paypaltoken, 'Content-Type':'application/json', } })
.then((transaction)=>{console.log(transaction.data)})
.catch(err => {console.error(err);console.log('err: '+JSON.stringify(err)); res.send (err) })
})
.catch(err => {console.error(err);console.log('err: '+JSON.stringify(err)); res.send (err) })

然后,如果您只获取 transaction.data,您将获得一系列交易对象,其中 status == Completed 仅当交易成功时,也就是说,它没有被取消,因此仅检查最后一个以进行计划控制。

status == Canceled 时,您知道协议不再有效。

如果您每月收到付款,则另一种方法是将第一个日期设置为“现在()”2个月后,将第二个日期设置为“现在()”。如果您没有任何交易记录,则状态可能不活跃,但请再次确认:有可能存在信用卡问题。这种情况下,我想status 可能等于delayed 或其他一些值,但我没有测试的可能性,所以我不知道。这个想法来自于这个 question 和相关的第二个答案,值得我的感激,以及 Cyril ALFARO。

请注意,根据您的情况,您可能需要在标头中添加'Access-Control-Allow-Credentials':true而不是请求中的其他withCredentials: true或类似内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,