我有一個基於訂閱的會員資格取消的PayPal定期付款,但是我遇到了以下問題:的剩餘天
- 用戶簽約在2012年5月1日,每月支付不定。
- IPN發送到服務器,激活訂閱
- 用戶取消了5月3日2012年
- IPN發送到服務器,訂閱被取消,取消的服務器成員。
但是,當用戶在2012年5月1日訂閱時,如果他要在一個月前取消,他還剩下一些日子。任何方式來解決這個問題? PayPal會針對此類問題發送任何IPN嗎?
我想到的一個解決方案是每天晚上做一個cronjob來檢查月份是否到了。
我有一個基於訂閱的會員資格取消的PayPal定期付款,但是我遇到了以下問題:的剩餘天
但是,當用戶在2012年5月1日訂閱時,如果他要在一個月前取消,他還剩下一些日子。任何方式來解決這個問題? PayPal會針對此類問題發送任何IPN嗎?
我想到的一個解決方案是每天晚上做一個cronjob來檢查月份是否到了。
當我們在我們自己的網站上實施的訂閱服務,我們基本上處理的事件是這樣的:
在用戶登錄後,我們檢查訂閱是否已過期(如果將其存儲在數據庫中,這很容易)。
基本上,訂閱事件與付款事件是分開的。訂閱可以取消,但這並不意味着退款將被退還;那將是一個單獨的事件。順便說一句,付款和訂閱事件可以按不同的順序(例如,付款可以先到達,然後是訂閱通知);迎合這一點很重要。
當用戶訂閱時,paypal將創建一個定期付款資料,這意味着用戶將不得不每月(每年,每天取決於資料)支付該筆款項,在他訂購的那一天(例如,6月1日, ,7月1日)。 當用戶取消時,他會取消付款資料,而不是付款本身。所以之後,貝寶將不會要求任何其他付款。如果您希望爲用戶提供日期,則必須存儲有關訂閱的信息。
你可以在他訂閱的那天和他取消的那天存儲一個數據庫。從那裏你可以知道用戶還有多少天。 Paypal會在創建定期付款資料,付款本身以及取消時發送IPN消息。
您可以找到IPN消息在這裏的信息: https://cms.paypal.com/cms_content/US/en_US/files/developer/IPNGuide.pdf
一個在IPN消息中的d/V對是next_payment_date隨後呈現這樣的日期:三點○○分00秒2013年7月6日PDT
我轉換的日期YYYY- MM-DD並將其存儲在數據庫中,除了IPN消息中包含的profile_status值。當一個人訂閱時,我在數據庫中也有一個簡單的TRUE/FALSE訂戶單元。
因此,如果用戶取消,他們PROFILE_STATUS在數據庫中「已取消」和用戶細胞更新爲FALSE被更新。
當用戶訪問優質內容時,將檢查數據庫中的單元格是否爲TRUE。如果是這樣,他們得到的內容。如果FALSE,那麼將檢查profile_status單元格,並且如果該單元格爲「Expired」或NULL,則它們不會獲得內容。如果單元格的內容爲「已取消」,則數據會被拉出,增加一天(用於處理時區問題),如果大於當前時間,則會加載高級內容。如果它小於當前日期,那麼它們的profile_status單元格將更新爲「過期」,並且它們不會獲得內容。
至少我可以有一個理由爲什麼倒投了? (只是爲了從我的錯誤中吸取教訓) – zolipapa