Pay Station API v2.0

Überblick

Der Abschnitt enthält Beschreibungen der Methoden für die Zusammenarbeit mit der Bezahlstation. Verwenden Sie die Basisauthentifizierung, um Methoden aufzurufen. Um das Zahlungsportal aufzurufen und sichere Zahlungen zu aktivieren, müssen Sie einen Token abrufen.

Endpunktpfade: https://api.xsolla.com.

Bezahlstation öffnen

Die Bezahlstation ist ein ganzheitliches Zahlungsportal, das Ihren Benutzern die Möglichkeit bietet, Spiele und Gegenstände auf Ihrer Website zu kaufen. Zur einfachen Implementierung des Zahlungsportals auf Ihrer Website empfiehlt es sich, das Skripts aus unserem CDN herunterzuladen. Verwenden Sie diese URL, um das Skript auf Ihrer Website zu integrieren. Weitere Informationen finden Sie in unserem GitHub Repository.

Script-Initialisierungsparameter:

ParameterTypBeschreibung
access_token
stringToken; wird über die API empfangen. Erforderlich.
sandbox
booleanStellen Sie den Wert des Parameters auf 'true', um den Zahlungsvorgang auszutesten: Anstelle von sandbox-secure.xsolla.com wird secure.xsolla.com verwendet.
lightbox
objectLightbox-Parameter (Objekt; nur für die Desktop-Version).
lightbox.width
stringRahmenbreite der Lightbox. Falls als Wert null festgelegt ist, wird die Breite der Bezahlstation verwendet. Standardwert ist null.
lightbox.height
stringRahmenhöhe der Lightbox. Falls als Wert null festgelegt ist, wird die Höhe der Bezahlstation verwendet. Standardwert ist '100%'.
lightbox.zIndex
integerDefiniert die Stapelanordnung. Standardwert ist 1000.
lightbox.overlayOpacity
integerDeckkraft der Einblendung (0 bis 1). Standardwert ist '.6'.
lightbox.overlayBackground
stringHintergrundfarbe der Einblendung. Standardmäßig is '#000000'.
lightbox.modal
booleanFalls 'true' eingestellt ist, kann der Lightbox-Rahmen nicht geschlossen werden. Standardwert ist 'false'.
lightbox.closeByClick
booleanFalls 'true' eingestellt ist, wird die Lightbox durch Klicken auf die Einblendung geschlossen. Standardwert ist 'true'.
lightbox.closeByKeyboard
booleanFalls 'true' eingestellt ist, wird die Lightbox durch Drücken der Escape-Taste geschlossen. Standardwert ist 'true'.
lightbox.contentBackground
stringHintergrundfarbe des Rahmens. Standardmäßig ist '#ffffff'. Beachten Sie, dass diese Farbänderungen keinen Einfluss auf den iframe der Bezahlstation selbst haben, sondern nur auf die Einstellungen der Lightbox, in dem der iFrame angezeigt wird.
lightbox.contentMargin
stringBreite des Rahmens. Standardwert ist '10px'.
lightbox.spinner
stringArt der animierten Ladeanzeige. Als Wert lässt sich entweder 'xsolla' oder 'round' festlegen. Standardwert ist 'xsolla'.
lightbox.spinnerColor
stringFarbe des Ladekreises. Kein Wert voreingestellt.
childWindow
objectOptionen für das untergeordnete Fenster, welches die Benutzeroberfläche der Bezahlstation enthält. Wird in der mobilen Version unterstützt.
childWindow.target
stringStelle, an welcher das Bezahlstation-Fenster geöffnet werden soll. Als Wert lässt sich entweder '_blank', '_self', '_parent' festlegen. Standardmäßig ist '_blank' eingestellt.

Das Script ermöglicht Ihnen, die Ereignisse im Zahlungsportal zu verfolgen. Je nach Art des Ereignisses können Sie verschiedene Aktionen auf der Website ausführen.

Liste der Ereignisse:

ParameterBeschreibung
initWidget initialisiert.
openWidget geöffnet.
loadZahlungsportal (Bezahlstation) geladen.
closeZahlungsportal (Bezahlstation) geschlossen.
statusBenutzer befindet sich auf der Statusseite.
status-invoiceBenutzer befindet sich auf der Statusseite; Zahlung im Gange.
status-deliveringBenutzer befindet sich auf der Statusseite; Zahlung abgeschlossen; Zahlungsbestätigung wurde versendet.
status-doneBenutzer befindet sich auf der Statusseite, Zahlung wurde dem Benutzerkonto gutgeschrieben.
status-troubledBenutzer befindet sich auf der Statusseite; Zahlung fehlgeschlagen.

Wenn Sie den Ladevorgang für das Zahlungsportal selbst initialisieren möchten, verwenden Sie folgenden Link: https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN.

Note: Für das Aufrufen des Zahlungsportals muss zwingend der Präfix https:// verwendet werden.

Für Testzwecke steht Ihnen folgende URL zur Verfügung: https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN.

Notice: Der Parameter access_token enthält personenbezogene Nutzerdaten. Stellen Sie sicher, dass Sie Server-zu-Server-Kommunikation einsetzen, wenn Sie diesen Parameter abrufen.

Tokenisierung

Gespeicherte Konten abrufen

Listet die gespeicherten Zahlungskonten eines festgelegten Benutzers auf.

HTTP-ANFRAGE

Copy
Full screen
Small screen
GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts

ParameterTypBeschreibung
project_id
integerProjekt-ID.
user_id
integerBenutzer-ID.
Copy
Full screen
Small screen
http
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
Anfrage
GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts

Headers:
  Authorization: Basic <your_authorization_basic_key>
curl --request GET \
  --url https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts \
  --header 'authorization: Basic <your_authorization_basic_key> '
<?php

$client = new http\Client;
$request = new http\Client\Request;

$request->setRequestUrl('https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts');
$request->setRequestMethod('GET');
$request->setHeaders(array(
  'authorization' => 'Basic <your_authorization_basic_key> '
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
var client = new RestClient("https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts");
var request = new RestRequest(Method.GET);
request.AddHeader("authorization", "Basic <your_authorization_basic_key> ");
IRestResponse response = client.Execute(request);
import http.client

conn = http.client.HTTPSConnection("api.xsolla.com")

headers = { 'authorization': "Basic <your_authorization_basic_key> " }

conn.request("GET", "/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["authorization"] = 'Basic <your_authorization_basic_key> '

response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts")
  .get()
  .addHeader("authorization", "Basic <your_authorization_basic_key> ")
  .build();

Response response = client.newCall(request).execute();
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key> ");

xhr.send(data);
Antwort
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]

Von gespeichertem Konto abbuchen

Von einem gespeicherten Zahlungskonto des Benutzers abbuchen.

HTTP-ANFRAGE

Copy
Full screen
Small screen
POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}

ParameterTypBeschreibung
project_id
integerProjekt-ID. Erforderlich.
user_id
integerBenutzer-ID. Erforderlich.
type
stringKarte / PayPal. Erforderlich.
account_id
integerID des gespeicherten Kontos in der Xsolla-Datenbank. Erforderlich.
user
objectBenutzerdaten (Objekt).
user.ip
stringIP-Adresse des Benutzers. Erforderlich.
user.name
stringBenutzername.
purchase
objectObjekt, welches Angaben zum Kauf enthält.
purchase.virtual_currency
objectObjekt, welches Angaben zur virtuellen Währung enthält.
purchase.virtual_currency.quantity
floatKaufbetrag in der virtuellen Währung.
purchase.checkout
objectObjekt, welches Angaben zur Bezahlung enthält.
purchase.checkout.currency
stringKaufwährung. Währungscode, bestehend aus drei Buchstaben gemäß ISO 4217.
purchase.checkout.amount
floatKaufbetrag.
settings
objectObjekt, welches die Einstellungen für den Kauf enthält.
settings.mode
stringLegen Sie als Wert "sandbox" fest, um den Zahlungsvorgang auszutesten. Entfernen Sie den Parameter für tatsächliche Zahlungen.
custom_parameters
stringIhre benutzerdefinierten Parameter, repräsentiert durch eine gültige Reihe von JSON-Objekten bestehend aus Schlüssel-Wert-Paaren.
Copy
Full screen
Small screen
http
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
Anfrage
POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}

Headers:
  Authorization: Basic <your_authorization_basic_key>
Content-Type: application/json

Body:
  {
  "card": {
    "cvn": "123"
  },
  "purchase": {
    "description": {
      "value": "currency purchase"
    },
    "virtual_currency": {
      "quantity": 100
    }
  },
  "settings": {
    "currency": "USD",
    "external_id": "ext123",
    "save": true
  },
  "user": {
    "id": "user123",
    "name": "John Smith"
  }
}
curl --request POST \
  --url https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id} \
  --header 'authorization: Basic <your_authorization_basic_key>' \
  --header 'content-type: application/json' \
  --data '{"user":{"id":"user123","name":"John Smith"},"card":{"cvn":"123"},"purchase":{"virtual_currency":{"quantity":100},"description":{"value":"currency purchase"}},"settings":{"save":true,"currency":"USD","external_id":"ext123"}}'
<?php

$client = new http\Client;
$request = new http\Client\Request;

$body = new http\Message\Body;
$body->append('{"user":{"id":"user123","name":"John Smith"},"card":{"cvn":"123"},"purchase":{"virtual_currency":{"quantity":100},"description":{"value":"currency purchase"}},"settings":{"save":true,"currency":"USD","external_id":"ext123"}}');

$request->setRequestUrl('https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}');
$request->setRequestMethod('POST');
$request->setBody($body);

$request->setHeaders(array(
  'authorization' => 'Basic <your_authorization_basic_key>',
  'content-type' => 'application/json'
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
var client = new RestClient("https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}");
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "Basic <your_authorization_basic_key>");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"user\":{\"id\":\"user123\",\"name\":\"John Smith\"},\"card\":{\"cvn\":\"123\"},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"description\":{\"value\":\"currency purchase\"}},\"settings\":{\"save\":true,\"currency\":\"USD\",\"external_id\":\"ext123\"}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import http.client

conn = http.client.HTTPSConnection("api.xsolla.com")

payload = "{\"user\":{\"id\":\"user123\",\"name\":\"John Smith\"},\"card\":{\"cvn\":\"123\"},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"description\":{\"value\":\"currency purchase\"}},\"settings\":{\"save\":true,\"currency\":\"USD\",\"external_id\":\"ext123\"}}"

headers = {
    'content-type': "application/json",
    'authorization': "Basic <your_authorization_basic_key>"
    }

conn.request("POST", "/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'Basic <your_authorization_basic_key>'
request.body = "{\"user\":{\"id\":\"user123\",\"name\":\"John Smith\"},\"card\":{\"cvn\":\"123\"},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"description\":{\"value\":\"currency purchase\"}},\"settings\":{\"save\":true,\"currency\":\"USD\",\"external_id\":\"ext123\"}}"

response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"user\":{\"id\":\"user123\",\"name\":\"John Smith\"},\"card\":{\"cvn\":\"123\"},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"description\":{\"value\":\"currency purchase\"}},\"settings\":{\"save\":true,\"currency\":\"USD\",\"external_id\":\"ext123\"}}");
Request request = new Request.Builder()
  .url("https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}")
  .post(body)
  .addHeader("content-type", "application/json")
  .addHeader("authorization", "Basic <your_authorization_basic_key>")
  .build();

Response response = client.newCall(request).execute();
var data = JSON.stringify({
  "user": {
    "id": "user123",
    "name": "John Smith"
  },
  "card": {
    "cvn": "123"
  },
  "purchase": {
    "virtual_currency": {
      "quantity": 100
    },
    "description": {
      "value": "currency purchase"
    }
  },
  "settings": {
    "save": true,
    "currency": "USD",
    "external_id": "ext123"
  }
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");

xhr.send(data);
Antwort
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}

Gespeichertes Zahlungskonto löschen

Löscht ein gespeichertes Zahlungskonto.

HTTP-ANFRAGE

Copy
Full screen
Small screen
DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}

ParameterTypBeschreibung
project_id
integerProjekt-ID.
user_id
integerBenutzer-ID.
type
stringKarte / PayPal.
account_id
integerID des gespeicherten Kontos in der Xsolla-Datenbank.
Copy
Full screen
Small screen
http
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
Anfrage
DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}

Headers:
  Authorization: Basic <your_authorization_basic_key>
curl --request DELETE \
  --url https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id} \
  --header 'authorization: Basic <your_authorization_basic_key>'
<?php

$client = new http\Client;
$request = new http\Client\Request;

$request->setRequestUrl('https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}');
$request->setRequestMethod('DELETE');
$request->setHeaders(array(
  'authorization' => 'Basic <your_authorization_basic_key>'
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
var client = new RestClient("https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}");
var request = new RestRequest(Method.DELETE);
request.AddHeader("authorization", "Basic <your_authorization_basic_key>");
IRestResponse response = client.Execute(request);
import http.client

conn = http.client.HTTPSConnection("api.xsolla.com")

headers = { 'authorization': "Basic <your_authorization_basic_key>" }

conn.request("DELETE", "/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Delete.new(url)
request["authorization"] = 'Basic <your_authorization_basic_key>'

response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}")
  .delete(null)
  .addHeader("authorization", "Basic <your_authorization_basic_key>")
  .build();

Response response = client.newCall(request).execute();
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");

xhr.send(data);
Antwort