지급대행 API

지급대행 API는 서브몰을 정보를 관리하는 API와 등록된 서브몰에 금액을 지급할 때 사용하는 지급대행 API로 나뉩니다. 서브몰 정보를 등록하고, 지급할 수 있는 잔액이 충분한 지 확인한 뒤 지급대행 요청 API를 호출해서 지급을 완료해보세요.

API를 사용하기 위해 필요한 키 정보와 인증 방식, 보안에 대한 정보는 API 사용하기에서 자세히 알아보세요.

서브몰 정보 관리하기

먼저 가맹점에서 API를 통해 서브몰 정보를 등록해둡니다. 서브몰 정보에는 아래와 같이 정산받을 은행계좌 정보가 포함되어야 합니다.

요청
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.tosspayments.com/v1/payouts/sub-malls"))
    .header("Authorization", "Basic dGVzdF9za196WExrS0V5cE5BcldtbzUwblgzbG1lYXhZRzVSOg==")
    .header("Content-Type", "application/json")
    .method("POST", HttpRequest.BodyPublishers.ofString("{\"subMallId\":\"testmall100\",\"type\":\"CORPORATE\",\"companyName\":\"테스트몰100\",\"representativeName\":\"김토페\",\"businessNumber\":\"1200220000\",\"account\":{\"bank\":\"기업\",\"accountNumber\":\"34000000000011\"}}"))
    .build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

Path 파라미터에 subMallId를 포함해 서브몰 정보를 수정하거나 삭제하는 요청을 보낼 수 있습니다.

요청
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.tosspayments.com/v1/payouts/sub-malls/testmall100/delete"))
    .header("Authorization", "Basic dGVzdF9za196WExrS0V5cE5BcldtbzUwblgzbG1lYXhZRzVSOg==")
    .method("POST", HttpRequest.BodyPublishers.noBody())
    .build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

서브몰 정보를 수정하면 응답으로 변경된 서브몰 정보가 돌아오고, 삭제했을 때는 삭제된 서브몰 ID가 응답으로 돌아옵니다. 삭제된 서브몰 ID는 다시 사용할 수 없습니다.

서브몰 관리 API에 대해 자세히 알아보세요

지급대행 요청하기

지급대행 요청을 하기 전에 지급 가능한 잔액 조회 API로 가맹점의 계좌 잔액이 서브몰에 지급할 수 있을만큼 충분한지 확인해보세요. 잔액이 충분하면 지급대행 요청 API를 사용할 수 있습니다.

지급대행을 요청할 때는 아래와 같이 서브몰 ID와 지급할 액수, 지급할 날짜를 요청 본문에 포함해야 합니다.

요청
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.tosspayments.com/v1/payouts/sub-malls/settlements"))
    .header("Authorization", "Basic dGVzdF9za196WExrS0V5cE5BcldtbzUwblgzbG1lYXhZRzVSOg==")
    .header("Content-Type", "application/json")
    .method("POST", HttpRequest.BodyPublishers.ofString("[{\"subMallId\":\"testmall100\",\"payoutAmount\":100,\"payoutDate\":\"2022-01-03\"},{\"subMallId\":\"testmall200\",\"payoutAmount\":200,\"payoutDate\":\"2022-01-03\"}]"))
    .build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

요청에 성공하면 아래와 같이 Payout 객체가 담긴 배열이 돌아옵니다.

응답
[
{
"payoutKey": "FPA1000000001",
"subMallId": "testmall100",
"payoutAmount": 100,
"payoutDate": "2022-01-03",
"status": "REQUESTED",
"requestedAt": "2022-01-01T00:00:00+09:00",
"metadata": null
},
{
"payoutKey": "FPA1000000002",
"subMallId": "testmall200",
"payoutAmount": 200,
"payoutDate": "2022-01-03",
"status": "REQUESTED",
"requestedAt": "2022-01-01T00:00:00+09:00",
"metadata": null
}
]
JSON

지급대행 API에 대해 자세히 알아보세요

내용이 도움 되셨나요?
  • 더 궁금한 내용이 있나요?
  • 코드 샘플을 참고하세요
  • 기술지원이 필요한가요?
    디스코드 채팅|이메일 보내기