선불 계정 잔액 관리

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

이 페이지에서는 선불 결제 계정을 관리하는 방법을 설명합니다.

Apigee API를 사용하여 개발자의 선불 결제 계정을 관리할 수 있습니다. API를 사용하여 다음 태스크를 수행할 수 있습니다.

수익 창출 구성 보기

개발자의 수익 창출 구성을 보려면 다음 API에 대해 GET 요청을 실행합니다.

https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/monetizationConfig

이 API를 사용하면 개발자의 결제 유형을 볼 수 있습니다. API에 대한 자세한 내용은 getMonetizationConfig를 참조하세요.

다음 예시는 curl 명령어를 사용하여 개발자의 수익 창출 구성을 확인하는 방법을 보여줍니다.

curl -H "Authorization: Bearer $TOKEN" \
https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/monetizationConfig

명령어를 실행하면 다음과 비슷한 응답이 표시될 수 있습니다.

{
  "billingType": "PREPAID",
}

수익 창출 구성 업데이트

개발자의 수익 창출 구성을 업데이트하려면 다음 API에 PUT 요청을 실행합니다.

https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/monetizationConfig

이 API를 사용하면 개발자의 결제 유형을 업데이트할 수 있습니다. API에 대한 자세한 내용은 updateMonetizationConfig를 참조하세요.

다음 예시에서는 curl 명령어를 사용하여 개발자의 수익 창출 구성을 업데이트하는 방법을 보여줍니다.

curl -H "Authorization: Bearer $TOKEN" \
-H "Content-type: application/json" \
-X PUT \
-d '{
"billingType": "POSTPAID",
}' \
https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/monetizationConfig

명령어를 실행하면 다음과 비슷한 응답이 표시될 수 있습니다.

{
  "billingType": "POSTPAID",
}

결제 유형 변경

개발자가 선불에서 후불로 또는 그 반대로 결제를 전환할 수 있습니다. 이 섹션에서는 개발자가 결제 유형을 변경할 때 Apigee에서 발생하는 변경사항을 설명합니다.

후불에서 선불로

개발자가 후불에서 선불로 전환하면 Apigee는 구성에서 개발자의 billingType을 즉시 PREPAID로 설정합니다. 개발자는 선불 잔액 충전 금액의 한도까지 API 사용을 시작할 수 있습니다. 커스텀 수익 창출 보고서를 기준으로 사용자(API 공급업체)에 따라 개별적으로 개발자의 후불 계정의 기존 사용이 결제됩니다.

선불에서 후불로

개발자가 선불에서 후불로 Apigee는 구성에서 개발자의 billingType을 즉시 POSTPAID로 설정합니다. 커스텀 수익 창출 보고서에는 개발자의 선불 계정에 있는 기존 잔액(모든 통화)이 크레딧 트랜잭션으로 표시됩니다. 결제 주기 이후 개발자의 청구 금액을 계산할 때 사용자(API 공급업체)는 개발자 계정의 크레딧 잔액을 고려해야 합니다.

개발자 잔액 보기

개발자의 선불 계정의 잔액을 보려면 다음 API에 GET 요청을 실행합니다.

https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/balance

API에 대한 자세한 내용은 getBalance를 참조하세요.

다음 예시는 개발자의 선불 계정에서 잔액을 확인하는 방법을 보여줍니다.

curl -H "Authorization: Bearer $TOKEN" \
https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/balance

명령어를 실행하면 다음과 비슷한 응답이 표시될 수 있습니다.

{
  "wallets": [
    {
      "balance": {
        "currencyCode": "USD",
        "units": "150",
        "nanos": 500000000
      },
      "lastCreditTime": 1234567890
    },
    {
      "balance": {
        "currencyCode": "INR",
        "units": "10000",
        "nanos": 600000000
      },
      "lastCreditTime": 9876543210
    }
  ]
}

샘플 응답에서 개발자는 각 통화당 하나씩 두 개의 선불 계정 잔액을 갖습니다. unitsnanos 필드에서 잔액을 확인할 수 있습니다. lastCreditTime 필드는 에포크 시간 형식이며 개발자의 잔액이 마지막으로 지급된 시간을 나타냅니다.

개발자 잔액 부족

개발자가 짧은 시간 내에 API 호출을 여러 번 수행하면 개발자가 API 호출을 과도하게 수행하여 개발자의 전자 지갑 잔액이 부족해질 수 있습니다.

이 시나리오는 동일 개발자로부터 여러 개의 메시지 프로세서가 API 호출을 처리하는 경우에 발생합니다. 모든 메시지 프로세서에는 API 호출 허용 기준에 따라 개발자 잔액 사본이 포함됩니다. 모든 메시지 프로세서는 해당 잔액을 Cassandra 데이터베이스에 있는 기본 잔액과 주기적으로 동기화합니다. 동기화할 때 발생하는 작은 지연으로 인해 메시지 프로세서에서 개발자의 전자 지갑 잔액이 기본 잔액과 일치하지 않을 수 있습니다. 예를 들어 특정 시점에 메시지 프로세서에 있는 개발자의 전자 지갑 잔액이 USD 2일 때 기본 잔액은 USD 0일 수 있습니다. 따라서 메시지 프로세서는 개발자의 전자 지갑에 여전히 USD 2가 있다고 가정해서 개발자의 API 호출을 허용합니다.

Apigee는 메시지 프로세서의 전자 지갑 잔액을 약간의 지연 시간과 함께 거의 실시간으로 동기화하며, 개발자는 Apigee의 이러한 동작을 제어하거나 구성할 수 없습니다. 하지만 개발자가 수행한 모든 초과 API 호출은 지출 내역이 보고됩니다. 개발자의 API 호출을 모두 처리한 후 개발자의 전자 지갑의 최종 금액에는 이러한 초과 API 호출 비용까지 반영됩니다. 따라서 다음에 전자 지갑 잔액을 늘리기 위해 계정을 충전할 때는 전자 지갑에 있는 모든 마이너스 잔액을 먼저 지불해야 합니다.

개발자 잔액 지급

개발자의 선불 계정에 잔액을 지급하려면 다음 API에 POST 요청을 실행합니다.

https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/balance:credit

API에 대한 자세한 내용은 creditBalance를 참조하세요.

개발자 잔액 지급에는 다음 단계가 순서대로 포함됩니다.

  1. 개발자가 결제 게이트웨이를 사용하여 개발자 포털에서 개발자 계정을 충전합니다.
  2. 개발자 포털이 충전에 대해 고유한 트랜잭션 ID를 생성합니다.
  3. 개발자 포털이 organizations/{org}/developers/{developer}/balance:credit API를 사용하여 개발자 잔액을 업데이트합니다.

다음 예시는 3단계의 API 호출을 보여주며 개발자 잔액을 USD 150.21씩 지급합니다. transactionId가 최상위 트랜잭션의 트랜잭션 ID 값으로 설정됩니다(3단계).

curl -H "Authorization: Bearer $TOKEN" \
-H "Content-type: application/json" \
-X POST \
-d '{
  "transactionAmount": {
     "currencyCode": "USD",
     "units": "150",
     "nanos": 210000000
  },
  "transactionId": "ab31b63e-f8e8-11eb-9a03-0242ac130003"
}' \
https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/balance:credit

명령어를 실행하면 다음과 비슷한 응답이 표시될 수 있습니다.

{
  "wallets": [
    {
      "balance": {
        "currencyCode": "USD",
        "units": "300",
        "nanos": 710000000
      },
      "lastCreditTime": "9876543210"
    },
    {
      "balance": {
        "currencyCode": "INR",
        "units": "10000",
        "nanos": 600000000
      },
      "lastCreditTime": "1234567890"
    }
  ]
}

개발자 잔액 조정

개발자 계정이 부족하게 또는 과도하게 청구된 경우 adjustBalance API를 사용하여 계정 잔액을 줄이거나 늘릴 수 있습니다.

개발자의 선불 계정에 잔액을 조정하려면 다음 API에 POST 요청을 실행합니다.

https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/balance:adjust

API에 대한 자세한 내용은 adjustBalance를 참조하세요.

부족하게 청구된 개발자 잔액을 줄이려면 요청에서 units 필드를 양수 값으로 설정합니다. 다음 예시에서는 개발자 선불 계정의 잔액을 USD 50만큼 줄입니다.

curl -H "Authorization: Bearer $TOKEN" \
-H "Content-type: application/json" \
-X POST \
-d '{
  "adjustment": {
    "units": "50",
    "currencyCode": "USD"
  }
}' \
https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/balance:adjust

명령어를 실행하면 다음과 비슷한 응답이 표시될 수 있습니다.

{
  "wallets": [
    {
      "balance": {
        "currencyCode": "USD",
        "units": "150"
      },
      "lastCreditTime": "1635489199530"
    }
  ]
}

과도하게 청구된 개발자 잔액을 늘리려면 요청에서 units 필드를 음수 값으로 설정합니다. 다음 예시에서는 개발자 선불 계정의 잔액을 USD 50.1만큼 늘립니다.

curl -H "Authorization: Bearer $TOKEN" \
-H "Content-type: application/json" \
-X POST \
-d '{
  "adjustment": {
    "units": "-50",
    "nanos": "100000000",
    "currencyCode": "USD"
  }
}' \
https://apigee.googleapis.com/v1/organizations/$YOUR_GOOGLE_PROJECT_ID/developers/$DEVELOPER_EMAIL_ID/balance:adjust

명령어를 실행하면 다음과 비슷한 응답이 표시될 수 있습니다.

{
  "wallets": [
    {
      "balance": {
        "currencyCode": "USD",
        "units": "200",
        "nanos": 100000000
      },
      "lastCreditTime": "1635489199530"
    }
  ]
}