我正在使用网站付款标准为订阅创建定期付款。
我需要找出下一个结算日期的时间,因此看起来我可以使用带有定期付款资料ID的GetRecurringPaymentsProfileDetails nvp api。
但是当我发送定期付款资料ID时,我得到了失败:
{'ack':'Failure',.... l_longmessage0: 'Subscription profiles not supported by Recurring Payment APIs.',
'l_shortmessage0': 'Subscription Profiles not supported.',....
这是否意味着无法通过GetRecurringPaymentsProfilesDetails NVP api检索订阅按钮定期付款配置文件?
如果是这种情况,是否还有其他api来获取订阅资料的详细信息?
答案 0 :(得分:7)
GetRecurringPaymentsProfileDetails不支持通过付款标准创建的订阅配置文件,它仅支持通过nvp api创建的定期付款配置文件。
在撰写本文时,没有api可以获得订阅详情。如果您想知道当前状态,则必须使用IPN侦听器自行捕获和跟踪所有状态更改。
答案 1 :(得分:1)
您可以使用/v1/payments/billing-agreements/{billingid}/transactions?start_date=YYY-MM-DD$end_date=YYY-MM-DD
来劫持API ...然后您必须检查上次交易是否适合您的期间。
答案 2 :(得分: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
时,您知道该协议不再有效。
如果您每月收到付款,则另一种方法是将第一个日期设置为“ now()”起的两个月,第二个日期设置为“ now()”。如果没有任何交易,则状态可能不会处于活动状态,但请仔细检查:存在随机问题,可能是信用卡问题。在那种情况下,我假设status
可以是==到delayed
或其他东西,但是我无法对其进行测试,所以我不知道。这个想法来自这个playground和相对第二个答案,值得我感谢,还有Cyril ALFARO。
请注意,根据您的情况,您可能需要在标头中添加'Access-Control-Allow-Credentials':true
,而不是在请求中添加其他withCredentials: true
或类似内容。