[英]Paypal subscriptions IPN - problem with users subscribing multiple times
我正在使用Paypal訂閱和即時付款通知(IPN)處理我網站上的訂閱者。
在大多數情況下,它運行良好,但偶爾會遇到一個問題。
通常,如果用戶取消其訂閱,則在禁用對我的網站的訪問之前,我會等待“期限終止”(subscr_eot)通知。
因此,如果他們預付了整個月的費用,然后立即取消,則該月剩下的時間仍然可以訪問(應該如此)。
但是某些用戶在以下位置遇到此問題:
所以我還沒有找到解決這個問題的好方法。 我想最好的解決方案是在收到“期末”通知時,再進行一次API調用,詢問Paypal“嘿,這個人已經重新訂閱了嗎?”。 如果是這樣,則無需啟動該電子郵件。 但是我還沒有任何方法可以進行此API調用。
另一個解決方案是在取消帳戶時立即禁用其帳戶(“ subscr_cancel”通知),但隨后我收到不同的憤怒支持電子郵件:“嘿,我預付了整個月的費用,為什么我的帳戶已經被禁用!”。
還有其他人解決嗎?
我知道這是一個老話題,但是我還沒有看到這個問題的實際答案,因此,如果有人像我一樣想知道這個問題,那么可以找到一個解決方案。
如果有人在期滿(subscr_eot)之前取消其帳戶(subscr_cancel),我會在數據庫中對其進行設置以進行處理。 例如,如果您的數據庫中有一個“用戶”表,則只需添加一個新的“ int”字段並將其命名為“ Term”即可。 默認情況下,此字段應設置為“ 0”。 然后,在您的IPN內部進行設置,以便如果用戶在期限結束之前取消其訂閱,則它將該用戶的“期限”字段設置為“ 1”。 如果該用戶返回並重新訂閱您的服務,請讓IPN將該用戶的“期限”字段更新為“ 0”。
然后,在您的郵件腳本內部,當它在學期末運行時,請檢查該用戶的“學期”字段。 如果將其設置為“ 0”,則不要發送電子郵件。 如果將其設置為“ 1”,則發送電子郵件,說“ Adios!”。
您可能想在“發票”參數中添加唯一標識符; 並在www.paypal.com上帳戶的“配置文件”>“我的銷售工具”部分中啟用“阻止重復付款”
據我所知,如果您使用的是網站付款標准/專業按鈕,則沒有Paypal api可以檢查訂閱。
我通過在數據庫中保留活動/取消/重新訂閱狀態並根據從貝寶獲得的IPN消息來更新狀態來處理此問題。 我通過按鈕中的custom
字段將IPN消息映射到我的用途,該字段將在每條IPN消息上發送回去。
還有很多第三方可以幫助您管理此過程,因為Paypal的api在此方面有些弱。 遞歸是我研究過並計划實施的一個,還有其他一些。
如果您在2009年11月之后開始接受訂閱,則訂閱者ID將以“ I-
”開頭-並且在其時間結束時不會返回“ subscr_eot”。 貝寶(Paypal)希望您能記住他們的訂購時間,並在該期限到期時將帳戶更新為降級(或其他任何方式),除非客戶在此期間再次付款。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.