Passer au contenu principal

Intégration de magasin – Amazon

Jason Liang avatar
Écrit par Jason Liang
Mis à jour il y a plus d’une semaine

Dans ce tutoriel, nous allons étudier l'intégration de l'Amazon Appstore au marché de brainCloud. Ainsi, les utilisateurs d'Amazon pourront valider les articles achetés sur l'Amazon Appstore avec brainCloud.

Notez que les applications doivent toujours effectuer l'achat directement sur l'Amazon Appstore. Pour plus d'informations sur ce processus, consultez le site de la console développeur de l'Amazon Appstore .

Configuration du portail brainCloud

Voici les étapes pour configurer brainCloud pour les achats sur Amazon Appstore.

Prérequis

Associer les éléments intégrés à l'application Amazon aux produits brainCloud

Après avoir configuré vos produits sur le marché de brainCloud, vous devrez les associer au SKU intégré à l'application Amazon. Plus précisément, nous récupérerons le SKU du produit sur le site des développeurs Amazon et le saisirons dans les produits brainCloud correspondants.

  • Cliquez sur l’onglet Applications et services dans la console du développeur.

  • Sélectionnez votre application et accédez à la section "Éléments intégrés à l'application"

  • Sélectionnez votre élément intégré à l'application et récupérez le SKU, assurez-vous que l'élément est prêt à être testé (le statut est En direct ).

(pour ce tutoriel, nous supposerons que le SKU du produit (article) est bitheads.brainCloud.aiaptest.pc1 )

Avertissement

Si vous ignorez l'enregistrement du SKU de votre produit (article) Amazon sur le portail brainCloud, vous obtiendrez une erreur comme ci-dessous lors de l'appel de l'API de vérification d'achat .
"transactionResultCode": 102,
"errorMessage": "Product not found",

  • Connectez-vous au portail brainCloud

  • Accédez à la page "App > Conception > Marché > Produits" dans l'onglet

    cerveauCloud
  • Sélectionnez le produit auquel vous souhaitez vous associer.

  • Cliquez sur le bouton [+ Modifier le produit] pour le rendre modifiable.

  • Trouvez votre prix (ou créez-en un en cliquant sur l'icône [+] ) et cliquez sur l'icône Modifier

  • Dans la boîte de dialogue Modifier le prix, cliquez sur l'icône + pour ajouter une entrée pour Amazon

  • Saisissez le SKU de votre article Amazon pour ce prix – dans notre cas “bitheads.brainCloud.aiaptest.pc1”.

  • À ce stade, vous pouvez sélectionner votre prix comme prix par défaut, s'il n'est pas déjà sélectionné. Vous pouvez le faire depuis la page "Modifier le produit".

  • Vous pouvez désormais vérifier que votre produit est bien renvoyé avec le bon SKU intégré à l'application Amazon. Voici le résultat de l'appel "Appstore.GetSaleInventory" de l'explorateur d'API utilisant "amazon" comme plateforme :

{
"data": {
"productInventory": [
{
"itemId": "coinbundle10",
"type": "Consumable",
"category": "coin",
"title": "product",
"description": "coinbundle10",
"imageUrl": null,
"currency": {},
"parentCurrency": {},
"peerCurrency": {
"deploypeer": {
"gems": 1
}
},
"data": null,
"createdAt": 1592542611282,
"updatedAt": 1592852462791,
"version": 9,
"priceData": {
"id": "bitheads.brainCloud.aiaptest.pc1",
"referencePrice": 399,
"isPromotion": false
}
}
],
"serverTime": 1592857819454
},
"status": 200
}

Avertissement

Si vous ignorez l'enregistrement du SKU de votre produit (article) Amazon sur le portail brainCloud, vous obtiendrez une erreur comme ci-dessous lors de l'appel de l'API de vérification d'achat .
"transactionResultCode": 102,
"errorMessage": "Product not found",

Information

Si vous ajoutez plusieurs produits associés au même SKU d'article intégré à l'application Amazon, vous n'obtiendrez qu'une seule transition de produit enregistrée à partir de brainCloud.

Certificats et informations d'identification Amazon

Une fois les produits configurés, vous devrez ajouter les informations d’identification Amazon appropriées à brainCloud.

  • Accédez à la page

    cerveauCloud
  • Cliquez sur l’icône Amazon et notez que le champ suivant doit être rempli.

  • Vous pouvez trouver ces informations à partir de votre console de développeur Amazon via Paramètres->Identité.

  • Vous devriez maintenant pouvoir valider votre achat avec brainCloud.

Avertissement

Assurez-vous que le SKU de votre élément intégré à l'application est unique par rapport à toutes vos applications
.

Information

Testez votre application avec Live App Testing après avoir rempli toutes les informations nécessaires de votre application et téléchargé votre fichier APK d'application .


Ajouter des testeurs à partir de l'écran


Notez que le statut de votre test est devenu Traitement une fois que vous avez soumis votre test, puis Publication , et lorsque vous êtes prêt, le statut passera à Test en cours.

Confirmation de l'achat côté client

Après avoir effectué un achat côté client, Amazon Appstore renverra un reçu avec un receiptId, un SKU, un itemType, une purchaseDate et un userId. Ces informations, nous aurons besoin de receiptId et d'userId qui sont utilisés par l'appel d'API VerifyPurchase .

  • Si vous utilisez le plugin Amazon IAP pour Unity, une partie de votre code peut ressembler à ceci :

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using com.amazon.device.iap.cpt;
public class BCinterface : MonoBehaviour
{
IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
public BrainCloudWrapper _bc;
string aiapReceipt = "";
string aiapUserId = "";
string aiapReceiptUpdateResponse = "";
string aiapUserIdUpdateResponse = "";
// Start est appelé avant la première mise à jour de la trame
void Start()
{
// S'inscrire à un événement
iapService.AddGetUserDataResponseListener(EventHandler);
iapService.AddPurchaseResponseListener(PurchaseResponseEventHandler);
iapService.AddGetPurchaseUpdatesResponseListener(PurchaseUpdateResponseEventHandler);
}
//clic sur le bouton d'authentification
public void AuthenticateBC()
{
_bc.AuthenticateEmailPassword("unityuser@unity.com", "unitytest", true, authSuccess_BCcall, authError_BCcall);
}
private void Awake()
{
DontDestroyOnLoad(gameObject);
_bc = gameObject.AddComponent<BrainCloudWrapper>();
_bc.WrapperName = gameObject.name;
_bc.Init();
}
//clic sur le bouton d'achat
public void Amazonpurchase()
{
// Construire l'objet passé à l'opération en entrée
SkuInput request = new SkuInput();
// Définir la valeur d'entrée
request.Sku = "com.braincloud.amazoniap.pc1";
// Appeler une opération synchrone avec un objet d'entrée
RequestOutput response = iapService.Purchase(request);
}
//il semble que nous n'ayons pas besoin des informations sur les données utilisateur, mais nous les listons ici au cas où
private void EventHandler(GetUserDataResponse args)
{
string requestId = args.RequestId;
string userId = args.AmazonUserData.UserId;
string marketplace = args.AmazonUserData.Marketplace;
string status = args.Status;
}
private void PurchaseResponseEventHandler(PurchaseResponse args)
{
string requestId = args.RequestId;
string userId = args.AmazonUserData.UserId;
string marketplace = args.AmazonUserData.Marketplace;
string receiptId = args.PurchaseReceipt.ReceiptId;
long cancelDate = args.PurchaseReceipt.CancelDate;
long purchaseDate = args.PurchaseReceipt.PurchaseDate;
string sku = args.PurchaseReceipt.Sku;
string productType = args.PurchaseReceipt.ProductType;
string status = args.Status;
aiapReceipt = receiptId;
aiapUserId = userId;
}
// Définir le gestionnaire d'événements
private void PurchaseUpdateResponseEventHandler(GetPurchaseUpdatesResponse args)
{
string requestId = args.RequestId;
string userId = args.AmazonUserData.UserId;
string marketplace = args.AmazonUserData.Marketplace;
List<PurchaseReceipt> receipts = args.Receipts;
string status = args.Status;
bool hasMore = args.HasMore;
// pour chaque reçu d'achat, vous pouvez obtenir les valeurs suivantes
string receiptId = receipts[0].ReceiptId;
long cancelDate = receipts[0].CancelDate;
long purchaseDate = receipts[0].PurchaseDate;
string sku = receipts[0].Sku;
string productType = receipts[0].ProductType;
aiapReceiptUpdateResponse = receiptId;
aiapUserIdUpdateResponse = userId;
}
//Clic sur le bouton de vérification d'achat de brainCloud
public void BrainCloudVerifyPurchase()
{
if (String.IsNullOrEmpty(aiapReceipt))
{
//appel purchase updateResonse verify si l'achat n'est pas exécuté
string receiptData = "{\"receiptId\":\"" + aiapReceiptUpdateResponse + "\",\"userId\":\"" + aiapUserIdUpdateResponse + "\"}";
Debug.Log("BrainCloudVerifyPurchase click with purchase updateResonse receiptData:" + receiptData);
_bc.AppStoreService.VerifyPurchase("amazon", receiptData, veriSuccess_BCcall, veriError_BCcall);
}
else
{
//appel purchase Response verify
string receiptData = "{\"receiptId\":\"" + aiapReceipt + "\",\"userId\":\"" + aiapUserId + "\"}";
Debug.Log("BrainCloudVerifyPurchase click with purchase Resonse receiptData:" + receiptData);
_bc.AppStoreService.VerifyPurchase("amazon", receiptData, veriSuccess_BCcall, veriError_BCcall);
}
}
public void authSuccess_BCcall(string responseData, object cbObject)
{
Debug.Log("bc authentication success call back");
}
public void authError_BCcall(int statusCode, int reasonCode, string statusMessage, object cbObject)
{
Debug.Log("bc authentication error call back");
}
public void veriSuccess_BCcall(string responseData, object cbObject)
{
Debug.Log("bc verify purchase success call back");
}
public void veriError_BCcall(int statusCode, int reasonCode, string statusMessage, object cbObject)
{
Debug.Log("bc verify purchase error call back");
}
}

  • Si vous utilisez Amazon IAP pour Android, certains de vos extraits de code peuvent ressembler à ce qui suit :

...
//import Amazon IAP et le client BrainCould
import com.amazon.device.iap.PurchasingListener;
import com.amazon.device.iap.PurchasingService;
import com.amazon.device.iap.model.ProductDataResponse;
import com.amazon.device.iap.model.PurchaseResponse;
import com.amazon.device.iap.model.PurchaseUpdatesResponse;
import com.amazon.device.iap.model.Receipt;
import com.amazon.device.iap.model.UserDataResponse;
import com.bitheads.braincloud.client.IServerCallback;
import com.bitheads.braincloud.client.ServiceName;
import com.bitheads.braincloud.client.ServiceOperation;
import org.json.JSONException;
import org.json.JSONObject;
...
...
//définissez votre produit
public enum MySku {
// This is the product to purchase and in the code.
PRODUCT1("bitheads.brainCloud.aiaptest.pc1", "US"),
...
...
//enregistrer purchasingListener
sampleIapManager = new SampleIapManager(this);
sampleIapManager.activate();
final SamplePurchasingListener purchasingListener = new SamplePurchasingListener(sampleIapManager);
Log.d(TAG, "onCreate: registering PurchasingListener");
PurchasingService.registerListener(this.getApplicationContext(), purchasingListener);
Log.d(TAG, "IS_SANDBOX_MODE:" + PurchasingService.IS_SANDBOX_MODE);
...
...
//lorsque vous cliquez sur un bouton d'achat de produit, vous transmettez votre référence produit (Sku)
final RequestId requestId = PurchasingService.purchase(MySku.PRODUCT1.getSku());
...
...
//dans votre listener implemente Amazon PurchasingListener et le callback brainCloud
public class SamplePurchasingListener implements PurchasingListener, IServerCallback {
IServerCallback theCallback;
...
...
//dans onPurchaseResponse verifie l'achat avec brainCloud
public void onPurchaseResponse(final PurchaseResponse response) {
...
switch (status) {
case SUCCESSFUL:
final Receipt receipt = response.getReceipt();
iapManager.setAmazonUserId(response.getUserData().getUserId(), response.getUserData().getMarketplace());
Log.d(TAG, "onPurchaseResponse: receipt json:" + receipt.toJSON());
iapManager.handleReceipt(receipt, response.getUserData());
iapManager.refreshOranges();
String userIda = response.getUserData().getUserId();
String receiptId = response.getReceipt().getReceiptId();
JSONObject receiptData = new JSONObject();
try {
receiptData.put("receiptId", receiptId);
receiptData.put("userId",userIda);
} catch (JSONException e) {
e.printStackTrace();
}
MainActivity._bc.GetWrapper().getAppStoreService().verifyPurchase("amazon", receiptData.toString(), theCallback);
break;
...

Confirmation des transactions depuis le portail brainCloud

  • Vérifiez les transactions depuis la page du portail brainCloud sur Usager > Marché > Transactions après avoir effectué un achat depuis l'application de test.

Avez-vous trouvé la réponse à votre question ?