Szukaj…


Parametry

Parametr Detale
dane_kartowe Obiekt JSON zawierający informacje o płatności dla transakcji
szczegóły karty kredytowej Obiekt JSON zawierający dane karty kredytowej, który jest wysyłany do PayPal w celu przechowania
Identyfikator klienta Twój identyfikator klienta aplikacji PayPal (poświadczenia OAuth 2)
paypal Odwołanie do zestawu SDK do węzła PayPal
sekret Tajny wniosek PayPal (dane uwierzytelniające OAuth 2)
uuid Odwołanie do pakietu UUID dla węzła

Uwagi

Ta próbka zabiera użytkownika poprzez uznanie prostej transakcji kartą kredytową przy użyciu zestawów SDK PayPal.

Próbka węzła

Zacznij od instalacji modułu węzła PayPal z NPM

npm install paypal-rest-sdk

W pliku aplikacji dodaj informacje o konfiguracji zestawu SDK

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
});

Dodajemy wymaganie dotyczące zestawu SDK, a następnie konfigurujemy zmienne dla identyfikatora klienta i hasła, które zostały uzyskane podczas tworzenia aplikacji . Następnie konfigurujemy naszą aplikację przy użyciu tych szczegółów i określamy środowisko, w którym pracujemy (na żywo lub w piaskownicy).

Następnie konfigurujemy obiekt JSON, który zawiera informacje o płatności dla płatnika.

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." 
}]};

Dodaj intent na sale i payment_method z credit_card . Następnie dodaj dane karty i adres karty kredytowej w funding_instruments oraz kwotę, którą należy obciążyć w ramach transactions . Można tu umieścić wiele obiektów transakcji.

Na koniec wysyłamy żądanie do payment.create(...) , przekazując nasz obiekt card_data w celu przetworzenia płatności.

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

Jeśli transakcja się powiodła, powinniśmy zobaczyć obiekt odpowiedzi podobny do następującego:

{
  "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
}

W tym obiekcie zwrotnym state approved informuje nas, że transakcja się powiodła. Pod obiektem links znajduje się szereg łączy HATEOAS, które zapewniają potencjalne następne kroki, które można podjąć w sprawie właśnie wykonanej akcji. W tym przypadku możemy pobierać informacje o płatności dokonując żądanie GET do self końcowego przewidzianego.

Dokonanie płatności za pomocą sklepionej karty kredytowej (węzeł)

W tym przykładzie przyjrzymy się, jak przechowywać kartę kredytową za pomocą skarbca PayPal, a następnie odniesiemy się do tej zapisanej karty kredytowej, aby przetworzyć transakcję kartą kredytową dla użytkownika.

Powodem, dla którego chcielibyśmy korzystać ze skarbca, jest to, że nie musimy przechowywać poufnych informacji o karcie kredytowej na naszych własnych serwerach. Po prostu odwołujemy się do metody płatności za pomocą dostarczonego identyfikatora skarbca, co oznacza, że nie musimy sami zajmować się wieloma przepisami dotyczącymi zgodności z PCI przy przechowywaniu kart kredytowych.

Podobnie jak w przypadku poprzednich próbek, zaczynamy od konfiguracji naszego środowiska.

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
});

Jedną różnicą w stosunku do poprzednich próbek jest to, że potrzebujemy nowego pakietu, UUID node-uuid , który będzie używany do generowania unikalnych UUID dla płatników podczas przechowywania karty. Możesz zainstalować ten pakiet poprzez:

npm install node-uuid

Następnie definiujemy obiekt JSON karty kredytowej, który zostanie wysłany do przechowalni PayPal w celu przechowywania. Zawiera informacje z karty, a także unikalny identyfikator płatnika, który generujemy za pomocą identyfikatora node-uuid . Powinieneś przechowywać ten unikalny payer_id we własnej bazie danych, ponieważ będzie on używany podczas tworzenia płatności za pomocą karty sklepionej.

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

Wreszcie musimy przechowywać kartę kredytową i przetwarzać płatność przy użyciu tej karty. Aby przeskoczyć kartę kredytową, wywołujemy credit_card.create(...) , przekazując właśnie utworzony obiekt credit_card_details . Jeśli wszystko pójdzie dobrze, powinniśmy zwrócić obiekt ze szczegółami na temat sklepionej karty. Aby dokonać płatności za pomocą tej karty, naprawdę potrzebujemy tylko dwóch informacji: id_płaciciela, który już przechowaliśmy, oraz identyfikator skarbca, które powinny być również przechowywane jako odniesienie w naszej własnej bazie danych.

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));
            }
        });
    }
});

W sekcji po pomyślnym przejściu na kartę kredytową po prostu określamy szczegóły karty i przetwarzamy płatność, podobnie jak w poprzednim przykładzie przetwarzania karty kredytowej. Główną różnicą w strukturze card_data obiektu jest funding_instruments sekcji, które określamy na podstawie payer . Zamiast definiować informacje o karcie kredytowej, zamiast tego używamy następującego obiektu zawierającego odwołanie do identyfikatora skarbca i identyfikator płatnika:

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

W ten sposób przetwarzamy płatność za pomocą karty sklepionej.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow