Google Play Developer API に、 代替の課金システムの取引を報告する機能。 外部提案システム。このガイドでは、代替 URL を報告する方法について説明します。 外部提案の取引などです
バックエンドからのアプリ内購入を処理するために必要なコンポーネントがいくつかあります。それらをビルドするには、Google Play Developer API を設定するの手順に沿ってバックエンド統合をセットアップする必要があります。対象 代替の課金システムに固有ではない、デベロッパーのバックエンド機能すべて 外部提案の API を使用する場合は、 Google Play 課金システムのドキュメントが適用されます。
新しい外部取引を Google Play に報告する
Externaltransactions APIs
と統合する
Google Play の課金システム以外で行われた取引を
サポートされている国(無料試用の結果による 0 ドルの取引を含む)
購入します。代替の課金システムまたは外部提案のシステムでの取引
認められている範囲内で、対象となるユーザーの国でのみ開始および報告すること
代替の課金システムを利用している
外部提案プログラムへの申し込みがない場合、API 呼び出しは
拒否されます。これは、新規購入、更新、
チャージ、アップグレード、ダウングレードなどです
外部取引の報告
Externaltransactions API
を呼び出すと、外部取引を報告できます。
「代替の課金システム」を通じてお支払いが承認された後、または
外部提案システムですこれは、初回購入を含む、すべての取引に適用されます。
請求、更新、払い戻しなどですすべてのトランザクションは、
取引が発生してから 24 時間以内に報告される
各外部取引は、外部取引 ID とともに報告されます。定期的な購入(自動更新可能な定期購入など)については、払い戻しを含め、後続の取引のパラメータとして、定期的な購入の最初の取引に関連付けられている外部取引 ID を送信する必要があります。これにより、その購入の一連の取引が記録されます。商品が変更されたとき(アップグレードやダウングレードなど)、または定期的な取引がキャンセルまたは期限切れになり同じ商品が後で再度購入されたときは、購入の新しい外部取引 ID を送信します。個人を特定できる 機密情報、専有情報、機密情報、 トランザクション ID です
新規購入を報告する
代替の課金システムで新しい購入が成功するたびに発生する
外部提案システムの場合、Externaltransactions
API の呼び出しは
必要ありません。これらの新規購入では、一意の ID を入力する必要があります。
クエリとしてバックエンドでの購入に関連付けられた externalTransactionId
パラメータを指定します。この externalTransactionId
は、同じアプリ内の
パッケージ ID。
以下を通じてアプリが受信した externalTransactionToken
UserChoiceBillingListener
、AlternativeBillingOnlyReportingDetailsListener
、
または ExternalOfferReportingDetailsListener
コールバックも、
1 回限りの購入と初回取引のリクエスト本文
。いずれの場合も、
最初の取引最初のトランザクションの後、
externalTransactionToken
が不要となったため、後続の
トランザクション(購読の更新など)を、新しい固有の
externalTransactionId
。購入の後続の取引を報告するをご覧ください。
をご覧ください。
例:
- デベロッパーがアプリで代替の課金システムを設定して有効にします。
- サポートされている国である韓国のユーザー 1 が、
product1
を月額 12,634.10 韓国ウォンで、1 か月間の無料トライアル特典付きで購入しようとしています。 - アプリは
product1
のProductDetails
とユーザーが選択した特典の購入フローを開始します。 - ユーザー 1 がデベロッパーの代替の課金システムを選択します。
UserChoiceBillingListener
が値my_token
をexternalTransactionToken
として受け取ります。- 次に、デベロッパーがバックエンドに関連情報を送信します(
externalTransactionToken
値と購入する商品)。さらに、代替の課金システムでproduct1
の購入フローを開始します。この取引に、Google Play への報告に使用されるデベロッパー側での一意の取引 ID(123-456-789)が割り当てられます。ユーザーが無料トライアルを受け取る場合でも、取引 ID は必須です。 - 購入の取引が代替の課金システムで行われた後、デベロッパーが以下のリクエストで Google Play に取引を報告します。ユーザーは 1 か月無料で利用できるため、最初は 0 ドルの取引として報告されます。
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=123-456-789
Body
{
"originalPreTaxAmount" : {
"priceMicros": "0",
"currency": "KRW"
},
"originalTaxAmount" : {
"priceMicros": "0",
"currency": "KRW"
},
"transactionTime" : "2022-02-22T12:45:00Z",
"recurringTransaction" : {
"externalTransactionToken": "my_token",
"externalSubscription" {
"subscriptionType": "RECURRING"
}
},
"userTaxAddress" : {
"regionCode": "KR"
}
}
インド在住のユーザーとの取引で、行政区域(州や県など)によって税額が異なる場合は、その地域を必ず userTaxAddress に含めてください。該当する行政区域については、API リファレンス ガイドで事前定義されている文字列のリストをご覧ください。
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=123-456-789
Body
{
"originalPreTaxAmount" : {
"priceMicros": "0",
"currency": "INR"
},
"originalTaxAmount" : {
"priceMicros": "0",
"currency": "INR"
},
"transactionTime" : "2023-11-01T12:45:00Z",
"recurringTransaction" : {
"externalTransactionToken": "my_token",
"externalSubscription" {
"subscriptionType": "RECURRING"
}
},
"userTaxAddress" : {
# Tax varies in India based on state, so include that information in
# administrativeArea
"regionCode": "IN"
"administrativeArea": "KERALA"
}
}
購入に対する後続の取引を報告する
同じ外部購入に複数のユーザー支払いが関連付けられていることがあります(定期購入の更新や前払いプランのチャージなど)。後続の取引は Externaltransactions
の同じ API を使用して報告できます。新規購入の報告で説明したように、後続の取引で externalTransactionToken
は必要ありません。代わりに、更新またはチャージの取引ごとに、新しい一意の externalTransactionId
がクエリ パラメータとして送信されます(initialExternalTransactionId
フィールドに初期取引の ID を指定します)。
上記の例では、次のようになります。
- ユーザー 1 の初回の更新が代替の課金システムで行われます。最初の取引 ID は 123-456-789 でした。
- デベロッパーは、URL のクエリ パラメータで、その回の取引を新しい取引の外部取引 ID として報告し、
initialExternalTransactionId
フィールドの初期取引の外部取引 ID を参照します。
リクエスト例:
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=abc-def-ghi
Body
{
"originalPreTaxAmount" : {
"priceMicros": "12634000000",
"currency": "KRW"
},
"originalTaxAmount" : {
"priceMicros": "1263000000",
"currency": "KRW"
},
"transactionTime" : "2022-02-22T12:45:00Z",
"recurringTransaction" : {
"initialExternalTransactionId": "123-456-789",
"externalSubscription" {
"subscriptionType": "RECURRING"
}
},
"userTaxAddress" : {
"regionCode": "KR"
}
}
アップグレードまたはダウングレードを報告する
ユーザーが代替の課金システムで定期購入を所有しているときにアップグレードまたはダウングレードを報告するには、Externaltransactions
API の同じエンドポイントと関数を使用し、アップグレード取引またはダウングレード取引に関してアプリに提供された externalTransactionToken
を送信します。これは、新規購入の報告と同様に機能します。
代替の課金システムによる取引の手動レポートから移行する
自動レポートを使用しない代替の課金システムの提供中に開始され、現在も有効な定期購入を移行するには、initialExternalTransactionId
または externalTransactionToken
を指定する代わりに、migratedTransactionProgram
フィールドを使用して新しく費用がゼロの取引を作成します。transactionTime
は、ユーザーが有効な定期購入ごとに最初に登録した時刻に設定します。その後、前述の更新取引の作成に使用した initialExternalTransactionId
を指定して、これらの定期購入についてその後の取引を通常どおり API を使用して報告します。定期購入を移行した後、このページで説明する自動化された方法で報告されるようにすると、定期購入についてその後の取引を手動で報告する必要はなくなります。
定期購入を移行するときは、移行によって割り当てが停止しないように、割り当ての上限に注意してください。多数のサブスクリプションに 複数の日に分散するか、割り当ての増加をリクエストする 割り当て内 をタップします。
migratedTransactionProgram
フィールドは、手動レポートから移行する場合にのみ使用できます。手動レポートのサポートが終了すると、このフィールドのサポートも終了します。
リクエスト例:
# Note that the externalTransactionId specified here will used to report subsequent
# transactions.
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=abc-def-ghi
Body
{
# Be sure to set the price to 0 for this transaction since it does not reflect
# an actual subscription renewal.
"originalPreTaxAmount" : {
"priceMicros": "0",
"currency": "KRW"
},
"originalTaxAmount" : {
"priceMicros": "0",
"currency": "KRW"
},
# The transaction time should be set to when the user signed up for this
# subscription.
"transactionTime" : "2022-02-22T12:45:00Z",
"recurringTransaction" : {
"migratedTransactionProgram": "USER_CHOICE_BILLING",
"externalSubscription" {
"subscriptionType": "RECURRING"
}
},
"userTaxAddress" : {
"regionCode": "KR"
}
}
Play パートナー プログラムを報告する
パートナー プログラムに参加しているデベロッパー(
Google Play メディア エクスペリエンス プログラムでは、
外部取引を報告する場合は transaction_program_code
。もし
詳細については、ビジネス開発マネージャーにお問い合わせください。
ご覧ください
購入の払い戻しを Google Play に報告する
Externaltransactions
API を統合して、Google Play の課金システム以外のユーザーに払い戻しが行われた取引を報告します。払い戻しが行われた取引を Play が正しく識別するには、以前に報告された取引に対応する externalTransactionId
を URL パラメータの一部として含める必要があります。
定期購入の払い戻しを報告する場合は、払い戻しされる定期購入の特定の回の externalTransactionId
を参照してください。
例: 定期購入に次の取引があるとします。
- 外部取引 ID が ABC.1234-5678-9012-34567 の初期取引
- 外部取引 ID が ABC.1234-5678-9012-34567..0 の 1 回目の取引
- 外部取引 ID が ABC.1234-5678-9012-34567..1 の 2 回目の取引
定期購入のすべての取引の払い戻しを報告するには、3 つの別々の払い戻しリクエスト(初期取引に 1 件、後続の取引に 2 件)を行う必要があります。
この方法では、全額払い戻しと、 (金額は、ユーザーが元の外部アカウントで支払った金額と同額) 取引など)と一部払い戻し (その金額が、元の外部取引でユーザーが支払った金額よりも少ない場合) あります。一部払い戻しの場合は、払い戻された税額を指定する必要があります。
API 割り当て
Externaltransactions
API には 1 日あたりの API 割り当てが適用されます。
Google Play Developer API の他のエンドポイントと同様に、すべての呼び出しに対してこの API を実装できます。
また、Externaltransactions
API には、Externaltransactions.createexternaltransaction
または Externaltransactions.refundexternaltransaction
の呼び出しに 1,200 QPM(Queries Per Minute: 1 分あたりのクエリ数)の上限が適用されます。Externaltransactions.getexternaltransaction
の呼び出しは、この 1,200 QPM の上限にはカウントされません。