Gestione dei saldi dell'account con pagamento anticipato

Questa pagina si applica a Apigee e Apigee ibrido.

Visualizza la documentazione di Apigee Edge.

In questa pagina viene descritto come gestire gli account di fatturazione prepagati.

Puoi utilizzare le API Apigee per gestire gli account di fatturazione prepagati dei tuoi sviluppatori. Utilizzando le API, puoi eseguire le seguenti attività:

Visualizza la configurazione di monetizzazione

Per visualizzare la configurazione della monetizzazione di uno sviluppatore, invia una richiesta GET alla seguente API:

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

Con questa API, puoi visualizzare il tipo di fatturazione dello sviluppatore. Per ulteriori informazioni sull'API, consulta getMonetizationConfig.

L'esempio seguente mostra come visualizzare la configurazione della monetizzazione per uno sviluppatore utilizzando il comando curl:

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

Quando esegui il comando, puoi vedere una risposta simile alla seguente:

{
  "billingType": "PREPAID",
}

Aggiorna la configurazione della monetizzazione

Per aggiornare la configurazione della monetizzazione di uno sviluppatore, invia una richiesta PUT alla seguente API:

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

Con questa API, puoi aggiornare il tipo di fatturazione dello sviluppatore. Per maggiori informazioni sull'API, consulta updateMonetizationConfig.

L'esempio seguente mostra come aggiornare la configurazione della monetizzazione per uno sviluppatore utilizzando il comando 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

Quando esegui il comando, puoi vedere una risposta simile alla seguente:

{
  "billingType": "POSTPAID",
}

Modifica del tipo di fatturazione

I tuoi sviluppatori possono passare dalla fatturazione con pagamento anticipato a quella con pagamento posticipato e viceversa. Questa sezione descrive le modifiche che vengono apportate in Apigee quando gli sviluppatori cambiano il loro tipo di fatturazione.

Pagamento posticipato con pagamento anticipato

Se uno sviluppatore passa dal pagamento posticipato al pagamento anticipato, Apigee imposta immediatamente il billingType dello sviluppatore su PREPAID nella configurazione. Lo sviluppatore può iniziare a utilizzare le API nella misura dell'importo di ricarica prepagato. In base ai tuoi report sulla monetizzazione personalizzati, qualsiasi utilizzo esistente nell'account con pagamento posticipato dello sviluppatore deve essere fatturato separatamente da te (fornitore di API).

Da prepagato a postpagato

Se uno sviluppatore passa dal pagamento prepagato a quello con pagamento posticipato, Apigee imposta immediatamente il billingType dello sviluppatore su POSTPAID nella configurazione. I report sulla monetizzazione personalizzati mostrano l'eventuale saldo esistente (di tutte le valute) nell'account prepagato dello sviluppatore sotto forma di transazione di credito. Nel calcolare l'importo dovuto da uno sviluppatore dopo il ciclo di fatturazione, il fornitore di API deve considerare il saldo del credito nell'account dello sviluppatore.

Visualizza saldo sviluppatore

Per visualizzare il saldo nell'account prepagato di uno sviluppatore, invia una richiesta GET alla seguente API:

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

Per ulteriori informazioni sull'API, consulta getBalance.

L'esempio seguente mostra come visualizzare il saldo nell'account prepagato di uno sviluppatore:

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

Quando esegui il comando, puoi vedere una risposta simile alla seguente:

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

Nella risposta di esempio, lo sviluppatore ha due saldi prepagati dell'account, uno per ogni valuta. Puoi conoscere l'importo del saldo nei campi units e nanos. Il campo lastCreditTime è nel formato dell'epoca e indica l'ora in cui il saldo dello sviluppatore è stato accreditato l'ultima volta.

Saldo sviluppatore negativo

Se uno sviluppatore effettua più chiamate API in un breve lasso di tempo, è possibile che sia autorizzato a effettuare chiamate API in eccesso, il che comporta un saldo del portafoglio negativo per lo sviluppatore.

Questo scenario si verifica quando più processori di messaggi gestiscono le chiamate API dello stesso sviluppatore. Ogni processore di messaggi avrà una copia del saldo dello sviluppatore in base alla quale consente le chiamate API. Tutti i processori di messaggi sincronizzano periodicamente i propri saldi con il saldo principale nel database Cassandra. A causa di lievi ritardi nella sincronizzazione, il saldo del portafoglio di uno sviluppatore in un processore di messaggi potrebbe non essere sincronizzato con il saldo principale. Ad esempio, se in un determinato momento il saldo del portafoglio dello sviluppatore in un processore di messaggi è pari a 2 $, il saldo principale potrebbe essere 0 $. Il processore di messaggi consente quindi le chiamate API da parte dello sviluppatore, pensando che il portafoglio dello sviluppatore abbia ancora $ 2.

Apigee sincronizza il saldo del portafoglio di un processore di messaggi quasi in tempo reale con lievi ritardi e non puoi controllare o configurare questo comportamento di Apigee. Tuttavia, vengono conteggiate tutte le chiamate API in eccesso effettuate da uno sviluppatore. Dopo aver elaborato tutte le chiamate API di uno sviluppatore, l'importo finale nel portafoglio dello sviluppatore riflette l'addebito anche per le chiamate API in eccesso. Pertanto, quando lo sviluppatore ricarica l'account la prossima volta, per avere un saldo del portafoglio positivo, lo sviluppatore deve prima pagare l'eventuale importo del saldo negativo nel portafoglio.

Credito saldo sviluppatore

Per accreditare il saldo nell'account prepagato di uno sviluppatore, invia una richiesta POST all'API seguente:

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

Per ulteriori informazioni sull'API, consulta creditBalance.

L'accredito del saldo di uno sviluppatore prevede i seguenti passaggi nell'ordine indicato:

  1. Uno sviluppatore ricarica l'account sviluppatore dal portale per sviluppatori utilizzando un gateway di pagamento.
  2. Il Portale per gli sviluppatori genera un ID transazione univoco per la ricarica.
  3. Il portale per gli sviluppatori aggiorna il saldo sviluppatori utilizzando l'API organizations/{org}/developers/{developer}/balance:credit.

L'esempio seguente mostra la chiamata API per il passaggio 3 e accredita il saldo dello sviluppatore di 150,21 $. transactionId è impostato sul valore dell'ID transazione della transazione di ricarica (passaggio 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

Quando esegui il comando, puoi vedere una risposta simile alla seguente:

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

Regola il saldo sviluppatori

Se hai addebitato un importo eccessivo o insufficiente per l'account di un sviluppatore, puoi utilizzare l'API adjustBalance per ridurre o aumentare il saldo dell'account.

Per regolare il saldo nell'account prepagato di uno sviluppatore, invia una richiesta POST all'API seguente:

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

Per ulteriori informazioni sull'API, consulta adjustBalance.

Se vuoi ridurre il saldo di uno sviluppatore sottocosto, imposta il campo units nella richiesta su un valore positivo. Nell'esempio seguente, il saldo nell'account prepagato di uno sviluppatore diminuisce di 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

Quando esegui il comando, puoi vedere una risposta simile alla seguente:

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

Se vuoi aumentare il saldo di uno sviluppatore che ha ricevuto un addebito in eccesso, imposta il campo units nella richiesta su un valore negativo. Nell'esempio seguente, il saldo dell'account prepagato di uno sviluppatore aumenta di 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

Quando esegui il comando, puoi vedere una risposta simile alla seguente:

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