승인 결제창 연동

승인 결제창은 인증과 승인까지 자동으로 처리되는 결제창입니다. 인증 결제창은 transaction_typeAUTHORIZE 를 넣어서 결제창을 호출하면 됩니다. 다른 종류의 결제창에 대해 알고 싶다면 JavaScript SDK를 참조하세요.

승인 결제창을 열어 결제 승인까지 진행되면, 가맹점에서 직접 매입을 하거나 수동 매입 API를 사용해 매입을 진행해야 합니다.
** 수동 매입 API는 별도의 계약 진행 후 사용할 수 있습니다.

승인 결제창 연동

1. SDK를 준비하세요.

결제창을 연동할 HTML 페이지에 엑심베이 JavaScript SDK 라이브러리를 추가해야 합니다.

                    
<!-- jQuery -->
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<!-- SDK  -->
<script type="text/javascript" src="https://api-test.eximbay.com/v1/javascriptSDK.js"></script>
                    
                  

라이브러리 설치가 완료되면 EXIMBAY.request_pay() 메서드를 호출해 결제창을 띄울 수 있습니다.

SDK에 대한 자세한 내용은 JavaScript SDK에서 확인할 수 있습니다.

2. 결제를 준비하세요

엑심베이는 요청된 결제의 위변조 방지를 위해 파라미터 유효성을 검증하고 있습니다. 결제창을 열 때 필요한 FGKey를 결제 준비 API로 간편하게 생성하세요.

FGKey 생성에 대한 자세한 내용은 결제 준비에서 확인할 수 있습니다.

요청
                    
curl --request POST 'https://api-test.eximbay.com/v1/payments/ready' \
--header 'Authorization: Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=' \
--header 'Content-Type: application/json' \
--data '{
    "payment" : {
      "transaction_type" : "AUTHORIZE",
      "order_id" : "20230202163035",
      "currency" : "USD",
      "amount" : "10",
      "lang" : "EN"
    },
    "merchant" : {
      "mid" : "1849705C64"
    },
    "buyer" : {
      "name" : "eximbay",
      "email" : "test@test.com"
    },
    "url" : {
      "return_url" : "eximbay.com",
      "status_url" : "eximbay.com"
    }
  }'
                    
                  
                    
RestTemplate restTemplate = new RestTemplate();

HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
headers.add("Authorization", "Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=");

URI url = URI.create("https://api-test.eximbay.com/v1/payments/ready");

String body = "{\n" +
			        "\"payment\" : {\n" +
			        "\"transaction_type\" : \"AUTHORIZE\",\n" +
			        "\"order_id\" : \"20230202163035\",\n" +
			        "\"currency\" : \"USD\",\n" +
			        "\"amount\" : \"10\",\n" +
			        "\"lang\" : \"EN\"\n" +
			        "},\n" +
			        "\"merchant\" : {\n" +
			        "\"mid\" : \"1849705C64\"\n" +
			        "},\n" +
			        "\"buyer\" : {\n" +
			        "\"name\" : \"eximbay\",\n" +
			        "\"email\" : \"test@test.com\"\n" +
			        "},\n" +
			        "\"url\" : {\n" +
			        "\"return_url\" : \"eximbay.com\",\n" +
			        "\"status_url\" : \"eximbay.com\"\n" +
			        " }\n" +
			        "}";

HttpEntity<String> entity = new HttpEntity<>(body, headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);

System.out.println(response.getBody());
                    
                  
                    
<?php
$url = 'https://api-test.eximbay.com/v1/payments/ready';
$data = '{
  "payment": {
      "transaction_type": "AUTHORIZE",
      "order_id": "20230202163035",
      "currency": "USD",
      "amount": "10",
      "lang": "EN"
  },
  "merchant": {
      "mid": "1849705C64"
  },
  "buyer": {
      "name": "eximbay",
      "email": "test@test.com"
  },
  "url": {
      "return_url": "eximbay.com",
      "status_url": "eximbay.com"
  }
}';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo='));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response  = curl_exec($ch);

echo $response;
curl_close($ch);
?>
                    
                  
                    
import requests
import json

url = "https://api-test.eximbay.com/v1/payments/ready"
headers = {
"Authorization": "Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=",
"Content-Type": "application/json"
}

request = {
"payment": {
  "transaction_type": "AUTHORIZE",
  "order_id": "20230202163035",
  "currnecy": "USD",
  "amount": "10",
  "lang": "EN"
},
"merchant": {
  "mid": "1849705C64",
},
"buyer": {
  "name": "eximbay",
  "email": "test@test.com"
},
"url": {
  "return_url": "eximbay.com",
  "status_url": "eximbay.com"
}
}
response = requests.post(url, headers=headers, data=json.dumps(request))

print(response.text)
                    
                  
                    
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api-test.eximbay.com/v1/payments/ready',
'headers': {
  'Authorization': 'Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=',
  'Content-Type': 'application/json'
},
body: JSON.stringify({
  "payment": {
    "transaction_type": "AUTHORIZE",
    "order_id": "20230202163035",
    "currency": "USD",
    "amount": "10",
    "lang": "EN"
  },
  "merchant": {
    "mid": "1849705C64"
  },
  "buyer": {
    "name": "eximbay",
    "email": "test@test.com"
  },
  "url": {
    "return_url": "eximbay.com",
    "status_url": "eximbay.com"
  }
})

};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
                    
                  
                      
string uri = "https://api-test.eximbay.com/v1/payments/ready";
string body = "{\n" +
			        "\"payment\" : {\n" +
			        "\"transaction_type\" : \"AUTHORIZE\",\n" +
			        "\"order_id\" : \"20230202163035\",\n" +
			        "\"currency\" : \"USD\",\n" +
			        "\"amount\" : \"10\",\n" +
			        "\"lang\" : \"EN\"\n" +
			        "},\n" +
			        "\"merchant\" : {\n" +
			        "\"mid\" : \"1849705C64\"\n" +
			        "},\n" +
			        "\"buyer\" : {\n" +
			        "\"name\" : \"eximbay\",\n" +
			        "\"email\" : \"test@test.com\"\n" +
			        "},\n" +
			        "\"url\" : {\n" +
			        "\"return_url\" : \"eximbay.com\",\n" +
			        "\"status_url\" : \"eximbay.com\"\n" +
			        " }\n" +
			        "}";

WebClient webClient = new WebClient();
webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
webClient.Headers[HttpRequestHeader.Authorization] = "Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=";
webClient.Encoding = UTF8Encoding.UTF8;
string responseJSON = webClient.UploadString(uri, body);

Console.Write(responseJSON);
                      
                  
                      
val restTemplate =  RestTemplate()
val headers = HttpHeaders()
headers.add("Content-Type", "application/json")
headers.add("Authorization", "Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=")

var url = URI.create("https://api-test.eximbay.com/v1/payments/ready")

val body = "{\n" +
		        "\"payment\" : {\n" +
		        "\"transaction_type\" : \"AUTHORIZE\",\n" +
		        "\"order_id\" : \"20230202163035\",\n" +
		        "\"currency\" : \"USD\",\n" +
		        "\"amount\" : \"10",\n" +
		        "\"lang\" : \"EN\"\n" +
		        "},\n" +
		        "\"merchant\" : {\n" +
		        "\"mid\" : \"1849705C64\"\n" +
		        "},\n" +
		        "\"buyer\" : {\n" +
		        "\"name\" : \"eximbay\",\n" +
		        "\"email\" : \"test@test.com\"\n" +
		        "},\n" +
		        "\"url\" : {\n" +
		        "\"return_url\" : \"eximbay.com\",\n" +
		        "\"status_url\" : \"eximbay.com\"\n" +
		        " }\n" +
		        "}"

var entity = HttpEntity<String>(body, headers)
var response = restTemplate.exchange(url, HttpMethod.POST, entity, String::class.java)

println(response.body)
                      
                  

3. 결제창을 호출하세요

결제 준비 API로 fgkey를 생성했다면, 응답 값으로 받은 fgkey 그대로 사용해 SDK를 호출하세요.
승인 결제창을 호출하려면 transaction_typeAUTHORIZE 를 넣어야 합니다.

SDK를 사용해 결제창을 띄울 때는 반드시 앞서 호출한 결제 준비 API로 보낸 요청 파라미터와 일치하는 값을 보내야 합니다.
파라미터 값이 달라지면 fgkey가 달라지기 때문에 결제가 실패합니다.

                
<script type="text/javascript" src="https://api-test.eximbay.com/v1/javascriptSDK.js"></script>
                
              

엑심베이 SDK 라이브러리 설치가 완료되면 EXIMBAY 객체로 request_pay 메서드를 호출할 수 있습니다. 브라우저에 결제창이 띄워지면 결제창 연동 성공입니다.

                
<button type="button" onclick="payment();">결제 창 연동</button>
	.
	.
	.
<script type="text/javascript">
      function payment() {
          EXIMBAY.request_pay({
              "fgkey" : "0E9BE04BA239A519E68171F26B68604ADA0A85C8350DBF5C8C0FCCF98461DB09"
              "payment" : {
                  "transaction_type" : "AUTHORIZE",
                  "order_id" : "20230202163035",
                  "currency" : "USD",
                  "amount" : "10",
                  "lang" : "EN"
              },
              "merchant" : {
                  "mid" : "1849705C64"

              },
              "buyer" : {
                  "name" : "eximbay",
                  "email" : "test@test.com"
              },
              "url" : {
                  "return_url" : "eximbay.com",
                  "status_url" : "eximbay.com"
              }
          });
      }
</script>
                
              

결제 정보 파라미터

결제창을 띄우기 위해 필요한 상세 파라미터 정보를 확인할 수 있습니다.

fgkey string

필수
FGKey입니다. 결제 준비 API에서 받은 fgkey를 그대로 보내야 합니다. 자세한 내용은 결제 준비를 참고하세요.

payment object

transaction_type string

필수
연동하려는 결제창 타입 구분을 위해 필요합니다. 자세한 내용은 준비하기를 참고하세요.
  1. AUTHORIZE

    : 결제창이 호출되면 인증과 승인까지 자동으로 처리되며, 매입(정산)은 가맹점에서 수동 매입 API를 호출해 요청해야 합니다

* 수동 매입 API를 사용하려면 별도의 계약이 필요합니다.

order_id string

필수

가맹점에서 주문 건을 구분하기 위해 발급한 유일한 값입니다. 실패한 주문에 같은 값을 사용할 수 없습니다.

currency string

필수

결제에 사용한 통화 단위입니다 . 자세한 내용은 통화 코드를 참고하세요.

amount string

필수

총 결제 금액입니다. , 는 사용할 수 없으며, 0보다 큰 숫자만 보낼 수 있습니다.

lang string

필수

결제창에서 사용할 수 있는 언어 코드입니다. 결제창 지원 언어 코드를 참고하세요.

payment_method string

결제수단 코드입니다. 결제수단 코드를 참고하세요. 결제 수단이 지정된 경우, 해당 결제 수단 페이지로 바로 이동합니다.

multi_payment_method string

여러 결제 수단을 지정할 때 보내야 합니다. 구분자 - 를 사용해 지정할 수 있습니다. (e.g. P000-P185-P186)

*해외 결제 연동시 사용할 수 있습니다.

merchant object

mid string

필수

엑심베이에서 가맹점을 구분하기 위해 발급한 고유 가맹점 ID입니다.

shop string

상점명입니다. 가맹점명과 다를 경우 사용해주세요.

partner_code string

파트너 코드입니다.

url object

return_url string

필수

구매자가 결제 결과를 확인화면에서 결제창을 종료할 경우 이동하는 가맹점 페이지의 url 정보입니다.
returnurl은 고객 브라우저 기반으로 동작하므로, 브라우저 강제 종료 시, 호출되지 않을 수 있습니다.

status_url string

필수
결제 처리가 끝나면 Backend로 호출되는 가맹점 페이지로 returnurl와 파라미터가 동일합니다.
브라우저에서 호출되지 않으므로, 스크립트, 쿠키, 세션은 사용할 수 없습니다.

* DB작업 및 결제 프로세스 처리는 statusurl에서 해야 합니다. 고객이 결제창을 강제 종료하면 returnurl이 호출되지 않을 수 있습니다.

* 중복 호출이 가능하므로, 결제가 중복 처리되지 않게 주의가 필요합니다.

buyerobject

name string

필수

구매자명입니다

phone_number string

구매자 전화번호입니다.

email string

필수

구매자 이메일 주소입니다. (결제완료 메일 발송을 위해 필요합니다.)

tax object*국내결제 시 필요한 파라미터 정보입니다.

receipt_status string

현금영수증 발급 여부를 Y, N 중 선택할 수 있습니다. 실시간 계좌이체를 사용하는 경우 현금영수증 발급을 위해서 반드시 Y로 요청해야 현금영수증 발급이 가능합니다.

amount_tax_free string

전체 결제 금액 중 면세 금액입니다.

amount_taxable string

전체 결제 금액 중 과세 금액입니다.

amount_vat string

전체 결제 금액 중 부가세 금액입니다.

amount_service_fee string

전체 결제 금액 중 봉사료입니다.

Note. 1 - 네이버페이 포인트로 결제를 진행하는 경우 tax 객체 내 파라미터 모두를 필수로 보내야 합니다.

other_param object

param1 string

가맹점이 필요한 경우 사용할 수 있는 예비 파라미터입니다.

param2 string

가맹점이 필요한 경우 사용할 수 있는 예비 파라미터입니다.

product array 배열의 길이는 최대 3입니다.

name string

필수

주문한 상품의 상품명입니다.

quantity string

필수

주문한 상품의 수량입니다.

unit_price string

필수

주문한 상품의 상품별 단가입니다.

link string

필수

주문한 상품의 판매 링크입니다. 오픈마켓에서 발생한 주문의 경우 필수로 보내야 합니다.

surcharge array 배열의 길이는 최대 3입니다.

name string

추가 금액의 항목명입니다. (e.g. 쿠폰할인, 배송비)

quantity string

추가된 항목의 수량입니다. 0보다 큰 숫자를 보내야 합니다.

unit_price string

추가된 항목의 단가입니다. , 는 포함할 수 없으며, 음수로 보낼 수 있습니다. (e.g. -100.50, 9.15)

ship_to object

city string

배송지 도시 정보입니다.

country string

배송지 국가 정보입니다. ISO 3166 두 자리 국가 코드 형식입니다.

first_name string

배송받는 사람의 이름입니다.

last_name string

배송받는 사람의 성입니다.

phone_number string

배송받는 사람의 연락처입니다. 국가번호가 포함될 수 있습니다.

postal_code string

배송지 우편번호입니다.

state string

배송지 주 정보입니다. 배송지가 미국(US) 또는 캐나다(CA)인 경우 사용할 수 있습니다. 지역 코드를 참고하세요.

street1 string

배송지 상세주소입니다.

bill_to object

city string

청구지 도시 정보입니다.

country string

배송지 국가 정보입니다. ISO 3166 두 자리 국가 코드 형식입니다.

first_name string

청구 카드 명의자 이름입니다.

last_name string

청구 카드 명의자 성입니다.

phone_number string

청구 카드 명의자 연락처입니다. 국가번호가 포함될 수 있습니다.

postal_code string

청구지 우편번호입니다.

state string

청구지 주 정보입니다. 청구지가 미국(US) 또는 캐나다(CA)인 경우 사용할 수 있습니다. 지역 코드를 참고하세요.

street1 string

청구지 상세주소입니다.

settings object

display_type string

브라우저에서 결제창이 열리는 방법을 정할 수 있습니다. P,R중 하나입니다. 보내지 않으면 P가 기본으로 보내집니다.
  1. P

    : 팝업 형태로 결제창 생성

  2. R

    : 가맹점 화면에서 결제창 화면으로 이동

autoclose string

결제가 완료됐을 때 브라우저에서 결제창이 닫히는 방식을 정할 수 있습니다.
  1. Y,N 중 하나입니다. 보내지 않으면 N이 기본으로 보내집니다.

  2. Y

    : 가맹점 화면으로 이동

  3. N

    : 결제창의 완료 화면으로 이동(기본)

call_from_app string

클라이언트 환경 구분을 위해 사용됩니다. Y , N 중 하나입니다. 보내지 않으면 N이 기본으로 보내집니다.
  1. Y

    :앱(iOS, AOS) 환경에서 호출

  2. N

    : 웹 브라우저 환경에서 호출

  3. *

    앱 환경에서 결제창을 호출할 경우 웹뷰에서 외부 앱 열기의 연동 방법을 확인해주세요.

call_from_scheme string

외부 앱에서 가맹점 앱으로 돌아오기 위해 필요한 앱 스킴(App URL Scheme)입니다.
  1. *

    앱 환경에서 결제창을 호출할 경우 웹뷰에서 외부 앱 열기의 연동 방법을 확인해주세요.

issuer_country string

해외 결제를 사용하는 가맹점에서 국내 결제를 사용하고 싶을 때 필요한 파라미터입니다. 파라미터에 KR을 추가하면
국내 결제창이 열립니다.

ostype string

결제창이 열리는 클라이언트 환경 정보입니다. P , M 중 하나이며 P가 기본 값입니다.

  1. P

    : PC 환경 (기본값)

  2. M

    : 모바일 환경

virtualaccount_expiry_datestring

국내 가상계좌 결제의 입금만료기한을 설정할 수 있습니다. YYYYMMDDHH24로 원하는 입금만료기한을 설정할 수 있습니다.

4. 결제를 검증하세요

결제 검증 API를 호출해 위변조를 방지하세요. 위변조 방지를 위해 가맹점은 응답 파라미터를 그대로 결제 검증 API로 보내 엑심베이 서버에서 응답으로 보낸
fgkey와 일치하는지 확인할 수 있습니다. 자세한 내용은 SDK 응답받은 후 준비에서 확인할 수 있습니다.

엑심베이 서버에서 status_url로 응답한 파라미터는 아래와 같이 로 응답한 파라미터는 아래와 같이 쿼리스트링 형식으로 보내집니다.

                
card_number4=1111&dm_reject=&card_number1=4111&mid=1849705C64&foreign_currency=&card_holder=TESTTEST&dm_review=&base_amount=&currency=USD&pay_to=EXIMBAY.COM&email=test%40test.com&payment_method=P101&transaction_id=1849705C6420230202000039&transaction_date=20230202172431&base_currency=&amount=10&dcc_rate=&dm_decision=&transaction_type=AUTHORIZE&param3=OPENAPI&resmsg=Success.&foreign_rate=&version=230&param1=&rescode=0000&param2=&auth_code=936715&fgkey=1BC5260BF39C9B47788AAEA26FA4D6972B4A9617B13649533D392B3F63FC94CC&base_rate=&foreign_amount=&order_id=20230202163035&access_country=KR
                
              

statusurl을 정상적으로 수신되면 주문완료 처리 후 반드시 해당 페이지의 마지막에 rescode와 resmsg를 출력해야 합니다.
• 처리성공: rescode=0000&resmsg=Success • 처리실패: recode=실패코드&resmsg=실패메시지

status_url은 중복 호출될 수 있습니다. 주문이 중복 처리되지 않도록 주의가 필요하며, transaction_id로 중복승인과 호출에 대해서 확인할 수 있습니다.

쿼리스트링으로 응답받은 파라미터를 빠짐없이 결제 검증 API에 그대로 넣어 요청해주세요. 결제 검증 API로 유효성 검증에 성공하면 결제가 마무리됩니다.

요청
      
curl --request POST 'https://api-test.eximbay.com/v1/payments/verify \
--header 'Authorization: Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=' \
--header 'Content-Type: application/json' \
--data '{
"data" : "card_number4=1111&dm_reject=&card_number1=4111&mid=1849705C64&foreign_currency=&card_holder=TESTTEST&dm_review=&base_amount=&currency=USD&pay_to=EXIMBAY.COM&email=test%40test.com&payment_method=P101&transaction_id=1849705C6420230202000039&transaction_date=20230202172431&base_currency=&amount=10&dcc_rate=&dm_decision=&transaction_type=AUTHORIZE&param3=OPENAPI&resmsg=Success.&foreign_rate=&version=230&param1=&rescode=0000&param2=&auth_code=936715&fgkey=1BC5260BF39C9B47788AAEA26FA4D6972B4A9617B13649533D392B3F63FC94CC&base_rate=&foreign_amount=&order_id=20230202163035&access_country=KR
		    }'
      
    
      
        RestTemplate restTemplate = new RestTemplate();
  
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "application/json");
        headers.add("Authorization", "Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=");
        
        URI url = URI.create("https://api-test.eximbay.com/v1/payments/verify");
        
        String body = "{\n" +
        "data" : "card_number4=1111&dm_reject=&card_number1=4111&mid=1849705C64&foreign_currency=&card_holder=TESTTEST&dm_review=&base_amount=&currency=USD&pay_to=EXIMBAY.COM&email=test%40test.com&payment_method=P101&transaction_id=1849705C6420230202000039&transaction_date=20230202172431&base_currency=&amount=10&dcc_rate=&dm_decision=&transaction_type=AUTHORIZE&param3=OPENAPI&resmsg=Success.&foreign_rate=&version=230&param1=&rescode=0000&param2=&auth_code=936715&fgkey=1BC5260BF39C9B47788AAEA26FA4D6972B4A9617B13649533D392B3F63FC94CC&base_rate=&foreign_amount=&order_id=20230202163035&access_country=KR
        "
        			        "}";
        
        HttpEntity<String> entity = new HttpEntity<>(body, headers);
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
        
        System.out.println(response.getBody());
      
    
      
        <?php
        $url = 'https://api-test.eximbay.com/v1/payments/verify';
        $data = '{
        "data" : "card_number4=1111&dm_reject=&card_number1=4111&mid=1849705C64&foreign_currency=&card_holder=TESTTEST&dm_review=&base_amount=&currency=USD&pay_to=EXIMBAY.COM&email=test%40test.com&payment_method=P101&transaction_id=1849705C6420230202000039&transaction_date=20230202172431&base_currency=&amount=10&dcc_rate=&dm_decision=&transaction_type=AUTHORIZE&param3=OPENAPI&resmsg=Success.&foreign_rate=&version=230&param1=&rescode=0000&param2=&auth_code=936715&fgkey=1BC5260BF39C9B47788AAEA26FA4D6972B4A9617B13649533D392B3F63FC94CC&base_rate=&foreign_amount=&order_id=20230202163035&access_country=KR
        "
        }';
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo='));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
        curl_setopt($ch, CURLOPT_POST, 1);
        
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $response  = curl_exec($ch);
        
        echo $response;
        curl_close($ch);
        ?>
      
    
      
 import requests
  import json
  
  url = "https://api-test.eximbay.com/v1/payments/verify"
  headers = {
  "Authorization": "Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=",
  "Content-Type": "application/json"
  }
  
  request = {
  "data" : "card_number4=1111&dm_reject=&card_number1=4111&mid=1849705C64&foreign_currency=&card_holder=TESTTEST&dm_review=&base_amount=&currency=USD&pay_to=EXIMBAY.COM&email=test%40test.com&payment_method=P101&transaction_id=1849705C6420230202000039&transaction_date=20230202172431&base_currency=&amount=10&dcc_rate=&dm_decision=&transaction_type=AUTHORIZE&param3=OPENAPI&resmsg=Success.&foreign_rate=&version=230&param1=&rescode=0000&param2=&auth_code=936715&fgkey=1BC5260BF39C9B47788AAEA26FA4D6972B4A9617B13649533D392B3F63FC94CC&base_rate=&foreign_amount=&order_id=20230202163035&access_country=KR
  "
  }
  response = requests.post(url, headers=headers, data=json.dumps(request))
  
  print(response.text)
      
    
      
var request = require('request');
  var options = {
  'method': 'POST',
  'url': 'https://api-test.eximbay.com/v1/payments/verify',
  'headers': {
    'Authorization': 'Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    "data" : "card_number4=1111&dm_reject=&card_number1=4111&mid=1849705C64&foreign_currency=&card_holder=TESTTEST&dm_review=&base_amount=&currency=USD&pay_to=EXIMBAY.COM&email=test%40test.com&payment_method=P101&transaction_id=1849705C6420230202000039&transaction_date=20230202172431&base_currency=&amount=10&dcc_rate=&dm_decision=&transaction_type=AUTHORIZE&param3=OPENAPI&resmsg=Success.&foreign_rate=&version=230&param1=&rescode=0000&param2=&auth_code=936715&fgkey=1BC5260BF39C9B47788AAEA26FA4D6972B4A9617B13649533D392B3F63FC94CC&base_rate=&foreign_amount=&order_id=20230202163035&access_country=KR
    "
  })
  
  };
  request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
  });
      
    
        
 string uri = "https://api-test.eximbay.com/v1/payments/verify";
  string body = "{\n" +
  "data" : "card_number4=1111&dm_reject=&card_number1=4111&mid=1849705C64&foreign_currency=&card_holder=TESTTEST&dm_review=&base_amount=&currency=USD&pay_to=EXIMBAY.COM&email=test%40test.com&payment_method=P101&transaction_id=1849705C6420230202000039&transaction_date=20230202172431&base_currency=&amount=10&dcc_rate=&dm_decision=&transaction_type=AUTHORIZE&param3=OPENAPI&resmsg=Success.&foreign_rate=&version=230&param1=&rescode=0000&param2=&auth_code=936715&fgkey=1BC5260BF39C9B47788AAEA26FA4D6972B4A9617B13649533D392B3F63FC94CC&base_rate=&foreign_amount=&order_id=20230202163035&access_country=KR
  "
  			        "}";
  
  WebClient webClient = new WebClient();
  webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
  webClient.Headers[HttpRequestHeader.Authorization] = "Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=";
  webClient.Encoding = UTF8Encoding.UTF8;
  string responseJSON = webClient.UploadString(uri, body);
  
  Console.Write(responseJSON);
        
    
        
 val restTemplate =  RestTemplate()
  val headers = HttpHeaders()
  headers.add("Content-Type", "application/json")
  headers.add("Authorization", "Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=")
  
  var url = URI.create("https://api-test.eximbay.com/v1/payments/verify")
  
  val body = "{\n" +
  "data" : "card_number4=1111&dm_reject=&card_number1=4111&mid=1849705C64&foreign_currency=&card_holder=TESTTEST&dm_review=&base_amount=&currency=USD&pay_to=EXIMBAY.COM&email=test%40test.com&payment_method=P101&transaction_id=1849705C6420230202000039&transaction_date=20230202172431&base_currency=&amount=10&dcc_rate=&dm_decision=&transaction_type=AUTHORIZE&param3=OPENAPI&resmsg=Success.&foreign_rate=&version=230&param1=&rescode=0000&param2=&auth_code=936715&fgkey=1BC5260BF39C9B47788AAEA26FA4D6972B4A9617B13649533D392B3F63FC94CC&base_rate=&foreign_amount=&order_id=20230202163035&access_country=KR
  "
  		        "}"
  
  var entity = HttpEntity<String>(body, headers)
  var response = restTemplate.exchange(url, HttpMethod.POST, entity, String::class.java)
  
  println(response.body)
        
    

응답

응답코드로 0000을 받으면 결제 성공입니다.

                    
{
  	"rescode": "0000",
  	"resmsg": "Success",
  }
                    
                  

5. 정산을 요청하세요

승인 결제창으로 결제가 이루어지면 익일에 자동으로 매입이 되지 않습니다. 엑심베이를 통해 거래에 대한 정산을 받으려면 가맹점에서 정산 받기 원하는 거래 내역의 매입을 요청해야 합니다.

정산을 받기 위해 수동 매입 API을 사용해 매입 요청을 해주세요.

자세한 설명은 수동 매입 API에서 확인할 수 있습니다.