스마트 라우팅 - 연동하기

멀티PG 환경을 클릭 한 번으로 쉽게 만들 수 있는 결제 트래픽 분산 자동화 서비스 입니다.

스마트 라우팅 기능이 궁금하다면 스마트 라우팅 기능 소개를 확인해 보세요!

스마트 라우팅을 이용하시려면 관리자콘솔에서 스마트 라우팅 그룹을 먼저 설정해야합니다. 그룹 설정 방법이 궁금하다면 스마트 라우팅 그룹 설정 가이드를 확인해 보세요.

SDK(결제창) 인증결제 연동하기

SDK를 이용하는 경우 결제 호출 시 생성한 스마트 라우팅 그룹의 ID를 전용 파라미터인 channelGroupId에 지정하여 사용이 가능합니다. 이 외에 다른 결제 기능들은 기존과 동일하게 사용이 가능합니다. 단, 결제대행사 별로 지원하는 기능이 다를 수 있으니 그룹 내에서 사용하는 모든 결제대행사에서 지원하는 기능만 사용하시길 권장드립니다.

인증결제와 관련된 자세한 내용은 인증 결제 연동하기 문서를 참고하시기 바랍니다.

예제 코드

IMP.request_pay(
  {
    // 결제대행사를 지정할 때 사용한 channelKey, pg 대신
    // channelGroupId 파라미터에 스마트 라우팅 그룹 ID를 설정합니다.
    channelGroupId: "channel-group-live-f042e8e2-92f1-4f68-ad61-cec6ede41529",
    pay_method: "card", //결제수단 선택
    merchant_uid: "ORD20180131-0000011", //고객사 주문번호
    name: "Norway swivel chair", //주문명
    amount: 1000, // 결제 금액
    //고객 정보
    buyer_email: "gildong@gmail.com",
    buyer_name: "Hong Gildong",
    buyer_tel: "010-4242-4242",
    buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul",
    buyer_postcode: "01181",
  },
  function (rsp) {
    // callback
    if (rsp.success) {
      // Payment is successful
    } else {
      // Payment failed
    }
  },
);

주요 파라미터

channelGroupId: string

스마트 라우팅 그룹 ID

관리자 콘솔의 [연동 관리] → [스마트 라우팅] 메뉴에서 확인할 수 있습니다.

스마트 라우팅 그룹 ID를 지정하여 결제창을 호출하면, 스마트 라우팅 그룹 내 설정된 채널 비율에 따라 확률 기반으로 하나의 결제대행사가 호출됩니다.

필수 파라미터

각 파라미터에 대한 상세한 설명은 결제요청 파라미터 문서를 참고하시기 바랍니다.

merchant_uid: string

고객사 주문번호

name: string

주문명

amount: number

결제금액

pay_method: string

결제수단 구분코드

custom_data: object

사용자 정의 데이터

결제 응답시 echo 로 받아보실 수 있는 필드 입니다.

JSON notation(string)으로 저장됩니다.

주문 건에 대해 부가정보를 저장할 공간이 필요할 때 사용합니다

tax_free: number

면세금액

결제금액 중 면세금액에 해당하는 금액을 입력합니다.

vat_amount: number

부가세

결제금액 중 부가세에 해당하는 금액을 입력합니다. (기본값: null)

vbank_due: string

가상계좌 입금기한

스마트 라우팅을 이용한 가상계좌 결제 사용 시 필수 입력해야 합니다.

다음과 같은 형식으로 설정이 가능합니다 :

YYYY-MM-DD

YYYYMMDD

YYYY-MM-DD HH:mm:ss

YYYYMMDDHHmmss

buyer_tel: string

주문자 연락처

일부 PG사에서 해당 필드 누락시 오류 발생

buyer_email: string

주문자 이메일

일부 PG사에서 해당 필드 누락시 오류 발생(페이먼트월)

기타 파라미터는 결제요청 파라미터 문서를 참고하시길 바랍니다.

유의사항

API 수기(키인)결제 연동하기

API를 이용하는 경우 결제 호출 시 생성한 스마트 라우팅 그룹의 ID를 전용 파라미터인 channelGroupId에 지정하여 사용이 가능합니다. 이 외에 다른 결제 기능들은 기존과 동일하게 사용이 가능합니다. 단, 결제대행사 별로 지원하는 기능이 다를 수 있으니 그룹 내에서 사용하는 모든 결제대행사에서 지원하는 기능만 사용하시길 권장드립니다.

수기(키인)결제와 관련된 자세한 내용은 비인증결제 연동하기 문서를 참고하시기 바랍니다.

예제 코드

server-side
// card_number, expiry, birth, pwd_2digit 등 정보를 전달받습니다. // 포트원 비인증 결제(일회성) API 호출 const onetimeResponse = await fetch( "https://api.iamport.kr/subscribe/payments/onetime", { method: "POST", headers: { Authorization: `Bearer ${ACCESS_TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify({ channelGroupId: "channel-group-live-f042e8e2-92f1-4f68-ad61-cec6ede41529", card_number: "YYYY-YYYY-YYYY-YYYY", // 카드 번호 16자리 expiry: "YYYY-MM", // 카드 유효기간 birth: "YYMMDD", // 생년 월일. 무기명 법인카드의 경우 사업자 번호 10자리 입력 pwd_2digit: "NN", //카드 비밀번호 앞 2자리 // 중략... }), }, );

주요 파라미터

channelGroupId: string

스마트 라우팅 그룹 ID

관리자 콘솔의 [연동 관리] → [스마트 라우팅] 메뉴에서 확인할 수 있습니다.

스마트 라우팅 그룹 ID를 지정하여 결제창을 호출하면, 스마트 라우팅 그룹 내 설정된 채널 비율에 따라 확률 기반으로 하나의 결제대행사가 호출됩니다.

필수 파라미터

merchant_uid: string

고객사 거래 고유번호

amount: number

주문 금액

card_number: string

카드번호

(dddd-dddd-dddd-dddd) 기재 양식을 유의하세요.

expiry: string

카드 유효기간

(YYYY-MM) 기재 양식을 유의하세요.

유의사항

API 빌링키 발급 및 정기결제 연동하기

빌링키 발급 API 호출 시 생성한 스마트 라우팅 그룹의 ID를 전용 파라미터인 channelGroupId에 지정하여 사용이 가능합니다. channelGroupId를 지정하여 빌링키 발급 요청 시 그룹 내 모든 채널로 빌링키 발급을 시도합니다. 이후 발급된 결제대행사의 빌링키가 모두 포트원 빌링키에 맵핑됩니다.

스마트 라우팅 기능을 이용하여 발급된 포트원 빌링키는 슈퍼빌링키라고 부릅니다.

해당 빌링키로 빌링키 결제 또는 예약결제 API를 이용하여 결제 요청 시 해당 스마트 라우팅 그룹 내 채널 비율 설정에 따라 결제를 요청합니다.

이 외에 빌링키 발급 및 결제 요청 시 다른 기능들은 기존과 동일하게 사용이 가능합니다. 단, 결제대행사 별로 지원하는 기능이 다를 수 있으니 그룹 내에서 사용하는 모든 결제대행사에서 지원하는 기능만 사용하시길 권장드립니다.

빌링키 결제와 관련된 자세한 내용은 비인증결제 연동하기 문서를 참고하시기 바랍니다.

예제 코드

const issueResponse = await fetch(
  `https://api.iamport.kr/subscribe/customers/${customer_uid}`,
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${ACCESS_TOKEN}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      channelGroupId: "channel-group-live-f042e8e2-92f1-4f68-ad61-cec6ede41529",
      customer_id: customer_id, //고객 식별 정보로 고객사에서 기입
      card_number: "YYYY-YYYY-YYYY-YYYY", // 카드 번호 16자리
      expiry: "YYYY-MM", // 카드 유효기간
      birth: "YYMMDD", // 생년 월일. 무기명 법인카드의 경우 사업자 번호 10자리 입력
      pwd_2digit: "NN", //카드 비밀번호 앞 2자리
      // 중략...
    }),
  },
);
if (!issueResponse.ok)
  throw new Error(`issueResponse: ${await issueResponse.json()}`);
const {
  billingKeyInfo: { customer_uid },
} = await issueResponse.json();
// 빌링키가 발급되었습니다! 빌링키를 저장하거나 결제하는 로직을 구성하세요.
// 포트원 빌링키 결제 API 호출
const paymentResponse = await fetch(
  "https://api.iamport.kr/subscribe/payments/again",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${ACCESS_TOKEN}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      customer_uid: "customer_uid", // 슈퍼 빌링키
      merchant_uid: "merchant_uid",
      name: "월간 이용권 정기결제",
      // 빌링키 결제 API를 참고해 고객 정보를 채워주세요.
      amount: {
        total: 8900,
      },
      currency: "KRW",
    }),
  },
);
if (!paymentResponse.ok)
  throw new Error(`paymentResponse: ${await paymentResponse.json()}`);
server-side
// 결제 예약 const paymentResponse = await fetch( "https://api.iamport.kr/subscribe/payments/schedule", { method: "POST", headers: { Authorization: `Bearer ${ACCESS_TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify({ customer_uid: "gildong_0001_1234", // 슈퍼 빌링키 schedules: [ { merchant_uid: "order_monthly_0001", // 주문 번호 schedule_at: 1519862400, // 결제 시도 시각 in Unix Time Stamp. 예: 다음 달 1일 amount: 8900, name: "월간 이용권 정기결제", buyer_name: "홍길동", buyer_tel: "01012345678", buyer_email: "gildong@gmail.com", // 중략... }, ], }), }, );

주요 파라미터

channelGroupId: string

스마트 라우팅 그룹 ID

관리자 콘솔의 [연동 관리] → [스마트 라우팅] 메뉴에서 확인할 수 있습니다.

스마트 라우팅 그룹 ID를 지정하여 결제창을 호출하면, 스마트 라우팅 그룹 내 설정된 채널 비율에 따라 확률 기반으로 하나의 결제대행사가 호출됩니다.

스마트 라우팅 그룹 ID를 지정하여 빌링키 발급 API를 호출하면, 스마트 라우팅 그룹 내 활성화 된 채널들에 대해 빌링키 발급을 시도합니다.

필수 파라미터

customer_uid: string

구매자의 결제 수단 식별 고유번호

card_number: string

카드번호

(dddd-dddd-dddd-dddd) 기재 양식을 유의하세요.

expiry: string

카드 유효기간

(YYYY-MM) 기재 양식을 유의하세요.

customer_uid: string

구매자의 결제 수단 식별 고유번호

merchant_uid: string

고객사 주문번호

동일한 주문 번호로 중복 결제가 불가하며, 스마트로 신모듈의 경우 특수문자 포함이 불가능합니다.

amount: number

결제금액

name: string

제품명

customer_uid: string

구매자의 결제 수단 식별 고유번호

schedules.merchant_uid: string

고객사의 주문번호

동일한 주문 번호로 중복 결제가 불가하며, 스마트로 신모듈의 경우 특수문자 포함이 불가능합니다.

schedules.schedule_at: integer

예약시각

schedules.currency: string

결제 통화

e.g) KRW, USD 등 (단, 페이팔 신모듈의 경우 KRW 결제가 불가능하므로 반드시 유효한 값을 필수로 입력해야합니다.)

schedules.amount: number

결제금액

schedules.name: string

주문명

유의사항