이 가이드에서는 외부 제공 결제 프로그램을 지원하기 위해 API와 통합하는 방법을 설명합니다. 대상 앱 및 지역에서 제공됩니다 외부 제안 프로그램에 대해 자세히 알아보기 ( 자격 요건 및 지리적 범위 포함) 프로그램 요구사항을 준수해야 합니다.
Play 결제 라이브러리 설정
외부 제안 API를 사용하려면 Play 결제 라이브러리 종속 항목 버전 6.2.1 이상 추가 추가해야 합니다. 이전 버전에서 이전해야 하는 경우 구현을 시도하기 전에 이전 가이드의 안내를 따르세요. 외부 제안을 할 수 있습니다.
Google Play에 연결
통합 프로세스의 첫 번째 단계는
결제 통합 가이드를 참조하세요.
BillingClient
초기화:
- 새 메서드를 호출하여
혜택:
enableExternalOffer
.
다음 예는 이러한 수정을 적용하여 BillingClient
를 초기화하는 방법을 보여줍니다.
Kotlin
var billingClient = BillingClient.newBuilder(context)
.enableExternalOffer()
.build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableExternalOffer()
.build();
BillingClient
를 초기화한 후에는 통합 가이드에 설명된 대로 Google Play에 연결해야 합니다.
사용 가능 여부 확인
앱에서 다음을 호출하여 외부 제안을 사용할 수 있는지 확인해야 합니다.
isExternalOfferAvailableAsync
이 API는 외부 제공 결제 프로그램을 사용할 수 있는 경우 BillingResponseCode.OK
를 반환합니다.
앱이 어떻게 작동해야 하는지에 관한 자세한 내용은 응답 처리를 참고하세요.
다른 응답 코드에 응답할 수 있습니다.
Kotlin
billingClient.isExternalOfferAvailableAsync(
object : ExternalOfferAvailabilityListener {
override fun onExternalOfferAvailabilityResponse(
billingResult: BillingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external offers unavailable, etc.
return
}
// External offers are available. Continue with steps in the
// guide.
})
자바
billingClient.isExternalOfferAvailableAsync(
new ExternalOfferAvailabilityListener() {
@Override
public void onExternalOfferAvailabilityResponse(
BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external offers being unavailable, etc.
return;
}
// External offers are available. Continue with steps in the
// guide.
}
});
외부 거래 토큰 준비
Google Play에 외부 거래를 보고하려면
Play 결제 라이브러리에서 생성된 거래 토큰 새로운 외부
사용자가 외부
외부 제안 API를 통해 웹사이트를 방문할 수 있습니다. 이렇게 하려면
createExternalOfferReportingDetailsAsync
API 이 토큰은
사용자를 앱 외부로 이동하기 직전에 생성됩니다. 또한
절대 캐시되지 않으며 사용자가 리디렉션될 때마다 새 주소가 생성되어야 함
앱 외부에서
액세스할 수 있습니다
Kotlin
billingClient.createExternalOfferReportingDetailsAsync(
object : ExternalOfferReportingDetailsListener {
override fun onExternalOfferReportingDetailsResponse(
billingResult: BillingResult,
externalOfferReportingDetails: ExternalOfferReportingDetails?) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return
}
val externalTransactionToken =
externalOfferReportingDetails?.externalTransactionToken
// Persist the transaction token locally. Pass it to the external
// website when showExternalOfferInformationDialog is called.
}
})
Java
billingClient.createExternalOfferReportingDetailsAsync(
new ExternalOfferReportingDetailsListener() {
@Override
public void onExternalOfferReportingDetailsResponse(
BillingResult billingResult,
@Nullable ExternalOfferReportingDetails
externalOfferReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
externalOfferReportingDetails.getExternalTransactionToken();
// Persist the external transaction token locally. Pass it to the
// external website when showExternalOfferInformationDialog is
// called.
}
});
사용자를 위한 정보 대화상자
외부 제안과 통합하려면 자격 요건을 충족하는 앱에서
화면은 사용자가 바깥으로 이동하려고 한다는 것을 이해하는 데 도움을 줍니다.
연결할 수 있습니다. 정보 화면은 사용자에게 표시되는
showExternalOfferInformationDialog
API를 호출하여
해 줍니다.
Kotlin
// An activity reference from which the external offers information dialog
// will be launched.
val activity : Activity = ...;
val listener : ExternalOfferInformationDialogListener =
ExternalOfferInformationDialogListener {
override fun onExternalOfferInformationDialogResponse(
billingResult: BillingResult){
// Check billingResult
}
}
val billingResult = billingClient.showExternalOfferInformationDialog(
activity, listener)
자바
// An activity reference from which the external offers information dialog
// will be launched.
Activity activity = ...;
ExternalOfferInformationDialogListener listener =
new ExternalOfferInformationDialogListener() {
@Override
public void onExternalOfferInformationDialogResponse(
BillingResult billingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
}
// Open the external website, passing along the external transaction
// token as a URL parameter. If the user purchases an item, be sure
// to report the transaction to Google Play.
}
}
BillingResult billingResult =
billingClient.showExternalOfferInformationDialog(activity, listener);
이 메서드가 BillingResponseCode.OK
를 반환하면 앱에서 다음으로 진행할 수 있습니다.
사용자를 외부 웹사이트로 안내합니다. 메서드가
BillingResponseCode.USER_CANCELED
입니다. 앱이 계속해서
있습니다.
Google Play에 거래 보고
모든 외부 거래는 Google Play에 보고해야 합니다.
Play 개발자 API를 호출하도록 요청할 수 있습니다. 외부 트랜잭션
반드시 제공되어야 하며
다음을 사용하여 얻은 externalTransactionToken
createExternalOfferReportingDetailsAsync
API 사용자가 여러 번
같은 클라우드 서비스를
externalTransactionToken
: 각 구매를 보고합니다. 다음을 신고하는 방법에 대해 알아보려면
백엔드 통합 가이드를 참조하세요.
응답 처리
오류가 발생하면 isExternalOfferAvailableAsync
메서드는
createExternalOfferReportingDetailsAsync
,
showExternalOfferInformationDialog
이(가) 다음과 같은 응답을 반환할 수 있습니다.
BillingResponseCode.OK
입니다. 이러한 응답 코드를 다음과 같이 처리하는 것이 좋습니다.
ERROR
: 내부 오류입니다. 거래를 진행하지 않거나 외부 웹사이트를 엽니다. 다음을 호출하여 다시 시도하세요.showExternalOfferInformationDialog()
: 정보 표시 사용자에게 이 대화상자를 있습니다.FEATURE_NOT_SUPPORTED
: 외부 제안 API는 다음에서 지원되지 않습니다. Play 스토어로 이동합니다. 거래를 진행하지 않거나 외부 웹사이트를 엽니다.USER_CANCELED
: 외부 웹사이트를 열지 마세요. 전화걸기 다시showExternalOfferInformationDialog()
하여 정보를 표시합니다. 이 대화상자를 앱BILLING_UNAVAILABLE
: 외부 제공 결제 프로그램을 사용할 수 없는 거래입니다. 이 프로그램에서 진행해서는 안 됩니다. 이는 사용자가 이 프로그램을 이용할 수 있는 국가에 거주하지 않거나 계정이 프로그램에 등록되지 않았습니다. 후자인 경우 Play Console의 등록 상태를 확인하세요.DEVELOPER_ERROR
: 요청에 오류가 있습니다. 계속하기 전에 디버그 메시지를 사용하여 오류를 식별하고 수정하세요.NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE
: 적절한 재시도 정책으로 처리해야 하는 일시적인 오류입니다.SERVICE_DISCONNECTED
의 경우 다음을 사용하여 연결을 다시 설정합니다. Google Play에서 다시 시도하시기 바랍니다.
외부 제공 결제 프로그램 테스트
외부 제안 통합을 테스트하려면 라이선스 테스터를 사용해야 합니다. 나 라이선스 테스터가 시작한 거래에 대해서는 인보이스가 발행되지 않습니다. 있습니다. 자세한 내용은 애플리케이션 라이선스로 인앱 결제 테스트를 참고하세요. 라이선스 테스터 구성에 대한 정보
다음 단계
인앱 통합을 완료했으면 백엔드 통합을 진행할 수 있습니다.