개발자센터

2. 정기(예약)/반복결제 구현하기 (서버)

발급한 빌링키로 정기(예약)결제를 구현하는 방법을 안내합니다.

빌링키 발급 과정을 거쳐 billing_key 를 획득했다면 원하는 형태의 정기 또는 예약결제를 이용할 수 있습니다.

1. 결제 예약하기

미래의 특정 시점에 결제가 진행되도록 결제를 예약할 수 있습니다.

포트원 결제 예약 API를 이용하여 결제 예약을 등록할 수 있습니다.

async function schedulePayment() {
  // 1. 포트원 API를 사용하기 위한 액세스 토큰 발급 받기를 진행해주세요.
  // 2. 포트원 결제 예약 API 호출
  const response = await axios({
    url: `https://api.portone.io/v2/schedules`,
    method: "post",
    // 1번에서 발급받은 액세스 토큰을 Bearer 형식에 맞게 넣어주세요.
    headers: { Authorization: "Bearer " + access_token },
    data: {
      payment_id: UNIQUE_PAYMENT_ID,
      billing_key: BILLING_KEY_HERE,
      order_name: "월간 이용권 정기결제",
      customer: {
        customer_id: CUSTOMER_ID_HERE,
        // 고객 정보가 필요한 경우 API 명세에 따라 추가해주세요.
      },
      total_amount: 8900,
      currency: "KRW",
      scheduled_at: "2023-08-24T14:15:22Z", // 결제를 시도할 시각
    },
  });
  // 결제 예약 이후 로직을 구성해주세요.
}

2. 결제 결과 수신받기

예약한 시간에 결제가 시도되면 Webhook 이벤트가 발생하여 지정한 서버의 callback URL로 결제 번호(tx_id)와 주문 번호(payment_id)가 전달됩니다. 웹훅으로 예약결제에 대한 결과를 수신하면 결제결과 완료 로직 처리를 진행하시면 됩니다.

결제 결과를 수신 받는 자세한 방법은 아래의 반복결제 구현하기나 웹훅 연동하기를 참고해주세요.

3. 반복결제 구현하기

미래의 특정 시점이 아닌 한 달, 혹은 1년 마다 등 특정 주기에 따라 결제를 시도하는 반복결제의 경우 웹훅을 이용해 구현할 수 있습니다.

결제 예약 API를 이용하여, 첫 결제를 예약하고 예약한 시간에 결제가 끝나면 다음 결제를 예약하는 식을 반복하면 반복결제를 구현할 수 있습니다.