페이 스테이션 API v2.0

개요

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

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

결제 UI

페이 스테이션 열기

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

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

파라미터유형설명
access_token
string토큰. API에 의해 수신됩니다. 필수.
sandbox
booleanTrue를 설정하여 결제 프로세스를 테스트합니다. sandbox-secure.xsolla.comsecure.xsolla.com 대신 사용됩니다.
lightbox
object옵션 목록 관련 객체로서, Lightbox 열기에 사용할 수 있습니다(PC 버전)
lightbox.width
stringLightbox 프레임의 너비입니다. null인 경우, 페이 스테이션 너비에 따라 달라집니다. 기본값은 null입니다.
lightbox.height
stringLightbox 프레임의 높이입니다. null인 경우, 페이 스테이션 높이에 따라 달라집니다. 기본값은 '100%'입니다.
lightbox.zIndex
integer속성에 의해 수직 스태킹 순서가 제어됩니다. 기본값은 1000입니다.
lightbox.overlayOpacity
integer오버레이의 불투명도(0~1)입니다. 기본값은 '.6'입니다.
lightbox.overlayBackground
string오버레이의 배경입니다. 기본 값은 '#000000'.
lightbox.modal
booleanLightbox 프레임을 닫을 수 없습니다. 기본값은 'false'입니다.
lightbox.closeByClick
boolean오버레이 클릭에 의한 Lightbox 닫기를 설정/해제합니다. 기본값은 'true'입니다.
lightbox.closeByKeyboard
booleanESC 키 누르기에 의한 Lightbox 닫기를 설정/해제합니다. 기본값은 'true'입니다.
lightbox.contentBackground
string프레임의 배경입니다. 기본 값은 '#ffffff'. 이러한 색상 변경은 이를 포함하는 라이트박스 설정에만 영향을 미치며 페이 스테이션 iframe 자체에는 영향을 미치지 않음에 유의하시기 바랍니다.
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 혹은 Pay Station Embed에서 페이 스테이션을 열 때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의 각 메시지에서 전달됩니다. 매개변수 정보가 아직 수집되지 않은 경우에는 빈 문자열이 옵니다.

매개변수유형설명
actionstring이벤트 이름.
valuestring추가 매개변수. 사용자의 선택에 따라 달라지는 특정 이벤트 매개변수 포함.
statestring작업이 수행된 결제 UI 페이지.
datestringGMT 형식의 날짜와 시간.
millisecondsnumberUnix 시간 형식의 날짜와 시간.
timezonestring사용자 시간대.
session_idstring세션 ID. 세션에는 30분 이내 또는 결제 UI가 닫히기 전까지의 모든 사용자 작업이 포함됩니다. 세션은 결제 UI가 실행되는 순간부터 시작되며, 결제 UI가 있는 페이지를 새로고침하면 세션이 저장됩니다.
payment_countrystring결제 국가.
purchase_invoice_idnumber엑솔라 시스템의 결제 인보이스 ID.
purchase_external_idstring파트너 시스템의 결제 인보이스 ID.
purchase_typestring구매 유형. 'virtual item', 'virtual currency', 'pay2play', 'subscription' 등.
purchase_sumnumber명목상 구매 금액.
purchase_currencystring게임머니 구매.
purchase_skustring구매한 아이템의 SKU.
purchase_digital_content_skustring구입한 게임 키 패키지의 SKU.
purchase_descriptionstring구매 설명.
virtual_currency_amountnumber게임머니 금액.
coupon_codestring쿠폰 코드.
subscription_package_external_idnumber정기결제 ID입니다.
subscription_package_namestring정기결제 이름.
subscription_package_descriptionstring정기결제 설명.
total_sumnumber총 구매 금액. 모든 비용이 포함되어 있습니다.
total_sum_currencystring총 구매 금액 통화.
user_idstring사용자 ID (v1).
user_countrystring사용자 국가.
payment_instance_namestring결제 방식 이름.

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

시/도설명
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게임 아이템 스토어.


이벤트를 Google AnalyticsFacebook Analytics 계정으로 전송하려면, 이러한 애널리틱스 플랫폼을 통합해야 합니다.

테스트 카드 목록

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

카드3-D Secure
카드 번호: 4111111111111111
만료 날짜: 12/40
CVV2: 123
카드 종류: VISA
아니요
카드 번호: 5555555555554444
만료 날짜: 11/40
CVV2: 321
카드 종류: MasterCard
아니요
카드 번호: 4000000000000010
만료 날짜: 12/40
CVV2: 123
카드 종류: VISA
카드 번호: 5200000000000114
만료 날짜: 11/40
CVV2: 321
카드 종류: MasterCard
카드 번호: 6759649826438453
만료 날짜: 12/40
CVV2: 321
카드 종류: Maestro

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

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

오류 목록

코드설명
0004-0001만료되었거나 올바르지 않은 토큰.
0004-0008잘못된 URL (secure.xsolla.com에서 샌드박스 모드 또는 sandbox-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" 값을 설정합니다. 실제 결제의 경우 이 매개 변수는 제거되어야 합니다.
custom_parameters
string사용자 지정 파라미터입니다. 키와 값을 쌍으로 가진 올바른 JSON 해시여야 합니다.
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);
응답