PayPal-Abrechnungsvereinbarungen REST API - So starten Sie sofort

8

Wie kann ich einen Benutzer sofort mit einem PayPal-Abrechnungsvertrag belasten?

Hier ist, was ich bis jetzt habe.

  1. Erstellen Sie einen Fakturierungsplan (POST ... / payments / fakturierungspläne /)
  2. Machen Sie es aktiv (PATCH ... / payments / billing-planns /)
  3. Erstellen Sie eine Abrechnungsvereinbarung (POST ... / payments / billing-agreements /)
  4. Senden Sie den Benutzer an approval_url, der Benutzer genehmigt, umgeleitet zu url
  5. Vertrag ausführen (POST ... / Zahlungen / Abrechnungsvereinbarungen // Vereinbarung ausführen)

Das scheint alles zu funktionieren, aber ich möchte den Benutzer jetzt und jeden Monat in der Zukunft aufladen. Wenn ich in Schritt 3 start_date auf jetzt setze, erhalte ich einen Fehler, der in der Zukunft liegen muss. Wenn ich es in der Zukunft stelle, wird der Benutzer nicht belastet.

Muss ich "Ausstehende Vertragsbeträge" dann "Bill ausstehende Vertragsbeträge" für die erste Zahlung festlegen?

Was ist mit den monatlichen Zahlungen? Benötigen sie eine Aktion oder treten sie einfach so auf, wie im Abrechnungsplan angegeben?

Aktualisieren

Ich teste das in 2014-09-16T20:06:30+0000

Wenn ich start_date als aktuelle UTC-Zeit sende, wird in Schritt 2 ein Fehler angezeigt, der sagt, dass es in der Zukunft sein muss.

Wenn ich das aktuelle Datum +30 Sekunden oder +2 Stunden sende, komme ich zu Schritt 5, der eine 400 Antwort zurückgibt: UNKNOWN_ERROR "Ein unbekannter Fehler ist aufgetreten"

Wenn ich das aktuelle Datum +4 Stunden sende, funktioniert alles. Die aktuelle UTC-Zeit ist 20 Uhr, also bedeutet das Hinzufügen von 4 Stunden, dass start_date morgen ist.

Bedeutet das, dass ich den Benutzer heute nicht berechnen kann? Muss die start_date am nächsten Tag oder sogar am nächsten business Tag sein?

    
Jake 16.09.2014, 00:12
quelle

4 Antworten

6

Ich habe mit einem PayPal-Mitarbeiter gesprochen und festgestellt, dass start_date morgen oder später sein muss. Sie werden dies zu den Dokumenten hinzufügen.

Wenn Sie die monatliche Abrechnung sofort starten möchten, können Sie dies möglicherweise tun, indem Sie das Startdatum auf 1 Monat festlegen und eine Einrichtungsgebühr für den ersten Monat erheben. Ich habe das nicht getestet, weil es nicht das ist, was ich will.

    
Jake 17.09.2014, 03:20
quelle
2

Die erste Zahlung für Vereinbarungen wird direkt am angegebenen Startdatum in Rechnung gestellt. Die Folgebeträge werden ebenfalls automatisch von PP übernommen. Sie müssen nur dann mit den BillOutstandingAmount-Aufrufen arbeiten, wenn PP die Zahlung am Erneuerungsdatum nicht ausgewählt hat.

Das Problem, mit dem ich bei der Entwicklung mit ihrer RestAPI konfrontiert wurde, war die Angabe einer falschen Zeitzone. Vielleicht ist das für dich dasselbe. Stellen Sie sicher, dass die richtige Zeitzone in Ihrem Startdatum angegeben ist (mit allen Daten, die tatsächlich an PP übergeben wurden)

Datumsangaben sollten in diesem Format sein: JJJJ-MM-TTTH: MM: SSZ

ex. start_date = 2014-09-16T09: 20: 00 -0400

Wenn Sie sicherstellen möchten, dass Paypal das Datum als gültig akzeptiert, fügen Sie ihm ein paar Sekunden hinzu.

Nehmen wir an, Sie sind in Java, Sie können etwas tun wie:

%Vor%     
Ethorsen 16.09.2014 13:24
quelle
0

Ich kann eigentlich nicht replizieren. Ich bin über diesen Thread gestolpert, als ich den Fehler aufgrund der Einstellung von moment.now() erhalten habe. Aber in Zukunft sogar auf 5 Sekunden einzustellen, funktioniert a-ok. Ich benutze JavaScript, "start_date": moment().add({seconds:5}).format() und das geht gut. Moment.js wird TZ auf UTC setzen, wenn es als solches formatiert wird, also muss es ein Zeitzonen-Ding an deinem Ende sein?

    
lefnire 17.11.2014 20:33
quelle
0

Es sieht so aus, als würden die Zahlungen nur basierend auf dem Datum vor oder nach 07:00 UTC des aktuellen Datums verarbeitet.

Zum Beispiel. Das aktuelle Datum ist 2017-05-04T04: 50: 00.00Z Ich habe als Startdatum die aktuelle UTC-Zeit plus 30 Sekunden eingestellt. Da das Vereinbarungsdatum auf einen Wert gesetzt wird, der größer ist als das aktuelle Datum, gibt die API keinen Fehler aus, es legt jedoch NICHT fest, dass Sie die Zeit haben, die Sie angegeben haben. Stattdessen setzt es auf 2017-05-04T07: 00: 00Z.

Wenn Sie nun die gleiche Datumseinstellung von 2017-05-04T04: 50: 00.00Z haben und statt 30 Sekunden 24 Stunden addieren, würden Sie denken, dass Ihre Zeit dann auf 2017-05-05T04 gesetzt wäre : 50: 00. Aber nein, die Zeit wird auf 2017-05-05T07: 00: 00Z gesetzt.

Es sieht so aus, als würden diese jeden Tag um 07:00 UTC verarbeitet und Sie können nur das Datum angeben.

    
James Parker 04.05.2017 04:56
quelle

Tags und Links