2010-01-19 18 views
7

Napisałem prosty system subskrypcji PayPal, w którym użytkownik może wprowadzić swoje dane, kliknąć przycisk i rozpocząć subskrypcję. Zastanawiam się, jak mogę się dowiedzieć, kiedy użytkownik anuluje subskrypcję? Widziałem $ txn_type subscr_cancel, ale nie mam pojęcia jak tego użyć, ponieważ paypal nie wywołuje ponownie mojego handler'a.Wykrywanie anulowania subskrypcji Paypal

Dzięki!

Odpowiedz

22

Czy używasz IPN, jeśli tak, gdy subskrypcja jest anulowana, paypal zwraca $_POST['txn_type'] = subscr_cancel wraz z subscr_date = datą subskrypcji, subscr_id = ID subskrypcji, itp. Teraz możesz przetworzyć żądanie anulowania dla zwróconego identyfikatora subskrypcji. podobnie otrzymasz $_POST['txn_type'] = subscr_eot po wygaśnięciu subskrypcji. Po ustawieniu adresu URL IPN w ustawieniach PayPal zawsze będzie on dzwonił do twojego programu obsługi ipn. przypadek użycia przełącznik do obsługi różnych wniosków jak tak,

switch ($_POST['txn_type']) { 
    case 'cart': 
      //for products without subscription 
    break; 
    case 'subscr_payment': 
     //subscription payment recieved 
     break; 

    case 'subscr_signup': 
     //subscription bought payment pending 
     break; 

    case 'subscr_eot': 
     //subscription end of term 
     break; 

    case 'subscr_cancel': 
     //subscription canceled 
     break; 
} 
+1

Właśnie tego potrzebowałem tej nocy! Nie wiem, dlaczego nie wyjaśniają tego w dokumentach. – Volomike

+0

Dzięki za to! Naprawdę proste. – Jimbo

+0

Właśnie natknąłem się na to. To jest SUPER pomocny (przez jakiś czas walczyłem z tym). Dzięki! – MillerMedia

6

IPN z rodzaju „subscr_cancel” jest wysyłany, gdy użytkownik faktycznie anuluje subskrypcję. Nie należy jej używać do anulowania subskrypcji, ponieważ może się to zdarzyć w dowolnym momencie okresu subskrypcji.

Do anulowania subskrypcji należy użyć adresu IP z typem "subscr_eot". Jest on wysyłany, gdy upłynął okres subskrypcji użytkownika.

+0

Dzięki ... to nie jest jasne w dokumentacji. – Romias