2017-04-12 4 views
0

Im WooCommerce-Admin gibt es die Option zum Abbrechen des Abonnements. Ich bin in der Lage, in diesem einhaken, um zu fangen, wenn ein Abonnement abgebrochen wurde. Allerdings würde ich bevorzugen, wenn ich das Gateway überprüfe und das Abonnement auf dem Gateway annulliere, bevor es in WooCommerce annulliert wird.WooCommerce Subscriptions Extension - Abbrechen am Gateway vor dem Abbrechen in WooCommerce

Es braucht

  1. User/Admin wählt "Abbrechen Abonnement"
  2. API-Anfrage an das Gateway zu einem Erfolg zu geben geht zu sein/Fail-Reaktion.
  3. Bei Erfolg bricht WooCommerce das Abonnement ab.

In der aktuellen Einstellung, in der es in hakt nach das Abonnement gekündigt wird, besteht die Möglichkeit, dass der API-Aufruf fehlschlägt. Das Abonnement wird für den Benutzer abgebrochen, während es am Gateway die Zahlung weiter verarbeitet.

Ich fand die Post-Status-Hook-Änderung wird ausgelöst, bevor die Subskription geändert hat, aber ich bin nicht in der Lage, die weitere Verarbeitung bei Ausfall ohne eine Die() zu stoppen.

Kennt jemand den besten Weg, um mit dieser Situation umzugehen?

Antwort

1

Anstatt zu versuchen, die Reihenfolge der Vorgänge neu zu ordnen, sollten Sie eine Funktion schreiben, die NACH dem Gateway-Aufruf kommt. Sollte sie fehlschlagen, sollte sie das Abonnement reaktivieren und den Benutzer dazu anhalten, es erneut zu versuchen. Und natürlich sollte es protokolliert werden und sendet Ihnen auch eine Benachrichtigung.

Der Grund, warum ich diese Methode vorschlage ist, dass es viel weniger wahrscheinlich ist, dass sie bei einem WooCommerce-Update kaputt gehen.

+0

Guter Vorschlag. Gibt es ein Problem, das ein Abonnement reaktiviert? Wie in, löst es nach der Reaktivierung noch andere Ereignisse aus? Wäre es ein einfacher 'WC_Subscriptions_Manager :: activate_subscriptions_for_order()' oder ein '$ order-> update_status ('abgeschlossen');'? –

+0

Nein, ich denke nicht, aber natürlich ist Testen immer erforderlich. Die Aktivierungsfunktion sollte alle Abhängigkeiten berücksichtigen. Versucht, auch diese Reaktivierung zu versuchen. Bitte upvote mich, wenn Sie meine Antwort mögen. Ich versuche, meinen Ruf zu verbessern. :) – Difster

Verwandte Themen