6

Webサイトの支払い標準を使用して、サブスクリプションの定期的な支払いを作成しています。

次の請求日がいつになるかを確認する必要があるので、定期支払いプロファイルIDでGetRecurringPaymentsProfileDetailsnvpapiを使用できるようです。

しかし、定期支払いプロファイルIDを送信すると、失敗が返されます。

{'ack':'Failure',.... l_longmessage0: 'Subscription profiles not supported by Recurring Payment APIs.',
'l_shortmessage0': 'Subscription Profiles not supported.',....

これは、サブスクリプションボタンの定期支払いプロファイルをGetRecurringPaymentsProfilesDetails NVP APIを介して取得できないことを意味しますか?

その場合、サブスクリプションプロファイルのこの詳細を取得するための他のAPIはありますか?

4

3 に答える 3

7

GetRecurringPaymentsProfileDetailsは、支払い標準を介して作成されたサブスクリプションプロファイルをサポートせず、nvpapiを介して作成された定期的な支払いプロファイルのみをサポートします。

この記事の執筆時点では、サブスクリプションの詳細を取得するためのAPIはありません。現在のステータスを知りたい場合は、IPNリスナーを使用して、すべてのステータス変更を自分でキャプチャして追跡する必要があります。

于 2009-12-29T11:43:20.333 に答える
2

を使用してAPIをハイジャックできます/v1/payments/billing-agreements/{billingid}/transactions?start_date=YYY-MM-DD$end_date=YYY-MM-DD...その後、最後のトランザクションが期間に適合するかどうかを確認する必要があります。

于 2016-11-08T17:20:14.210 に答える
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になるため、計画を制御するために最後のオブジェクトを確認してください。statusis ==の場合Canceled、契約はもうアクティブではないことがわかります。

毎月の支払いを受け取る場合のもう1つの方法は、最初の日付を「now()」から2か月に設定し、2番目の日付を「now()」に設定することです。トランザクションが発生しない場合、ステータスはアクティブではない可能性がありますが、再確認してください。クレジットカードに問題がある可能性がランダムにあります。その場合status、== todelayedか何か他のものである可能性があると思いますが、それをテストする可能性がなかったので、わかりません。このアイデアは、この質問と、CyrilALFAROと同様に私の感謝に値する相対的な2番目の回答から生まれました。

場合によっては、リクエスト'Access-Control-Allow-Credentials':trueに他のまたは同様のものではなく、ヘッダーを追加する必要がある場合があることに注意してください。withCredentials: true

于 2019-07-07T18:53:21.450 に答える