2016-03-23 8 views
3

Ich habe in den letzten Jahren mehrere Überwachungsberichte für meine saas-Apps geschrieben. Der Großteil der Logik verwendet die PayPal-API, um die vollständige Transaktionsliste abzurufen (mithilfe von TransactionSearch) und dann für jede Transaktion die Details abzurufen (mithilfe von GetTransactionDetails).PayPal API NVP-Antwort für GetTransactionDetails fehlende Abonnement-ID

Die Absicht ist es, meine Datenbank Datensätze von wiederkehrenden Zahlungen mit den neuesten PayPal-Daten übereinzustimmen, um sicherzustellen, dass ich kein IPN oder irgendetwas vermisse.

Dies funktionierte gut bis vor etwa einem Monat.

Kürzlich fehlt die Abonnement-ID bei den meisten Transaktionen.

In der Vergangenheit war die Subskriptions-ID im NVP-Feld "SUBSCRIPTIONID" enthalten. Dies ist nicht mehr für alle Transaktionen vorhanden, und ich sehe keine anderen Felder zurückgegeben, die eine Abonnement-ID enthalten. Alle anderen Felder scheinen dort zu sein, also weiß ich, dass meine Anrufe funktionieren. Es ist nur die NVP-Antwort fehlt die Abonnement-ID. Ich habe auch überprüft, dass die Abonnement-ID mit dem IPN für die gleichen Transaktionen enthalten ist.

Mein Code verwendet eine ältere API-Version (108.0). Theoretisch wird PayPal die Funktionsweise einer API nicht ändern, weshalb ich nicht weiß, warum die Ergebnisse vor einem Monat nicht mehr mit der gleichen Codebasis übereinstimmen.

Ich habe versucht, die neueste API-Version (124.0), und es bietet Abonnement-IDs für mehr Transaktionen als 108, aber auch nicht alle von ihnen.

Ich bin total ratlos hier. Hat jemand irgendwelche Hinweise?

Ich will nicht PayPal Unterstützung bitten, weil es 3 Wochen wird überhaupt :-) keine Hilfe bekommen

+0

Ich habe diese Frage an Paypal-Support gesendet, werde versuchen, mich daran zu erinnern, hier eine Antwort zu posten, wenn ich zurück höre. – Bemmu

+0

Hier ist eine Problemumgehung, die ich untersuche. Wenn Sie eine Liste von profileids in Ihrer eigenen Datenbank haben, könnten Sie eine TransactionSearch für jede durchführen und das Argument PROFILEID bei der Suche übergeben. Dann würden Sie eine Liste aller Zahlungen für diese PROFILEID erhalten, die es Ihnen ermöglichen würde, sie mit Transaktions-IDs zu korrelieren. – Bemmu

+0

Ich habe dies mit PayPal-Support zur gleichen Zeit wie hier gefragt. Wie erwartet, gibt es keine definitive Antwort, aber ich sehe, dass mein Ticket im Status "Pending Fix" ist, was hoffnungsvoll ist. –

Antwort

2

hat das gleiche Problem für einen Monat als auch gerade aufgehört zu arbeiten zufällig versuchen will die neueste Version, aber wenn Sie sagen, es ist das gleiche dann denken Sie, die beste Vorgehensweise ist eine Fehlermeldung mit Paypal.

Die einzige gültige Arbeit, die ich fand, ist, den erstellten API-Anruf zu speichern, der die E-Mail- und Abonnement-ID zurückgibt.

Verwenden Sie dann die Informationen aus Transaktions-ID (E-Mail), um die Abonnement-ID aus der ursprünglichen Datenbank (erstellt) zu suchen. Unordentlich aber funktioniert bis jetzt, bis sie dieses Problem beheben.

VORGEHEN

ich diese Methode bin mit dem api Anruf nur zu halten, bis das Abonnement-ID hergestellt ist, wie wir wissen, dass es alle 1 in 5 Versuchen nicht funktioniert.

try { 
    /* Original call */ 
    $transDetailsResponse = $paypalService->GetTransactionDetails($request); 
} catch (Exception $ex) { 
    include_once("../Error.php"); 
    exit; 
} 
// If its not got sub id we start a while loop 
    if ($transDetailsResponse->PaymentTransactionDetails->PaymentItemInfo->Subscription->SubscriptionID == "") 
     { 
    // Run while loop until its found 
     while ($transDetailsResponse->PaymentTransactionDetails->PaymentItemInfo->Subscription->SubscriptionID=="") 
      { 

      try { 

      $transDetailsResponse = $paypalService->GetTransactionDetails($request); 
      } catch (Exception $ex) { 
      include_once("../Error.php"); 
      exit; 
      } 

     } 
+0

Was passiert, wenn eine E-Mail mehrere Abonnements enthält? Wenn Sie eine Zahlung erhalten, wie würden Sie wissen, für welches Abonnement es sich lohnt? – Bemmu

+0

Sie müssten den Zeitstempel verwenden, um das Paar abzugleichen. Ich habe eine weniger chaotische Art und Weise, die ich oben Code hinzugefügt habe. –

+1

Dies muss eine der wahnsinnigsten Workarounds aller Zeiten sein: D – Bemmu

0

Ich fürchte, ich keine Antwort haben, aber ich kann keinen Weg sehen für mich an dieser Diskussion teilnehmen zu können, da ich Kommentare nicht genug Ruf zu machen.

Ich habe das gleiche Problem seit ein paar Wochen. (In der Tat kann ich sagen, dass die Probleme zuerst mit einer Änderung am 2016-03-07 angefangen haben). https://stackoverflow.com/questions/36647177/paypal-api-has-stopped-sending-profile-ids-any-way-to-match-payments-up-to-a-s

Ich habe heute festgestellt, dass wir wieder SUBSCRIPTIONIDs erhalten haben. Der TRANSACTIONTYPE hat sich jedoch zu "repeating_payment" anstelle von "subscription" geändert.

Wir haben auch festgestellt, dass wir Transaktionsdetails von anderen Verkäufern erhalten, die komplett mit unseren Transaktionsdetails gefüllt sind - Produkt NAME-Zeilen, die überhaupt nichts mit unserem Geschäft zu tun haben. Völlig kaputt und möglicherweise ein Sicherheitsproblem.

Ich habe mehrere Tickets mit paypal-techsupport.com geöffnet, um diese Probleme zu beschreiben, aber ich habe noch nichts von ihnen gehört.

0

PayPal Unterstützung reagiert hat schließlich mit diesem:

Die Produkte Teams berichten, dass dieses Problem gelöst werden sollte. Bitte lassen Sie uns wissen, wenn Sie immer noch Instanzen dieses Problems sehen.