2016-04-30 4 views
2

Ich bin in der Lage, erfolgreich mit der Transaktions-API nach dem Beispiel auf Github. die Ladung der Ausführung sieht wie folgt aus:Problem beim Arbeiten mit Square Connect ChargeResponse-Objekt

$result = $transaction_api->charge($access_token, $location_id, $request_body); 
echo "<pre>"; 
print_r($result); 
echo "</pre>"; 

Hier ist der Ausgang:

SquareConnect\Model\ChargeResponse Object 
(
    [errors:protected] => 
    [transaction:protected] => SquareConnect\Model\Transaction Object 
     (
      [id:protected] => REMOVED FROM POST 
      [location_id:protected] => REMOVED FROM POST 
      [created_at:protected] => 2016-04-30T23:42:33Z 
      [tenders:protected] => Array 
       (
        [0] => SquareConnect\Model\Tender Object 
         (
          [id:protected] => REMOVED FROM POST 
          [location_id:protected] => REMOVED FROM POST 
          [transaction_id:protected] => 02d1d965-51fd-5023-68f5-0fcd148a263b 
          [created_at:protected] => 2016-04-30T23:42:33Z 
          [note:protected] => Online Transaction 
          [amount_money:protected] => SquareConnect\Model\Money Object 
           (
            [amount:protected] => 6000 
            [currency:protected] => USD 
           ) 

          [processing_fee_money:protected] => 
          [customer_id:protected] => 
          [type:protected] => CARD 
          [card_details:protected] => SquareConnect\Model\TenderCardDetails Object 
           (
            [status:protected] => CAPTURED 
            [card:protected] => SquareConnect\Model\Card Object 
             (
              [id:protected] => 
              [card_brand:protected] => VISA 
              [last_4:protected] => 5858 
              [exp_month:protected] => 
              [exp_year:protected] => 
              [cardholder_name:protected] => 
              [billing_address:protected] => 
             ) 

            [entry_method:protected] => KEYED 
           ) 

          [cash_details:protected] => 
         ) 

       ) 

      [refunds:protected] => 
      [reference_id:protected] => 
      [product:protected] => EXTERNAL_API 
     ) 

) 

Mein Problem ist, dass, während einige Orte (wie here) zeigen, dass ich soll aus einem Array zurück Bei der Lademethode erhalte ich stattdessen ein ChargeResponse-Objekt.

Innerhalb dieses Objekts befindet sich ein Transaktionsobjekt, das alle relevanten Informationen enthält, die ich dem Kunden anzeigen möchte, sobald die Transaktion abgeschlossen ist. Es ist jedoch geschützt und versucht, eine Transaktions-ID, created_at time oder menge aus zu wiederholen Dieses zurückgegebene Objekt schlägt fehl.

Ich bin sicher, ich mache etwas falsch, aber ich bin verloren, wie Eigenschaften aus dem ChargeResponse-Objekt zu erfassen, so dass ich nützliche Dinge damit tun kann.

Zum Beispiel habe ich versucht,

echo($result->transaction['id']); 

aber alles, was ich bekommen ist:

Fatal error: nicht Eigentum geschützte Zugriffe

Dies kann nicht einmal der richtige Weg sein, etwas zu versuchen, So bin ich offen für Vorschläge.

+0

Bearbeitete die Frage, um die Ausgabe einzuschließen. –

+0

Der erste Vorschlag gibt den gleichen Fehler, weil nicht auf die geschützte Eigenschaft zugegriffen werden kann, und der zweite und dritte Vorschlag werden nicht als gültiger PHP analysiert. –

Antwort

7

Ich habe herausgefunden, dass man die Methode getTransaction verwenden muss, die im Objekt enthalten ist, um eine verwendbare Form der Eigenschaften zu erhalten.

$transaction = $result->getTransaction(); 

Dann können Sie einfach Eigenschaften erhalten, dass Sie wollen:

$transactionID = $transaction["tenders"][0]["transaction_id"]; 

Ich bin ziemlich verärgert, dass ich nicht über diese überall in der Dokumentation kam (in der Tat eine Google-Suche nach dem gesamte docs.connect.squareup.com zeigt keinen einzigen Verweis auf getTransaction). Ich musste darüber stolpern, als ich versuchte, das ursprüngliche ChargeResponse-Objekt mit Hilfe eines anderen Hack-Jobs in ein Array zu zerlegen.

Wie auch immer, froh, dass dies gelöst ist. Wollte das hier für andere lassen.

+0

Diese getTransaction-Funktion ist im Square Connect SDK dokumentiert unter https://github.com/square/connect-php-sdk/blob/master/lib/Model/ChargeResponse.php#L136 Sie haben jedoch Recht, dass es gibt noch nicht viele Beispiele für die tatsächliche Verwendung ihres SDK. – Joe

+0

Dies wird das gleiche tun: $ result ['transaction'] -> getId(); – Rossitten

+0

das ist Arbeit von mir! –

0

Dies funktioniert $ transaction_id = $ result-> getTransaction() -> getId();

+0

Können Sie bitte Ihren Code formatieren und näher erläutern, warum Sie glauben, dass dies die Frage beantwortet? –

Verwandte Themen