Suche…


Parameter

Parameter Einzelheiten
card_data JSON-Objekt, das Zahlungsinformationen für die Transaktion enthält
Kreditkartendetails JSON-Objekt, das Kreditkartendaten enthält, die zur Übergabe an PayPal gesendet werden
Kunden ID Ihre PayPal-Anwendungs-Client-ID (OAuth 2-Berechtigungsnachweis)
paypal Referenz zum PayPal-Node-SDK
Geheimnis Ihr PayPal-Antragsgeheimnis (OAuth 2-Berechtigungsnachweise)
uuid Verweis auf das node-uuid-Paket

Bemerkungen

In diesem Beispiel wird dem Benutzer die Gutschrift einer einfachen Kreditkartentransaktion mit den PayPal-SDKs empfohlen.

Knotenprobe

Beginnen Sie mit der Installation des PayPal-Node-Moduls von NPM

npm install paypal-rest-sdk

Fügen Sie in Ihrer Anwendungsdatei die Konfigurationsinformationen für das SDK hinzu

var paypal = require('paypal-rest-sdk');

var client_id = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';

paypal.configure({
    'mode': 'sandbox', //sandbox or live
    'client_id': client_id,
    'client_secret': secret
});

Wir fügen die Anforderung für das SDK hinzu und richten dann Variablen für die Client-ID und das Geheimnis ein, die beim Erstellen einer Anwendung abgerufen wurden. Wir konfigurieren dann unsere Anwendung anhand dieser Details und geben die Umgebung an, in der wir arbeiten (Live oder Sandbox).

Als Nächstes richten Sie das JSON-Objekt ein, das die Zahlungsinformationen für den Zahlungspflichtigen enthält.

var card_data = {
  "intent": "sale",
  "payer": {
    "payment_method": "credit_card",
    "funding_instruments": [{
      "credit_card": {
        "type": "visa",
        "number": "4417119669820331",
        "expire_month": "11",
        "expire_year": "2018",
        "cvv2": "874",
        "first_name": "Joe",
        "last_name": "Shopper",
        "billing_address": {
          "line1": "52 N Main ST",
          "city": "Johnstown",
          "state": "OH",
          "postal_code": "43210",
          "country_code": "US" }}}]},
  "transactions": [{
    "amount": {
      "total": "7.47",
      "currency": "USD",
      "details": {
        "subtotal": "7.41",
        "tax": "0.03",
        "shipping": "0.03"}},
    "description": "This is the payment transaction description." 
}]};

Fügen Sie eine intent des sale , und eine payment_method von credit_card . funding_instruments die Kreditkarten- und Adressdaten für die Kreditkarte funding_instruments und den unter transactions funding_instruments Betrag hinzu. Hier können mehrere Transaktionsobjekte abgelegt werden.

Als letztes payment.create(...) wir an payment.create(...) und übergeben unser card_data Objekt, um die Zahlung zu verarbeiten.

paypal.payment.create(card_data, function(error, payment){
  if(error){
    console.error(error);
  } else {
    console.log(payment);
  }
});

Wenn die Transaktion erfolgreich war, sollte ein Antwortobjekt ähnlich dem folgenden angezeigt werden:

{
  "id": "PAY-9BS08892W3794812YK4HKFQY",
  "create_time": "2016-04-13T19:49:23Z",
  "update_time": "2016-04-13T19:50:07Z",
  "state": "approved",
  "intent": "sale",
  "payer": {
    "payment_method": "credit_card",
    "funding_instruments": [
      {
        "credit_card": {
          "type": "visa",
          "number": "xxxxxxxxxxxx0331",
          "expire_month": "11",
          "expire_year": "2018",
          "first_name": "Joe",
          "last_name": "Shopper",
          "billing_address": {
            "line1": "52 N Main ST",
            "city": "Johnstown",
            "state": "OH",
            "postal_code": "43210",
            "country_code": "US"
          }
        }
      }
    ]
  },
  "transactions": [
    {
      "amount": {
        "total": "7.47",
        "currency": "USD",
        "details": {
          "subtotal": "7.41",
          "tax": "0.03",
          "shipping": "0.03"
        }
      },
      "description": "This is the payment transaction description.",
      "related_resources": [
        {
          "sale": {
            "id": "0LB81696PP288253D",
            "create_time": "2016-04-13T19:49:23Z",
            "update_time": "2016-04-13T19:50:07Z",
            "amount": {
              "total": "7.47",
              "currency": "USD"
            },
            "state": "completed",
            "parent_payment": "PAY-9BS08892W3794812YK4HKFQY",
            "links": [
              {
                "href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/0LB81696PP288253D",
                "rel": "self",
                "method": "GET"
              },
              {
                "href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/0LB81696PP288253D\/refund",
                "rel": "refund",
                "method": "POST"
              },
              {
                "href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/payment\/PAY-9BS08892W3794812YK4HKFQY",
                "rel": "parent_payment",
                "method": "GET"
              }
            ],
            "fmf_details": {
              
            },
            "processor_response": {
              "avs_code": "X",
              "cvv_code": "M"
            }
          }
        }
      ]
    }
  ],
  "links": [
    {
      "href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/payment\/PAY-9BS08892W3794812YK4HKFQY",
      "rel": "self",
      "method": "GET"
    }
  ],
  "httpStatusCode": 201
}

In diesem Rückkehrobjekt wird der state der approved , wenn die Transaktion erfolgreich war. Unter dem links Objekt befinden sich eine Reihe von HATEOAS- Links, die potenzielle nächste Schritte für die gerade ausgeführte Aktion darstellen. In diesem Fall können wir Informationen über die Zahlung abrufen, indem Sie eine GET-Anforderung an den angegebenen self senden.

Zahlung mit einer Vaulted Credit Card (Node) durchführen

In diesem Beispiel wird erläutert, wie eine Kreditkarte mit dem PayPal-Tresor gespeichert wird. Anschließend wird auf diese gespeicherte Kreditkarte verwiesen, um eine Kreditkartentransaktion für einen Benutzer zu verarbeiten.

Der Grund, warum wir den Tresor verwenden möchten, ist, dass wir keine sensiblen Kreditkarteninformationen auf unseren eigenen Servern speichern müssen. Wir referenzieren die Zahlungsmethode einfach über eine bereitgestellte Tresor-ID. Das bedeutet, dass Sie sich nicht mit vielen PCI-Compliance-Vorschriften befassen müssen, wenn Sie die Kreditkarten selbst speichern.

Wie bei den vorherigen Beispielen beginnen wir mit der Einrichtung unserer Umgebung.

var paypal = require('paypal-rest-sdk'),
    uuid = require('node-uuid');

var client_id = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';

paypal.configure({
  'mode': 'sandbox', //sandbox or live
  'client_id': client_id,
  'client_secret': secret
});

Der einzige Unterschied zu den vorherigen Beispielen besteht darin, dass wir ein neues Paket, node-uuid , benötigen, das zum Generieren eindeutiger UUIDs für die Zahler beim Speichern der Karte verwendet wird. Sie können dieses Paket über Folgendes installieren:

npm install node-uuid

Als Nächstes definieren wir das Kreditkarten-JSON-Objekt, das zur Speicherung an den PayPal-Tresor gesendet wird. Es enthält Informationen von der Karte sowie eine eindeutige Kennzahl, die wir mithilfe von node-uuid generieren. Sie sollten diese eindeutige payer_id in Ihrer eigenen Datenbank speichern, da sie beim Erstellen einer Zahlung mit der Vault-Karte verwendet wird.

var create_card_details = {
    "type": "visa",
    "number": "4417119669820331",
    "expire_month": "11",
    "expire_year": "2018",
    "first_name": "John",
    "last_name": "Doe",
    "payer_id": uuid.v4()
};

Schließlich müssen wir die Kreditkarte speichern und die Zahlung mit dieser Karte abwickeln. Um eine Kreditkarte zu credit_card.create(...) , rufen wir credit_card.create(...) und übergeben das gerade erstellte Objekt credit_card_details . Wenn alles gut geht, sollten wir uns einen Gegenstand mit Details über die gewölbte Karte zurücksenden lassen. Für eine Zahlung mit dieser Karte benötigen wir wirklich nur zwei Informationen: die bereits gespeicherte payer_id und die Tresor-ID, die auch als Referenz in unserer eigenen Datenbank gespeichert werden sollte.

paypal.credit_card.create(create_card_details, function(error, credit_card){
    if(error){
        console.error(error);
    } else {
        var card_data = {
            "intent": "sale",
            "payer": {
                "payment_method": "credit_card",
                "funding_instruments": [{
                    "credit_card_token": {
                        "credit_card_id": credit_card.id,
                        "payer_id": credit_card.payer_id
                    }
                }]
            },
            "transactions": [{
                "amount": {
                    "total": "7.47",
                    "currency": "USD",
                    "details": {
                        "subtotal": "7.41",
                        "tax": "0.03",
                        "shipping": "0.03"
                    }
                },
                "description": "This is the payment transaction description." 
            }]
        };
        
        paypal.payment.create(card_data, function(error, payment){
            if(error){
                console.error(error);
            } else {
                console.log(JSON.stringify(payment));
            }
        });
    }
});

In dem Abschnitt nach erfolgreicher Übergabe der Kreditkarte definieren wir einfach die Kartendaten und bearbeiten die Zahlung, wie im vorherigen Beispiel der Kreditkartenverarbeitung. Der Hauptunterschied in der Struktur des card_data ist der Abschnitt " funding_instruments ", den wir unter " payer definieren. Anstatt die Kreditkarteninformationen zu definieren, verwenden wir stattdessen das folgende Objekt, das die Tresor-ID-Referenz und die Zahler-ID enthält:

"credit_card_token": {
    "credit_card_id": credit_card.id,
    "payer_id": credit_card.payer_id
}

So verwenden wir eine gewölbte Karte, um eine Zahlung zu verarbeiten.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow