# 거부된 결제

결제 시스템에서 트랜잭션이 거부되면 엑솔라는 구성된 웹훅 URL 측의 ps_declined 유형 웹훅에 트랜잭션 세부 정보를 전송합니다. 
웹훅은 승인 또는 결제 처리 단계에서 전송됩니다. 이 경우, payment\ 
order_paid 웹훅이 전송되지 않았습니다.

결제 시스템이 거부되는 일반적인 이유:

* 카드 승인에 실패(예: 기술적 오류 또는 은행의 응답이 없어 결제 시스템이 승인 절차를 완료하지 못함)했거나 거부되었습니다(예: 은행에서 
  응답했지만 자금이 부족하거나 카드 정보가 유효하지 않아 트랜잭션을 거부함).
* 3-D Secure 검증에 실패했거나, 완료되지 않았거나, 사용자 확인 시간이 초과되었습니다.
* 계좌 폐쇄 또는 유효하지 않은 카드 번호 등 되돌릴 수 없는 오류로 인해 처리업체 또는 매입 은행이 일시적으로 접속이 불가능하거나 강제 거부 
  메시지를 반환합니다. 근본적인 문제를 해결하지 않고 재시도하면 트랜잭션이 성공적으로 이루어지지 않습니다.

다음과 혼동되어서는 안 됩니다.

* 사기 방지 거부는 afs_reject 웹훅을 통해 보고됩니다.
* 성공적인 결제 후 환불 및 부분 환불은 
  환불 및 
  partial_refund 웹훅을 통해 보고됩니다.


참고
ps_declined 웹훅을 수신하려면 고객 성공 매니저에게 문의하거나 csm@xsolla.com으로 이메일을 보내주세요.

Endpoint: POST payment-declined
Version: 1.0

## Request fields (application/json):

  - `notification_type` (string, required)
    알림 유형.

  - `refund_details` (object)
    환불 세부 정보(개체).

  - `refund_details.author` (string)
    환불 시작자. 필드 값이 다음 표에 따라 전달됩니다.


    
    
        환불 시작자
        필드 값
    
    
    
    
        게임(API를 통해).
        API
    
    
        게시자 계정 사용자(자동 환불).
        사용자 이메일
    
    
        게시자 계정 사용자(엑솔라 고객 지원의 도움을 받아).
        support@xsolla.com
    
    
        엑솔라(엑솔라 고객 지원의 도움을 받아).
        support@xsolla.com

  - `refund_details.code` (integer)
    코드 ID.


    
    
        코드
        환불 이유
        설명
    
    
    
    
        1
        Cancellation by the user request / the game request
        관리자 페이지에서 취소가 요청된 경우 사용됩니다.
    
    
        2
        Chargeback
        거래 지불 거절 요청되었습니다.
    
    
        3
        Integration error
        엑솔라와 게임 사이의 연동에 문제가 있을 경우 사용됩니다.권장 사항: 사용자를 차단 목록에 추가하지 마세요.
    
    
        4
        Potential fraud – AFS reject
        엑솔라 부정 결제 방지 시스템에서 부정 결제 가능성을 감지하여 거래가 거부되었습니다.
    
    
        5
        Test payment
        테스트 트랜잭션인 경우 사용되며 이후 취소로 이어집니다.권장 사항: 사용자를 차단 목록에 추가하지 마세요.
    
    
        6
        User invoice expired
        후불 결제 방식에 의해 트랜잭션이 이뤄진 경우 사용됩니다.
    
    
        7
        Fraud notification from PS
        결제 시스템에서 부정 결제 가능성을 감지하여 결제가 거부되었습니다.권장 사항: 사용자를 차단 목록에 추가하세요.
    
    
        8
        Cancellation by the PS request
        결제시스템이 취소를 요청한 경우 사용됩니다.권장사항: 사용자를 차단 목록에 추가하지 마세요.
    
    
        9
        Cancellation by the user request
        사용자의 요청에 의한 환불 사유입니다. 어떤 이유로 사용자가 게임 또는 구매에 만족하지 못한 못하였음을 의미합니다.권장 사항: 사용자를 차단 목록에 추가하지 마세요.
    
    
        10
        Cancellation by the game request
        게임을 통해 취소를 요청한 경우 사용됩니다.권장 사항: 사용자를 차단 목록에 추가하지 마세요.
    
    
        11
        Account holder called to report fraud
        계정 소유자가 해당 거래를 하지 않았다고 진술했습니다.권장 사항: 사용자를 차단 목록에 추가하세요.
    
    
        12
        Potential fraud – friendly fraud
        정당한 카드 소유자가 해당 거래에 이의를 제기했습니다.
    
    
        13
        Duplicate
        동일 인보이스에 대하여 거래 복제.
    
    
        21
        Potential fraud – BIN attack
        하나 이상의 BIN에서 카드가 일괄적으로 도난되었습니다. 짧은 시간에 동일한 BIN 범위를 공유하는 시도가 급증하고 카드 번호가 순차적으로 열거되는 경우가 많다는 것이 주요 지표입니다.
    
    
        22
        Potential fraud – monetization fraud
        도난 카드를 사용하여 재판매 목적으로 거래 가능한 아이템을 구매했습니다.
    
    
        23
        Potential fraud – low-scale card fraud
        하나 이상의 BIN에서 카드가 도난되었습니다. BIN 공격(환불 코드 21)만큼 광범위하거나 조직적이지는 않습니다.
    
    
        24
        Potential fraud – regional price abuse
        지역별 가격 책정 또는 키 재판매 악용입니다. 사용자가 일반적으로 위치나 결제 수단을 허위로 표시하여 지역별 가격을 악용하고, 더 비싼 시장에서 재판매할 목적으로 아이템을 저렴하게 획득했습니다.
    
    
        25
        Potential fraud – partner or PS exploit
        자격 증명 도용 및 계정 탈취입니다. 카드 자체를 직접 악용한 것이 아니라 파트너 측 또는 결제 시스템 측 계정이나 연동을 악용했습니다.
    
    
        26
        Potential fraud – not definable
        부정 결제가 확인되었지만 정확한 공격 유형을 판단할 증거가 충분하지 않습니다.
    
    
        27
        Fraud notification from PS – linked transactions
        해당 거래 자체는 결제 시스템 부정 결제 보고서에 명시되지 않았지만, 공유 카드나 장치 등을 통해 부정 결제 관련 사유로 환불된 거래와 연결되어 있습니다.

  - `refund_details.reason` (string)
    환불 이유.

  - `settings` (object)
    사용자 정의 프로젝트 설정(개체).

  - `settings.merchant_id` (integer)
    판매자 ID입니다.

  - `settings.project_id` (integer)
    프로젝트 ID. 이 매개 변수는 [관리자 페이지](https://publisher.xsolla.com/)의 프로젝트 이름 옆에서 확인할 수 있습니다.

  - `transaction` (object, required)
    트랜잭션 데이터 관련 값.

  - `transaction.dry_run` (integer)
    테스트 트랜잭션. 테스트 트랜잭션의 경우 매개 변수는 1개 값을 갖습니다. 또는, 트랜잭션이 실제로 이루어지는 경우 매개 변수가 전송되지 않습니다.

  - `transaction.external_id` (string)
    트랜잭션 외부 ID.

  - `transaction.id` (integer)
    트랜잭션 ID.

  - `transaction.payment_method` (integer)
    결제 수단 ID.

  - `user` (object)
    사용자 세부 사항(개체).

  - `user.country` (string)
    사용자의 국가. [ISO 3166-1 alpha-2 standard](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)에 따른 2자로 된 국가 코드를 사용합니다.

  - `user.email` (string)
    사용자 이메일.

  - `user.id` (string, required)
    사용자 ID.

  - `user.ip` (string)
    유저 IP 주소입니다.

  - `user.name` (string)
    사용자 이름.

## Response 400 fields (application/json):

  - `error` (object)

  - `error.code` (string)

  - `error.message` (string)


## Response 204 fields

## Response 500 fields
