Xsolla-logo
  • 문서화
  • 계정 생성

주문의 성공적인 결제Webhook POST

엑솔라는 다음 조건이 충족되면 지정된 URL로 order_paid 웹훅을 전송합니다.

  1. 사용자가 주문을 성공적으로 결제했습니다.
  2. 엑솔라는 payment 웹훅이 성공적으로 처리되었다는 응답을 받았습니다.

order_paid 웹훅에는 구매한 아이템 및 거래 세부 정보에 대한 정보가 포함되어 있습니다.

다음과 같은 경우 order_paid 웹훅이 전송되지 않습니다.

  • 결제에 실패했습니다. 결제 실패 예시:
    • 결제 양식이 열렸지만 사용자가 주문을 결제하지 않았습니다.
    • 결제창이 열렸으나 결제 중 오류가 발생했습니다.
  • payment 웹훅을 성공적으로 처리했다는 응답을 받지 못했습니다.

order_paid 웹훅의 처리 속도는 3초 이내로 하는 것이 좋습니다.

응답 섹션에서 예상 답변을 볼 수 있습니다. 다른 응답 코드를 사용할 수도 있습니다. 응답 코드 및 자동 결제 환불 기능 연결에 따른 엑솔라 측의 웹훅 처리 로직은 다음과 같습니다.

응답 코드 자동 결제 환불이 비활성화됨(기본값) 자동 결제 환불이 비활성화됨
400, 401, 402, 403, 404, 409, 422, 415 작업 없음 사용자에게 자동 환불
200, 201, 204 작업 없음 작업 없음
웹훅에 다른 코드 또는 응답 없음 5분 간격으로 2번, 15분 간격으로 7번, 60분 간격으로 10번 등 지정한 시간 간격으로 웹훅을 여러 번 전송합니다. 5분 간격으로 2번, 15분 간격으로 7번, 60분 간격으로 10번 등 지정한 시간 간격으로 웹훅을 여러 번 전송합니다. 모든 웹훅을 전송해도 응답을 성공적으로 받지 못하면 사용자에게 환불이 자동으로 이루어집니다.

자동 환불 기능을 연결하려면 프로젝트 계정 관리자에게 문의하거나 am@xsolla.com으로 이메일을 보내주세요.

Request
Request Body schema: application/json
notification_type
required
string

알림 유형.

required
Array of objects

사용자가 구매한 아이템 목록입니다.

Array
sku
required
string

아이템의 고유 ID입니다. game_key 유형의 아이템은 sku_drm 형식의 값을 사용합니다.

type
required
string

아이템 유형. 가능한 값: virtual_good, virtual_currency, game_key, bundle. 인게임 재화 패키지 등 bundle 유형의 아이템의 경우 아이템 배열에 다음이 표시됩니다.

  • 번들 또는 인게임 재화 패키지의 매개변수
  • 번들에 포함된 아이템 또는 패키지에 포함된 통화
Enum: "virtual_good" "virtual_currency" "game_key" "bundle"
quantity
required
integer

아이템 수량.

amount
required
string

수량을 기준으로 한 아이템의 총 비용. 환율 및 수수료로 인해 아이템 가격과 다를 수 있습니다.

required
Array of objects

적용된 프로모션. 프로모션이 적용되지 않은 경우, 매개변수에 빈 배열이 전달됩니다.

Array
amount_with_discount
string

할인이 적용된 아이템의 총 비용.

amount_without_discount
string

할인이 미적용된 아이템의 총 비용.

sequence
integer

프로모션 신청 순서입니다.

is_pre_order
required
boolean

true이면 항목이 사전 판매됩니다.

custom_attributes
object <json>

아이템 특성 및 값이 포함된 JSON 개체입니다.

required
object

주문에 대한 정보입니다.

id
required
integer

엑솔라 측에서 사용자 주문의 고유 식별자입니다.

mode
required
string

결제 모드. 실제 결제에는 default를 사용합니다. 테스트 결제에는 sandbox를 사용합니다.

Enum: "default" "sandbox"
currency_type
required
string

결제 통화 유형. 무료 주문의 경우 unknown 값이 지정됩니다.

Enum: Description
real

실질 화폐

unknown

무료 주문

virtual

인게임 재화

currency
required
string

주문 통화. 가상 화폐는 SKU를 사용하고 실제 화폐는 3글자 ISO 4217 코드를 사용합니다.

amount
required
string

선택한 통화를 기준으로 한 장바구니의 총 비용입니다.

status
required
string

주문 상태.

platform
required
string or null

결제 플랫폼. xsolla 값은 엑솔라를 통한 결제에 사용됩니다. 기타 결제는 게임 퍼블리싱 플랫폼의 이름에 해당하는 값을 사용합니다.

Enum: "xsolla" "playstation_network" "xbox_live" "pc_standalone" "nintendo_shop" "google_play" "app_store_ios" "android_standalone" "ios_standalone" "android_other" "ios_other" "pc_other"
comment
required
string or null

주문에 대한 사용자의 코멘트.

invoice_id
required
string or null

실질 화폐 결제 인보이스 ID. 인게임 재화 결제 또는 무료 아이템은 null 값을 사용합니다.

required
Array of objects

적용된 프로모션. 프로모션이 적용되지 않은 경우, 매개변수에 빈 배열이 전달됩니다.

Array
amount_with_discount
string

할인이 적용된 아이템의 총 비용.

amount_without_discount
string

할인이 미적용된 아이템의 총 비용.

sequence
integer

프로모션 신청 순서입니다.

Array of objects

적용된 쿠폰. 쿠폰을 적용되지 않았으면 배열이 돌아오지 않습니다.

Array
code
string

적용된 쿠폰 코드.

external_id
string

외부 ID.

Array of objects

적용된 프로모션 코드. 프로모션 코드가 적용되지 않았으면 배열이 돌아오지 않습니다.

Array
code
string

적용된 프로모션 코드의 코드.

external_id
string

외부 ID.

required
object

사용자 정보.

external_id
required
string

사용자 ID.

email
required
string

사용자 이메일 주소.

custom_parameters
object

추가 정보.

Responses
200

성공적인 처리 표시를 반환합니다.

400

제공된 정보에 오류가 있는 경우 반환합니다(예: 필수 매개변수 누락, 인증 실패 등).

Request samples
curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \
-d '{
    "notification_type": "order_paid",
    "items": [
      {
        "sku": "virtual-good-item_test",
        "type": "virtual_good",
        "is_pre_order": false,
        "quantity": 3,
        "amount": "1000",
        "promotions": [
          {
            "amount_without_discount": "6000",
            "amount_with_discount": "5000",
            "sequence": 1
          },
          {
            "amount_without_discount": "5000",
            "amount_with_discount": "4000",
            "sequence": 2
          }
        ],
        "custom_attributes":
          {
            "purchased": 0,
            "attr": "value"
          }
      },
      {
        "sku": "virtual-good-item_test_test_new",
        "type": "bundle",
        "is_pre_order": false,
        "quantity": 1,
        "amount": "1000",
        "promotions": []
      },
      {
        "sku": "gold",
        "type": "virtual_currency",
        "is_pre_order": false,
        "quantity": 1500,
        "amount": "[null]",
        "promotions": []
      }
    ],
    "order": {
      "id": 1,
      "mode": "default",
      "currency_type": "virtual",
      "currency": "sku_currency",
      "amount": "2000",
      "status": "paid",
      "platform": "xsolla",
      "comment": null,
      "invoice_id": "1",
      "promotions": [
        {
          "amount_without_discount": "4000",
          "amount_with_discount": "2000",
          "sequence": 1
        }
      ],
      "promocodes": [
        {
          "code": "promocode_some_code",
          "external_id": "promocode_sku"
        }
      ],
      "coupons": [
        {
          "code": "WINTER2021",
          "external_id": "coupon_sku"
        }
      ]
    },
    "user": {
      "external_id": "id_xsolla_login_1",
      "email": "gc_user@xsolla.com"
    }

}'