페이 스테이션 API v2.0

개요

본 섹션은 페이 스테이션을 사용하여 작업하는 방법을 설명합니다. API 방식을 가져오려면 Basic Authentication을 사용하십시오. 결제 UI를 열고 안전한 결제를 활성화하려면 토큰을 가져와야 합니다.

Endpoint 경로: https://api.xsolla.com.

결제 UI

페이 스테이션 열기

엑솔라 팀은 개발자 웹 사이트와 결제 인터페이스의 연동을 단순화하기 위한 스크립트를 제공합니다. 스크립트는 저희 CDN에 위치해 있으며 이곳 에서 구할 수 있습니다. 스크립트를 개발자 웹 사이트와 연동하려면 이 URL을 사용하십시오. 자세한 내용을 알아보려면 Github 저장소 를 확인해 보십시오.

스크립트 초기화 파라미터 목록:

파라미터 유형 설명
access_token
string 토큰. API에 의해 수신됩니다. 필수.
샌드박스
boolean True를 설정하여 결제 프로세스를 테스트합니다. sandbox-secure.xsolla.comsecure.xsolla.com 대신 사용됩니다.
lightbox
object 옵션 목록 관련 객체로서, Lightbox 열기에 사용할 수 있습니다(PC 버전)
lightbox.width
string Lightbox 프레임의 너비입니다. null인 경우, 페이 스테이션 너비에 따라 달라집니다. 기본값은 null입니다.
lightbox.height
string Lightbox 프레임의 높이입니다. null인 경우, 페이 스테이션 높이에 따라 달라집니다. 기본값은 '100%'입니다.
lightbox.zIndex
integer 속성에 의해 수직 스태킹 순서가 제어됩니다. 기본값은 1000입니다.
lightbox.overlayOpacity
integer 오버레이의 불투명도(0~1)입니다. 기본값은 '.6'입니다.
lightbox.overlayBackground
string 오버레이의 배경입니다. 기본 값은 '#000000'.
lightbox.modal
boolean Lightbox 프레임을 닫을 수 없습니다. 기본값은 'false'입니다.
lightbox.closeByClick
boolean 오버레이 클릭에 의한 Lightbox 닫기를 설정/해제합니다. 기본값은 'true'입니다.
lightbox.closeByKeyboard
boolean ESC 키 누르기에 의한 Lightbox 닫기를 설정/해제합니다. 기본값은 'true'입니다.
lightbox.contentBackground
string 프레임의 배경입니다. 기본 값은 '#ffffff'.
lightbox.contentMargin
string 프레임 주변의 여백입니다. 기본값은 '10px'입니다.
lightbox.spinner
string 애니메이션 로딩 스피너의 유형입니다. 'xsolla' 또는 'round'일 수 있습니다. 기본값은 'xsolla'입니다.
lightbox.spinnerColor
string 회전자의 색상입니다. 기본값에 의해 설정되지 않습니다.
childWindow
object 페이 스테이션 UI에 포함된 하위 창에 대한 옵션입니다. 모바일 버전에 적합합니다.
childWindow.target
string 대상 옵션은 페이스테이션 창을 여는 위치를 지정합니다. '_blank', '_self', '_parent'일 수 있습니다. 기본값은 '_blank'입니다.

결제 인터페이스 관련하여 발생하는 이벤트는 스크립트를 통해 추적할 수 있습니다. 인터페이스 이벤트 유형에 따라 다양한 작업을 웹 페이지에서 수행할 수 있습니다.

이벤트 목록:

파라미터 설명
init 위젯 초기화 이벤트입니다.
open 위젯 개시 이벤트입니다.
load 결제 인터페이스(페이 스테이션)가 로딩된 후 이벤트입니다.
close 결제 인터페이스(페이 스테이션)가 닫힌 후 이벤트입니다.
status 게임유저가 상태 페이지에서 이동한 경우의 이벤트입니다.
status-invoice 게임유저가 상태 페이지에서 이동했지만 결제가 완료되지 않은 경우의 이벤트입니다.
status-delivering 게임유저가 상태 페이지에서 이동했고, 결제가 완료되었으며, 결제 알림을 보내는 중인 경우의 이벤트입니다.
status-done 게임유저가 상태 페이지에서 이동했고 결제가 성공적으로 완료된 경우의 이벤트입니다.
status-troubled 게임유저가 상태 페이지에서 이동했지만 결제에 실패한 경우의 이벤트입니다.

개발자가 직접 결제 UI 개시를 초기화하려면 https://secure.xsolla.com/paystation2/?access_token=ACCESS_TOKEN 링크를 이용하십시오.

테스트 목적을 위해 다음 URL을 사용하십시오. https://sandbox-secure.xsolla.com/paystation2/?access_token=ACCESS_TOKEN.

Notice: access_token 매개변수에 비공개 사용자 데이터가 포함되어 있습니다. 이 매개변수를 가져오는 경우 서버 간 통신을 사용해야 합니다.
Copy
Full screen
php
  • php
  • html
콜백을 통한 비동기 스크립트 로딩의 예
<html>
<head lang="en">
    <meta charset="UTF-8">
</head>
<body>
    <button data-xpaystation-widget-open>Buy Credits</button>

    <?php \Xsolla\SDK\API\PaymentUI\PaymentUIScriptRenderer::send($paymentUIToken, $isSandbox = true); ?>
</body>
</html>
<script>
    var options = {
        access_token: 'abcdef1234567890abcdef1234567890'
    };
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = "https://static.xsolla.com/embed/paystation/1.0.7/widget.min.js";
    s.addEventListener('load', function (e) {
        XPayStationWidget.init(options);
    }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
</script>

<button data-xpaystation-widget-open>Buy Credits</button>

결제 UI 이벤트

결제 인터페이스 이벤트는 iframe에서 페이 스테이션을 열 때 postMessage 메커니즘을 통해 처리됩니다.

이벤트 설명
show-error-page 오류 표시. 오류 텍스트가 'value'에서 전달됩니다.
open-{state_name} 결제 UI에서 페이지 열기.
create-invoice 엑솔라에서 인보이스 생성.
close-widget 결제 UI 닫기.
click-email-submit 상태 페이지에서 이메일 전송.
click-custom-package-continue 임의이 게임머니 금액을 구매할 때 계속 버튼을 클릭.
click-comment 버튼을 클릭하여 의견 게시.
click-buy-package 게임머니 패키지를 구매할 때 패키지 구매 버튼을 클릭.
click-buy-gift-package 선물하기 위해 게임머니 패키지를 구매할 때 버튼을 클릭.
click-buy-gift-custom-package 선물하기 위해 임의의 게임머니 금액을 구매할 때 버튼을 클릭.
click-btn-share 버튼을 클릭하여 소셜 네트워크를 통해 공유. 소셜 네트워크 이름은 'value'에서 전달됩니다.
click-btn-pay 청구 데이터 입력 양식에서 지금 지불 버튼 클릭.
click-btn-continue 버튼을 클릭하여 정기결제 구매.
click-btn-apply 쿠폰을 사용할 때 적용 버튼을 클릭.
click-btn-activate 게임 키를 활성화할 때 활성화 버튼을 클릭.
click-btn-accept 버튼을 클릭하여 디지털 콘텐츠 구매.
choose-payment-widget 결제 방식 위젯 클릭. 위젯 이름이 'value'에서 전달됩니다.
choose-method 결제 방식 선택. 결제 방식 이름이 'value'에서 전달됩니다.
change-status 결제 상태 변경. 사용자가 결제 UI를 닫거나 페이지를 떠나면 상태가 변경되며 이벤트 메시지는 전송되지 않습니다.

이벤트 매개변수는 postMessage의 각 메시지에서 전달됩니다. 매개변수 정보가 아직 수집되지 않은 경우에는 빈 문자열이 옵니다.

매개변수 유형 설명
action string 이벤트 이름.
value string 추가 매개변수. 사용자의 선택에 따라 달라지는 특정 이벤트 매개변수 포함.
state string 작업이 수행된 결제 UI 페이지.
date string GMT 형식의 날짜와 시간.
milliseconds number Unix 시간 형식의 날짜와 시간.
timezone string 사용자 시간대.
session_id string 세션 ID. 세션에는 30분 이내 또는 결제 UI가 닫히기 전까지의 모든 사용자 작업이 포함됩니다. 세션은 결제 UI가 실행되는 순간부터 시작되며, 결제 UI가 있는 페이지를 새로고침하면 세션이 저장됩니다.
payment_country string 결제 국가.
purchase_invoice_id number 엑솔라 시스템의 결제 인보이스 ID.
purchase_external_id string 파트너 시스템의 결제 인보이스 ID.
purchase_type string 구매 유형. 'virtual item', 'virtual currency', 'pay2play', 'subscription' 등.
purchase_sum number 명목상 구매 금액.
purchase_currency string 게임머니 구매.
purchase_sku string 구매한 아이템의 SKU.
purchase_description string 구매 설명.
virtual_currency_amount number 게임머니 금액.
coupon_code string 쿠폰 코드.
subscription_package_external_id number 정기결제 ID입니다.
subscription_package_name string 정기결제 이름.
subscription_package_description string 정기결제 설명.
total_sum number 총 구매 금액. 모든 비용이 포함되어 있습니다.
total_sum_currency string 총 구매 금액 통화.
user_id string 사용자 ID (v1).
user_country string 사용자 국가.
payment_instance_name string 결제 방식 이름.

이벤트는 아이템을 구매할 때 사용자가 모든 작업을 수행하는 페이지로 연결됩니다.

시/도 설명
cart 선택한 아이템을 게임머니로 구매한 페이지 및 구매 확인.
coupon 쿠폰 입력 양식.
giftcard 기프트 카드 목록이 있는 페이지(위젯 기프트 카드).
giftrecipient 기프트 구매 페이지.
history 구매 내역 페이지.
index 응용 프로그램을 실행한 후 사용자가 리디렉션되는 서비스 페이지. 사용자에게는 표시되지 않습니다.
legal 법률 문서 링크가 포함된 페이지의 모바일 버전.
list 결제 방식 목록.
paybycash 캐시 키오스크(위젯 현금으로 지불)로 구매할 수 있는 결제 방식 목록이 있는 페이지.
payment 결제 양식.
paymentaccount 저장된 결제 계정이 있는 페이지.
paymentreturn 결제 후 사용자가 리디렉션되고, 사용자가 상태 페이지로 전송되기 이전에 머무는 서비스 페이지. 사용자에게는 표시되지 않습니다.
pincart 디지털 콘텐츠 플랫폼 목록 페이지.
pricepoint 게임머니 스토어.
savedmethod 저장한 결제 방식 목록.
shippingaddress 배송 주소 양식.
status 상태 페이지.
subscription 정기결제 요금제 스토어.
subscriptionchange 정기결제 요금제 변경.
useraccount 향후 아이템 구매 시 확인 화면 비활성화 설정이 있는 계정 정보 페이지(사용자 이름, 잔액).
userinventory 사용자 인벤토리.
usermenu 사용자 메뉴 페이지 모바일 버전.
usersubscription 사용자 정기결제 관리.
usersubscriptioninfo 정기결제 세부 정보 페이지.
virtualitem 게임 아이템 스토어.

테스트 카드 목록

샌드박스 내에서 모의 결제를 해 볼 수 있는 카드는 다음과 같습니다.

카드 3-D Secure
카드 번호: 4111111111111111
만료 날짜: 12/20
CVV2: 123
카드 유형: VISA
아니요
카드 번호: 5555555555554444
만료 날짜: 11/19
CVV2: 321
카드 유형: MasterCard
아니요
카드 번호: 4000000000000010
만료 날짜: 12/20
CVV2: 123
카드 유형: VISA
카드 번호: 5200000000000114
만료 날짜: 11/19
CVV2: 321
카드 유형: MasterCard
카드 번호: 6759649826438453
만료 날짜: 12/25
CVV2: 321
카드 유형: Maestro

또한, 다음 데이터를 사용해 트랜잭션 거부를 시뮬레이션해 볼 수 있습니다.

카드 3-D Secure 설명
카드 번호: 4000000000000002
만료 날짜: 12/20
CVV2: 123
카드 유형: VISA
아니요 불충분 한 자금
카드 번호: 5200000000000007
만료 날짜: 11/19
CVV2: 321
카드 유형: MasterCard
아니요 불충분 한 자금
카드 번호: 4000000000000036
만료 날짜: 12/20
CVV2: 123
카드 유형: VISA
거부 됨
카드 번호: 5200000000000031
만료 날짜: 11/19
CVV2: 321
카드 유형: MasterCard
거부 됨

오류 목록

코드 설명
0004-0001 만료되었거나 올바르지 않은 토큰.
0004-0008 잘못된 URL (secure.xsolla.com에서 샌드박스 모드 또는 샌드박스-secure.xsolla.com에서 라이브 모드로 접근을 시도함).
0002-0004 동의서에 서명하지 않음.
0004-0010 금지된 토큰리스 통합.
0010-0001 패키지를 찾지 못함.
0010-0003 패키지에 DRM이 설정되지 않음.
1000-0003 해당 프로젝트에 대하여 활성화된 모듈이 없음.
0004-0003 프로젝트 ID가 전달되지 않았습니다.
0004-0009 유효하지 않은 access_data JSON.
0003-0001 선택한 국가에서는 결제가 금지되어 있습니다.
1000-0002 네트워크 오류. 초기화하는 동안 API 응답을 받지 못했습니다.
0007-0009 토큰을 통해 정기결제 요금제를 변경하지 못했습니다. 새로운 정기결제 요금제의 통화와 기존 요금제의 통화가 서로 다릅니다.
0004-0002 디지털 서명이 올바르지 않습니다.
0005-0001 청구에서 사용자 데이터를 가져오는 동안 오류 발생.
1000-0004 수신한 상태 페이지 데이터가 없음.
1000-0001 네트워크 오류. API가 응답하지 않습니다.
1004-0001 정기결제 요금제 변경이 금지되어 있습니다.
0002-0002 프로젝트가 존재하지 않습니다.

직접 결제

저장된 결제 계정 나열

사용자의 저장된 결제 계정을 나열합니다.

HTTP 요청

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

파라미터 유형 설명
project_id
integer 프로젝트 ID.
user_id
integer 사용자 ID.
Copy
Full screen
http
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
요청
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);
응답
[
  {
    "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"
  }
]

저장한 계정으로 청구

저장된 결제 계정을 사용하여 청구합니다.

HTTP 요청

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

파라미터 유형 설명
project_id
integer 프로젝트 ID. 필수.
user_id
integer 사용자 ID. 필수.
type
string 결제 계정 유형: 카드 / paypal. 필수.
account_id
integer 엑솔라 시스템의 저장된 계정에 대한 ID입니다. 필수.
user
object 사용자에 대한 데이터가 포함된 개체입니다.
user.ip
string 사용자 IP입니다. 필수.
user.name
string 사용자 이름.
purchase
object 구매 데이터 관련 값입니다.
purchase.virtual_currency
object 게임머니 데이터와 관련된 값입니다.
purchase.virtual_currency.quantity
float 게임머니 구매량입니다.
purchase.checkout
object 결제 파라미터 데이터와 관련된 값입니다.
purchase.checkout.currency
string 구매 통화입니다. 통화의 3자리 정의가 ISO 4217에 따라 사용됩니다.
purchase.checkout.amount
float 구매 금액입니다.
settings
object 구매 설정에 대한 데이터가 포함된 개체입니다.
settings.mode
string 결제 프로세스를 테스트하기 위한 "sandbox" 값을 설정합니다. 실제 결제의 경우 이 매개 변수는 제거되어야 합니다.
Copy
Full screen
http
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
요청
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);
응답
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}

저장된 결제 계정 삭제

저장된 결제 계정 삭제.

HTTP 요청

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

파라미터 유형 설명
project_id
integer 프로젝트 ID.
user_id
integer 사용자 ID.
type
string 결제 계정 유형: 카드 / paypal.
account_id
integer 엑솔라 시스템의 저장된 계정에 대한 ID입니다.
Copy
Full screen
http
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
요청
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);
응답