트랜잭션 기록 정책 구성

Apigee Edge 문서를 보고 있습니다.
Apigee X 문서로 이동하세요.
info

다음 섹션에 설명된 대로 API 제품 번들의 각 API 제품에 대해 거래 기록 정책을 구성합니다.

소개

트랜잭션 기록 정책을 사용하면 수익 창출에서 트랜잭션 매개변수와 맞춤 속성을 캡처할 수 있습니다. 수익 창출 처리를 수행하려면 이 정보가 필요합니다(예: 요금제 적용).

예를 들어 수익 공유 요금제를 설정하면 수익 창출 API 제품과 관련된 각 트랜잭션에서 생성된 수익의 비율이 요청을 실행하는 앱 개발자와 공유됩니다. 수익 배분은 거래의 순 가격 또는 총 가격 (사용자가 지정)을 기반으로 합니다. 즉, 각 거래의 총 가격 또는 순 가격의 비율이 수익 배분을 결정하는 데 사용됩니다. 따라서 수익 창출에서는 거래의 총액 또는 순액을 알아야 합니다(해당하는 경우). 트랜잭션 기록 정책에서 설정한 값에서 총 가격 또는 순 가격을 가져옵니다.

트랜잭션마다 개발자에게 요금을 청구하는 요금표 요금제를 설정하는 경우 트랜잭션에서 전송된 바이트 수와 같은 맞춤 속성을 기반으로 요금제의 요금을 설정할 수 있습니다. 수익 창출에서는 맞춤 속성이 무엇인지, 어디에서 찾을 수 있는지 알아야 합니다. 따라서 거래 기록 정책에서 맞춤 속성을 지정해야 합니다.

거래 기록 정책에서 거래 속성을 지정하는 것 외에도 거래 성공 기준을 지정하여 거래가 성공한 시점을 확인할 수 있습니다 (청구 목적). 트랜잭션 성공 기준 설정의 예는 트랜잭션 녹음 정책에서 트랜잭션 성공 기준 설정의 예를 참고하세요. 요금제 요금을 부과하는 API 제품의 맞춤 속성을 지정할 수도 있습니다.

트랜잭션 기록 정책 구성

아래 설명에 따라 제품 번들 페이지에 액세스합니다.

에지

Edge UI를 사용하여 API 제품 번들을 추가할 때 다음 단계에 따라 트랜잭션 기록 정책을 구성해야 합니다.

  1. 거래 기록 정책 섹션에서 구성할 API 제품을 선택합니다 (제품 번들에 API 제품이 여러 개 있는 경우).
  2. 거래 속성 구성
  3. 맞춤 속성 구성
  4. 고유 거래 ID로 리소스 연결
  5. 환불 구성
  6. API 제품 번들에 정의된 각 API 제품에 대해 반복합니다.

클래식 에지 (프라이빗 클라우드)

기본 Edge UI를 사용하여 트랜잭션 기록 정책을 구성하려면 다음 단계를 따르세요.

  1. http://ms-ip:9000에 로그인합니다. 여기서 ms-ip는 관리 서버 노드의 IP 주소 또는 DNS 이름입니다.
  2. 상단 탐색 메뉴에서 게시 > 제품을 선택합니다.
  3. 해당 API 제품의 행에서 + 거래 기록 정책을 클릭합니다. 새 거래 기록 정책 창이 표시됩니다.
  4. 다음 단계를 수행하여 트랜잭션 녹화 정책을 구성합니다.
  5. 저장을 클릭합니다.

거래 속성 구성

거래 속성 섹션에서 수익 창출 거래가 성공했음을 나타내는 기준을 지정합니다.

  1. 거래 성공 기준 필드에서 청구 목적으로 거래가 성공한 시점을 결정하기 위해 상태 속성(다음에 설명)의 값을 기반으로 하는 표현식을 지정합니다. 성공하지 못한 거래(즉, 표현식의 기준을 충족하지 않음)는 기록되지만 요금제가 적용되지 않습니다. 예를 들면 다음과 같습니다.

    txProviderStatus == 'OK'

  2. 상태 속성에는 거래 성공 기준 필드에 구성된 표현식에서 사용되는 값이 포함됩니다. 다음 필드를 정의하여 Status 속성을 구성합니다.
    필드 설명
    API 리소스 수익 창출 트랜잭션을 식별하는 데 사용되는 API 제품에 정의된 URI 패턴입니다.
    응답 위치 속성이 지정된 응답의 위치입니다. 유효한 값은 흐름 변수, 헤더, JSON 본문, XML 본문입니다.
    대답의 값입니다. 값을 두 개 이상 지정하려면 + x 추가 (예: + 흐름 변수 추가)를 클릭합니다.
  3. 선택적 거래 속성을 구성하려면 선택적 속성 사용 전환 버튼을 사용 설정하고 다음 표에 정의된 거래 속성을 구성합니다.
    속성 설명
    총 가격

    이 속성은 수익 공유 모델을 사용하는 요금제에만 적용됩니다. 이러한 요금제의 경우 총 가격 또는 순 가격이 필수입니다. 숫자 값이 문자열 유형으로 표현되는지 확인합니다. 거래의 총 가격입니다. 수익 공유 요금제의 경우 총 가격 속성 또는 순 가격 속성을 기록해야 합니다. 필요한 속성은 수익 공유 기준에 따라 다릅니다. 예를 들어 거래의 총 가격을 기반으로 하는 수익 공유 요금제를 설정할 수 있습니다. 이 경우 총 가격 필드는 필수입니다.

    실제 등록금 납부액

    이 속성은 수익 공유 모델을 사용하는 요금제에만 적용됩니다. 이러한 요금제의 경우 총 가격 또는 순 가격이 필수입니다. 숫자 값이 문자열 유형으로 표현되는지 확인합니다. 거래의 순 가격입니다. 수익 배분 계획의 경우 순 가격 필드 또는 총 가격 필드를 기록해야 합니다. 필수 필드는 수익 공유의 기준에 따라 다릅니다. 예를 들어 거래의 순 가격을 기반으로 하는 수익 공유 요금제를 설정할 수 있습니다. 이 경우 순 가격 필드가 필요합니다.

    통화

    이 속성은 수익 공유 모델을 사용하는 요금제에 필요합니다. 거래에 적용되는 통화 유형입니다.

    오류 코드

    거래와 연결된 오류 코드입니다. 실패한 거래에 관한 추가 정보를 제공합니다.

    상품 설명

    거래 설명입니다.

    세금

    이 속성은 수익 공유 모델에만 관련이 있으며 API 호출에서 세금 금액이 캡처된 경우에만 관련이 있습니다. 숫자 값이 문자열 유형으로 표현되어야 합니다. 구매에 대한 세액입니다. 순 가격 + 세금 = 총 가격

예를 들어 다음 값을 설정하면 수익 창출에서 response.reason.phrase이라는 변수의 메시지 응답에서 흐름 변수 값을 가져옵니다. 값이 OK이고 수익 창출 한도 확인 정책이 API 프록시 ProxyEndpoint 요청에 연결되어 있으면 수익 창출에서 이를 트랜잭션으로 계산합니다.

필드
거래 성공 기준 txProviderStatus == 'OK'
상태: API 리소스 **
상태: 응답 위치 흐름 변수
상태: 흐름 변수 response.reason.phrase

맞춤 속성 구성

맞춤 속성 섹션에서 트랜잭션 레코딩 정책에 포함할 맞춤 속성을 식별합니다. 예를 들어 각 거래에 대해 개발자에게 요금을 청구하는 요금표 요금제를 설정하는 경우 거래에서 전송된 바이트 수와 같은 맞춤 속성을 기반으로 요금제 요금을 설정할 수 있습니다. 그런 다음 거래 기록 정책에 맞춤 속성을 포함해야 합니다.

이러한 각 속성은 쿼리할 수 있는 트랜잭션 로그에 저장됩니다. 요금제를 만들 때도 표시되므로 요금제의 요금을 기반으로 할 속성을 하나 이상 선택할 수 있습니다.

수익 요약 보고서에 맞춤 거래 속성 포함에 설명된 대로 거래 기록 정책에 정의된 맞춤 속성을 수익 요약 보고서에 포함할 수 있습니다.

맞춤 속성을 구성하려면 맞춤 속성 사용 전환 버튼을 사용 설정하고 최대 10개의 맞춤 속성을 정의합니다. 거래 기록 정책에 포함하는 각 맞춤 속성에 대해 다음 정보를 지정해야 합니다.

필드 설명
맞춤 속성 이름 맞춤 속성을 설명하는 이름을 입력합니다. 요금제가 맞춤 속성을 기반으로 하는 경우 이 이름이 요금제 세부정보에 사용자에게 표시됩니다. 예를 들어 맞춤 속성이 기간을 캡처하는 경우 속성 이름을 duration으로 지정해야 합니다. 맞춤 속성의 실제 단위 (예: 시간, 분, 초)는 맞춤 속성 요금제를 만들 때 등급 단위 필드에 설정됩니다(맞춤 속성 세부정보로 요금제 지정 참고).
API 리소스 트랜잭션에서 액세스한 API 리소스의 URI 접미사 (즉, 기본 경로 다음에 오는 URI 프래그먼트)를 하나 이상 선택합니다. 사용 가능한 리소스는 거래 속성과 동일합니다.
응답 위치 대답에서 속성이 지정된 위치를 선택합니다. 유효한 값은 흐름 변수, 헤더, JSON 본문, XML 본문입니다.
맞춤 속성의 값을 지정합니다. 지정한 각 값은 지정한 위치에서 맞춤 속성을 제공하는 필드, 매개변수 또는 콘텐츠 요소에 해당합니다. 값을 두 개 이상 지정하려면 + x 추가 (예: + 흐름 변수 추가)를 클릭합니다.

예를 들어 콘텐츠 길이 이름의 맞춤 속성을 구성하고 응답 위치로 헤더를 선택한 경우 HTTP Content-Length 필드에 콘텐츠 길이 값이 제공되면 값으로 Content-Length를 지정합니다.

일부 트랜잭션은 하나의 리소스에 대한 API 호출을 포함하는 간단한 트랜잭션입니다. 하지만 다른 거래는 더 복잡할 수 있습니다. 예를 들어 모바일 게임 앱에서 인앱 상품을 구매하는 트랜잭션에 여러 리소스 호출이 포함된다고 가정해 보겠습니다.

  • 선불 사용자가 제품을 구매할 수 있는 충분한 크레딧을 보유하고 있는지 확인하고 구매 자금을 할당 ('예약')하는 예약 API 호출입니다.
  • 선불 사용자 계정에서 금액을 차감하는 청구 API 호출

전체 거래를 처리하려면 수익 창출에서 첫 번째 리소스 (예약 API와의 호출 및 응답)를 두 번째 리소스 (청구 API와의 호출 및 응답)와 연결하는 방법이 필요합니다. 이를 위해 고유한 거래 ID로 리소스 연결 섹션에 지정된 정보를 사용합니다.

맞춤 속성을 구성하려면 고유 거래 ID 사용 전환 버튼을 사용 설정하고 거래를 연결하세요. 각 거래에 대해 다른 거래의 해당 값과 연결된 리소스, 응답 위치, 속성 값을 지정합니다.

예를 들어 예약 API 호출과 청구 API 호출이 다음과 같이 연결되어 있다고 가정해 보겠습니다. 예약 API의 응답 헤더에 있는 session_id이라는 필드가 청구 API의 reference_id이라는 응답 헤더에 해당합니다. 이 경우 '고유 거래 ID로 리소스 연결' 섹션의 항목을 다음과 같이 설정할 수 있습니다.

리소스 응답 위치
reserve/{id}**

헤더

session_id
/charge/{id}**

헤더

reference_id

환불 구성

환불 섹션에서는 수익 창출에서 환불을 처리하는 데 사용하는 속성을 지정합니다.

예를 들어 사용자가 수익 창출 API를 사용하는 모바일 앱에서 제품을 구매한다고 가정해 보겠습니다. 트랜잭션은 공유 수익 계획에 따라 수익 창출됩니다. 하지만 사용자가 제품에 불만족하여 반품을 원한다고 가정해 보겠습니다. 환불을 실행하는 API 호출을 사용하여 제품이 환불되는 경우 수익 창출에서 필요한 수익 창출 조정을 실행합니다. 이는 거래 기록 정책의 환불 섹션에 지정된 정보를 기반으로 합니다.

환불을 구성하려면 환불 속성 사용 전환 버튼을 사용 설정하고 환불 세부정보를 정의하세요.

  1. 다음 필드를 정의하여 환불 기준을 정의합니다.
    필드 설명
    응답 위치 환불 거래 리소스입니다. API 제품에서 여러 리소스를 제공하는 경우 환불을 실행하는 리소스만 선택할 수 있습니다.
    환불 성공 기준 환불 거래가 성공한 시점을 결정하기 위한 상태 속성 (다음에 설명)의 값을 기반으로 하는 표현식입니다 (청구 목적). 환불 거래가 성공하지 못한 경우 (즉, 표현식의 기준을 충족하지 않는 경우) 기록되지만 요금제가 적용되지 않습니다. 예를 들면 다음과 같습니다.

    txProviderStatus == 'OK'

  2. 다음 필드를 정의하여 Status 속성을 구성합니다.
    필드 설명
    응답 위치 속성이 지정된 응답의 위치입니다. 유효한 값은 흐름 변수, 헤더, JSON 본문, XML 본문입니다.
    대답의 값입니다. 값을 두 개 이상 지정하려면 + x 추가 (예: + 흐름 변수 추가)를 클릭합니다.
  3. 다음 필드를 정의하여 상위 ID 속성을 구성합니다.
    필드 설명
    응답 위치 속성이 지정된 응답의 위치입니다. 유효한 값은 흐름 변수, 헤더, JSON 본문, XML 본문입니다.
    환불이 처리된 거래의 ID입니다. 예를 들어 사용자가 제품을 구매한 후 환불을 요청하는 경우 상위 거래 ID는 구매 거래의 ID입니다. 값을 두 개 이상 지정하려면 + x 추가 (예: + 흐름 변수 추가)를 클릭합니다.
  4. 선택적 환불 속성을 구성하려면 선택적 환불 속성 사용 전환 버튼을 사용 설정하고 속성을 구성합니다. 선택사항 환불 속성은 거래 속성 구성에 정의된 선택사항 거래 속성과 동일합니다.

API를 사용하여 트랜잭션 기록 정책 관리

다음 섹션에서는 API를 사용하여 거래 기록 정책을 관리하는 방법을 설명합니다.

API를 사용하여 트랜잭션 녹화 정책 만들기

API 제품의 속성으로 거래 기록 정책을 지정합니다. 속성 값은 다음을 식별합니다.

  • 거래 기록 정책이 연결된 제품 리소스의 URI 접미사입니다. 접미사에는 중괄호로 묶인 패턴 변수가 포함되어 있습니다. 패턴 변수는 런타임에 API 서비스에 의해 평가됩니다. 예를 들어 다음 URI 접미사에는 패턴 변수 {id}가 포함됩니다.
    /reserve/{id}**

    이 경우 API 서비스는 리소스의 URI 접미사를 /reserve로 평가하고 API 제공업체에서 정의한 ID로 시작하는 하위 디렉터리가 뒤따릅니다.

  • 첨부된 응답의 리소스입니다. API 제품에는 여러 리소스가 있을 수 있으며 각 리소스에는 해당 리소스의 응답에 연결된 트랜잭션 기록 정책이 있을 수 있습니다.
  • 트랜잭션 기록 정책이 캡처하려는 트랜잭션 매개변수의 응답 메시지에서 콘텐츠를 추출할 수 있도록 하는 추출 변수 정책

관리 API https://api.enterprise.apigee.com/v1/organizations/{org_name}/apiproducts/{apiproduct_Id}(수익 창출 API 아님)에 PUT 요청을 실행하여 API 제품에 거래 기록 정책 속성을 추가합니다.

API를 사용하여 거래 성공 기준 지정

거래가 성공한 시점을 결정하는 거래 성공 기준을 지정할 수 있습니다(청구 목적). 성공하지 못한 거래 (즉, 표현식의 기준을 충족하지 않음)는 기록되지만 요금제가 적용되지 않습니다. 트랜잭션 성공 기준 설정의 예는 트랜잭션 녹음 정책에서 트랜잭션 성공 기준 설정의 예를 참고하세요.

트랜잭션 성공 기준을 API 제품의 속성으로 지정합니다. 관리 API https://api.enterprise.apigee.com/v1/organizations/{org_name}/apiproducts/{apiproduct_Id}(수익 창출 API 아님)에 PUT 요청을 실행하여 이 작업을 수행합니다.

예를 들어 다음 요청에서 txProviderStatus 값이 success이면 거래가 성공합니다 (거래 성공 기준 관련 사양이 강조 표시됨).

$ curl -H "Content-Type: application/json" -X PUT -d \ 
'{
        "apiResources": [
        "/reserve/{id}**"       
        ],
        "approvalType": "auto",
        "attributes": [                         
        {
                "name": "MINT_TRANSACTION_SUCCESS_CRITERIA",
                "value": "txProviderStatus == 'OK'"
        }
        ],
        "description": "Payment",
        "displayName": "Payment",
        "environments": [
        "dev"
        ],
        "name": "payment",
        "proxies": [],
        "scopes": [
        ""
        ]
}' \
"https://api.enterprise.apigee.com/v1/organizations/{org_name}/apiproducts/payment" \
-u email:password

API를 사용하여 맞춤 속성 지정

요금제 요금을 기반으로 하는 API 제품의 맞춤 속성을 지정할 수 있습니다. 예를 들어 각 거래에 대해 개발자에게 요금을 청구하는 요금표 요금제를 설정하는 경우 거래에서 전송된 바이트 수와 같은 맞춤 속성을 기반으로 요금제의 요금을 설정할 수 있습니다. 요금제를 만들 때 요금제의 요금을 기반으로 할 하나 이상의 맞춤 속성을 지정할 수 있습니다. 하지만 요금제의 특정 제품에는 요금제의 요금을 기반으로 할 수 있는 맞춤 속성이 하나만 있을 수 있습니다.

API 제품의 속성으로 커스텀 속성을 지정합니다. 관리 API https://api.enterprise.apigee.com/v1/organizations/{org_name}/apiproducts/{apiproduct_Id}(수익 창출 API 아님)에 PUT 요청을 실행하여 이 작업을 수행합니다.

API 제품에 추가하는 각 맞춤 속성에 대해 이름과 속성 값을 지정해야 합니다. 이름은 MINT_CUSTOM_ATTRIBUTE_{num} 형식이어야 합니다. 여기서 {num}는 정수입니다.

예를 들어 다음 요청은 세 개의 맞춤 속성을 지정합니다.

$ curl -H "Content-Type: application/json" -X PUT -d \
'{
        "apiResources": [
        "/reserve/{id}**",
        "/charge/{id}**"
        ],
        "approvalType": "auto",
        "attributes": [
        {
                "name": "MINT_CUSTOM_ATTRIBUTE_1",
                "value": "test1"
        },
        {
                "name": "MINT_CUSTOM_ATTRIBUTE_2",
                "value": "test2"
        }
 
        ],
        "name": "payment",
        "proxies": [],
        "scopes": [
                ""
        ]
}' \
"https://api.enterprise.apigee.com/v1/organizations/{org_name}/apiproducts/payment" \
-u email:password

거래 녹화 정책에서 거래 성공 기준을 설정하는 예

다음 표에는 트랜잭션 성공 기준 표현식과 API 프록시에서 반환된 txProviderStatus 값을 기반으로 성공한 트랜잭션과 실패한 트랜잭션의 예가 나와 있습니다. txProviderStatus는 수익 창출에서 트랜잭션 성공 여부를 확인하는 데 사용하는 내부 변수입니다.

성공 기준 표현식 유효한 표현식인가요? API 프록시의 txProviderStatus 값 평가 결과
null true "200" false
"" false "200" false
" " false "200" false
"sdfsdfsdf" false "200" false
"txProviderStatus =='100'" true "200" false
"txProviderStatus =='200'" true "200" true
"true" true "200" true
"txProviderStatus=='OK' OR
txProviderStatus=='Not Found' OR
txProviderStatus=='Bad Request'"
true "OK" true
"txProviderStatus matches '(OK)|(Not Found)|(Bad Request)'" true "OK" true
"txProviderStatus matches '(OK)|(Not Found)|(Bad Request)'" true "Not Found" true
"txProviderStatus matches '(OK)|(Not Found)|(Bad Request)'" true "Bad Request" true
"(txProviderStatus?:'') matches '(?i)(OK)|(Not Found)|(Bad Request)'" true "Bad Request" true
"(txProviderStatus?:'') matches '(?i)(OK)|(Not Found)|(Bad Request)'" true null false
"txProviderStatus matches '(?i)(OK)|(Not Found)|(Bad Request)'" true "bad request" true
"txProviderStatus matches '(?i)(OK)|(Not Found)|(Bad Request)'" true "Redirect" false
"txProviderStatus matches '(?i)(OK)|(Not Found)|(Bad Request)'" true "heeeelllooo" false
"txProviderStatus matches '(?i)(OK)|(Not Found)|(Bad Request)'" true null false
"txProviderStatus == 100" true "200" 거짓