簡體   English   中英

貝寶(Paypal)訂閱IPN-用戶多次訂閱的問題

[英]Paypal subscriptions IPN - problem with users subscribing multiple times

我正在使用Paypal訂閱和即時付款通知(IPN)處理我網站上的訂閱者。

在大多數情況下,它運行良好,但偶爾會遇到一個問題。

通常,如果用戶取消其訂閱,則在禁用對我的網站的訪問之前,我會等待“期限終止”(subscr_eot)通知。

因此,如果他們預付了整個月的費用,然后立即取消,則該月剩下的時間仍然可以訪問(應該如此)。

但是某些用戶在以下位置遇到此問題:

  1. 取消訂閱
  2. 在達到“學期結束”之前,他們決定重新訂閱
  3. 當他們的第一個訂閱達到“期限”時,我的應用會收到通知,並向用戶發送一封電子郵件,提示您“您的帳戶已被禁用,如果您想再次注冊,則可以點擊此處進行訂閱”。
  4. 這讓他們感到困惑,因為他們在想...這很奇怪,我以為我像一個星期前一樣訂閱了(他們也這樣做了)。 因此,他們再次訂閱。 現在他們有兩個同時運行的對我網站的訂閱,一兩個月后我會收到支持電子郵件(“ wtf,您本月兩次向我收取了帳單!”)

所以我還沒有找到解決這個問題的好方法。 我想最好的解決方案是在收到“期末”通知時,再進行一次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在此方面有些弱。 遞歸是我研究過並計划實施的一個,還有其他一些。

引用: 回復:subscr_eot何時發布?

如果您在2009年11月之后開始接受訂閱,則訂閱者ID將以“ I- ”開頭-並且在其時間結束時不會返回“ subscr_eot”。 貝寶(Paypal)希望您能記住他們的訂購時間,並在該期限到期時將帳戶更新為降級(或其他任何方式),除非客戶在此期間再次付款。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM