수동 매입 요청하기

수동 매입 API를 사용해 결제건의 정산을 요청하세요. 수동 매입을 사용할 수 있는 transaction_type의 결제창으로 결제를 성공했다면 수동 매입 API를 사용해 엑심베이에 매입을 요청할 수 있습니다.

카드 결제가 성공하면 엑심베이는 카드사에 매입을 요청하고 카드사는 청구된 금액을 가맹점에게 정산해줍니다. 일반적으로 결제 승인 후 익일에 자동으로 엑심베이를 통해 카드사로 매입 처리가 진행됩니다.

가맹점은 두 가지 방법으로 매입을 진행할 수 있습니다.
  1. 1. 자동 매입:

    엑심베이 결제를 연동할 때 transaction_type으로 PAYMENT 또는 PAYMENT_PA를 사용하는 경우에 자동으로 매입됩니다.

  2. 2. 수동매입 :

    엑심베이 결제를 연동할 때 transaction_type으로 AUTHORIZE 또는 AUTHORIZE_PA를 사용하는 경우 수동 매입 API를 사용해 엑심베이로 매입을 요청하면 정산을 받을 수 있습니다.

승인과 매입이 따로 진행되는 결제창을 사용하는 가맹점은 수동 매입 API를 사용해 엑심베이에 매입을 요청해야 합니다.

수동 매입 API는 별도의 계약을 통해 사용할 수 있습니다.

수동 매입 API 호출하기

승인된 결제에 대한 수동 매입을 요청하려면 결제 승인 요청 결과로 발급 받은 transaction_id 가 필요합니다.
수동 매입 API 엔드포인트에  transaction_id를 Path 파라미터로 추가해서 API를 호출하세요.

요청
                      
curl --request POST 'https://api-test.eximbay.com/v1/payments/{transaction_id}/capture' \
--header 'Authorization: Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=' \
--header 'Content-Type: application/json' \
--data '{
  "mid" : "1849705C64",
  "payment" : {
    "order_id" : "20220902101716",
    "currency" : "USD",
    "amount" : "1",
    "lang" : "EN"
  }
}'
                      
                    
                      
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/{transaction_id}/capture");

String body = "{\n" +
				      "\"mid\" : \"1849705C64\",\n" +
				      "\"payment\" : {\n" +
				      "\"order_id\" : \"20220902101716\",\n" +
				      "\"currency\" : \"USD\",\n" +
				      "\"amount\" : \"1\",\n" +
				      "\"lang\" : \"EN\"\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/{transaction_id}/capture';
$data = '{
  "mid" : "1849705C64",
  "payment" : {
    "order_id" : "20220902101716",
    "currency" : "USD",
    "amount" : "1",
    "lang" : "EN"
  }
}';

$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/{transaction_id}/capture"
headers = {
  "Authorization": "Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=",
  "Content-Type": "application/json"
}

request = {
  "mid" : "1849705C64",
  "payment" : {
    "order_id" : "20220902101716",
    "currency" : "USD",
    "amount" : "1",
    "lang" : "EN"
  }
}

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/{transaction_id}/capture',
  'headers': {
    'Authorization': 'Basic dGVzdF8xODQ5NzA1QzY0MkMyMTdFMEIyRDo=',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    "mid": "1849705C64",
    "payment": {
      "order_id": "20220902101716",
      "currency": "USD",
      "amount": "1",
      "lang": "EN"
    }
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
                      
                    
                        
string uri = "https://api-test.eximbay.com/v1/payments/{transaction_id}/capture";
string body = "{\n" +
				      "\"mid\" : \"1849705C64\",\n" +
				      "\"payment\" : {\n" +
				      "\"order_id\" : \"20220902101716\",\n" +
				      "\"currency\" : \"USD\",\n" +
				      "\"amount\" : \"1\",\n" +
				      "\"lang\" : \"EN\"\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/{transaction_id}/capture")

val body = "{\n" +
            "\"mid\" : \"1849705C64\",\n" +
            "\"payment\" : {\n" +
            "\"order_id\" : \"20220902101716\",\n" +
            "\"currency\" : \"USD\",\n" +
            "\"amount\" : \"1\",\n" +
            "\"lang\" : \"EN\"\n" +
            " }\n" +
            "}"

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

println(response.body)
                        
                    

요청한 수동 매입이 성공하면 resmsgSuccess가 돌아옵니다.

                  
{
  "rescode": "0000",
  "resmsg": "Success.",
  "mid": "1849705C64",
  "payment": {
      "order_id": "20220922114007",
      "currency": "USD",
      "amount": "1",
      "transaction_id": "1849705C6420220922000016",
      "captured_date": "20220922114212",
      "partially_cancelable ": "Y"
  }
}