Ingame-Online-Shop mit BaaS-Autorisierung verwenden

Sie können Ingame-Online-Shop zusammen mit dem BaaS-Autorisierungssystem verwenden, um Ingame-Gegenstände zu verkaufen. In diesem Fall läuft die Interaktion wie folgt ab:

  1. Der Benutzer meldet sich über das BaaS-Autorisierungssystem bei Ihrer Anwendung an.
  2. Der BaaS-Dienst fordert den Bezahlstation-Zugriffstoken von den Xsolla-Servern an und übermittelt dabei die Benutzer-ID.
  3. Die Xsolla-Server senden den Bezahlstation-Zugriffstoken an den BaaS-Dienst zurück.
  4. Der BaaS-Dienst übermittelt den Bezahlstation-Zugriffstoken an die Anwendung.
  5. Die Anwendung verwendet den Bezahlstation-Zugriffstoken, um mit den Xsolla-Servern über die API zu interagieren.

Um den Bezahlstation-Zugriffstoken abzurufen, fügen Sie Ihrem Projekt vorgefertigte Funktionen hinzu. Befolgen Sie dazu die Anweisungen für Firebase und PlayFab.

Cloud Function zum Firebase-Projekt hinzufügen

  1. Initialisieren Sie Ihr Firebase-Projekt.
  2. Importieren und konfigurieren Sie die Funktion für den Empfang des Bezahlstation-Zugriffstokens, wobei:
    • <MerchantID> der Händler-ID entspricht. Diese finden Sie im Kundenportal unter Projekteinstellungen > Webhooks.
    • <ProjectID> der Projekt-ID entspricht. Diese finden Sie im Kundenportal unter Projekteinstellungen > Projekt-ID.
    • <ApiKey> dem API-Schlüssel entspricht. Diesen finden Sie im Kundenportal unter Firmeneinstellungen > API-Schlüssel.

Funktionscode für den Empfang des Zugriffstokens der Bezahlstation:

Copy
Full screen
Small screen
const merchantId = "<MerchantID>";
const projectId = "<ProjectID>";
const apiKey = "<ApiKey>";

exports.getXsollaAccessToken = functions.https.onCall((data, context) => {
  if (!context.auth) {
    throw new functions.https.HttpsError(
        "failed-precondition",
        "The function must be called while authenticated."
    );
  }

  const userId = context.auth.uid;
  const userEmail = context.auth.token.email || null;

  const authHeader = Buffer.from(`${merchantId}:${apiKey}`).toString("base64");

  const postData = JSON.stringify(
      {
        "user": {
          "id": {
            "value": userId,
          },
          "email": {
            "value": userEmail,
          },
        },
        "settings": {
          "project_id": Number(projectId),
        },
      }
  );

  const options = {
    hostname: "api.xsolla.com",
    port: 443,
    path: `/merchant/v2/merchants/${merchantId}/token`,
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Content-Length": postData.length,
      "Authorization": `Basic ${authHeader}`,
    },
  };

  return new Promise( (resolve, reject) => {
    const req = https.request(options, (res) => {
      if (res.statusCode != 200) {
        reject(
            new functions.https.HttpsError("internal", "Token not received")
        );
      }
      let body = [];
      res.on("data", (d) => {
        body.push(d);
      });
      res.on("end", () => {
        try {
          body = JSON.parse(Buffer.concat(body).toString());
        } catch (e) {
          reject(
              new functions.https.HttpsError("internal", "Malformed response")
          );
        }
        resolve({
          "token": body.token,
        });
      });
    });
    req.on("error", (e) => {
      reject(new functions.https.HttpsError("internal", "Internal error"));
    });

    req.write(postData);
    req.end();
  });
});

  1. Stellen Sie die Funktion, wie in diesem Beispiel gezeigt, in einer Produktionsumgebung bereit.
  2. Fügen Sie die clientseitige Logik hinzu, um eine Funktion aus Ihrer Anwendung aufrufen zu können. Geben Sie als Funktionsnamen die Bezeichnung getXsollaAccessToken an. Die Übermittlung der Parameter ist nicht erforderlich.
  3. Implementieren Sie in der Anwendung selbstständig Methoden für die Arbeit mit der API oder verwenden Sie die Xsolla-SDKs.

Cloud Script zum PlayFab-Projekt hinzufügen

  1. Erstellen Sie eine JS-Datei mithilfe des Funktionscodes für den Empfang des Bezahlstation-Zugriffstokens, wobei:
    • <MerchantID> der Händler-ID entspricht. Diese finden Sie im Kundenportal unter Projekteinstellungen > Webhooks.
    • <ProjectID> der Projekt-ID entspricht. Diese finden Sie im Kundenportal unter Projekteinstellungen > Projekt-ID.
    • <your_authorization_basic_key> dem Händler-ID:API-Schlüssel-Paar, codiert gemäß dem Base64-Standard, entspricht. Den API-Schlüssel finden Sie im Kundenportal unter Firmeneinstellungen > API-Schlüssel.

Note
Wenn Sie bereits Cloud Scripts in Ihrem Projekt verwenden, fügen Sie die Funktion für den Empfang des Bezahlstation-Zugriffstokens am Ende des Codes hinzu.

Funktionscode für den Empfang des Zugriffstokens der Bezahlstation:

Copy
Full screen
Small screen
handlers.GetXsollaAccessToken = function (args) {

    // TODO replace with production credentials
    const merchantId = <MerchantID>; // Merchant ID from the Publisher Account
    const projectId = <ProjectID>; // Project ID from the Publisher Account
    const authHeader = '<your_authorization_basic_key>' // Base64(merchant_id:api_key)

    const headers = {
        "Authorization": `Basic ${authHeader}`
    };

    const body = {
        user: {
            id: {
                value: currentPlayerId
            },
            playfab_id: {
                value: currentPlayerId
            }
        },
        settings: {
            project_id: projectId
        }
    };

    const url = `https://api.xsolla.com/merchant/v2/merchants/${merchantId}/token`;
    const httpMethod = "post";
    const content = JSON.stringify(body);
    const contentType = "application/json";

    const response = JSON.parse(http.request(url, httpMethod, content, contentType, headers));

    if ('token' in response) {
        return {
            "token" : response.token
        }
    } else {
        return {
            "error_message" : response.message
        }
    }
}

  1. Wechseln Sie zu den PlayFab-Projekteinstellungen.
  2. Laden Sie die Cloud Script-Datei hoch.
  3. Führen Sie das Cloud Script in einer Produktionsumgebung aus.
  4. Fügen Sie die clientseitige Logik hinzu, um eine Funktion aus Ihrer Anwendung aufrufen zu können. Geben Sie als Funktionsnamen die Bezeichnung GetXsollaAccessToken an. Die Übermittlung der Parameter ist nicht erforderlich.

Beispielhafter Aufruf der Funktion für den Empfang des Bezahlstation-Zugriffstokens:

Copy
Full screen
Small screen
kotlin
  • kotlin
  • C#
  • C++
val tokenRequest = PlayFabClientModels.ExecuteCloudScriptRequest()
tokenRequest.FunctionName = "GetXsollaAccessToken"
val res = PlayFabClientAPI.ExecuteCloudScript(tokenRequest)
val result = res.Result.FunctionResult as Map<*, *>
val token = result["token"]
val errorMessage = result["error_message"]
var tokenRequest = new ExecuteCloudScriptRequest{
  FunctionName = "GetXsollaAccessToken"
};

PlayFabClientAPI.ExecuteCloudScript(
  tokenRequest,
  scriptResult =>
  {
     var functionResult = scriptResult.FunctionResult as Dictionary<string, string>;
     var token = functionResult["token"];
  },
  playfabError => { Debug.LogError($"GetXsollaAccessToken error: {playfabError.ErrorMessage}"); });
void UMyClass::GetXsollaToken()
{
    FClientExecuteCloudScriptRequest tokenRequest;
    tokenRequest.FunctionName = TEXT("GetXsollaAccessToken");

    UPlayFabClientAPI::FDelegateOnSuccessExecuteCloudScript onSuccess;
    onSuccess.BindUFunction(this, "OnTokenRecieved");

    UPlayFabClientAPI::FDelegateOnFailurePlayFabError onFailure;
    onSuccess.BindUFunction(this, "OnError");

    UPlayFabClientAPI::ExecuteCloudScript(tokenRequest, onSuccess, onFailure, nullptr);
}

void UMyClass::OnTokenRecieved(FClientExecuteCloudScriptResult result, UObject* customData)
{
    const FString& token = result.FunctionResult->GetStringField(TEXT("token"));

    // do something with a token
}

void UMyClass::OnError(FPlayFabError error, UObject* customData)
{
    // handle errors
}

Note
In diesem Beispiel verwenden wir die Methoden des PlayFab SDK, um eine Anfrage an das Cloud Skript zu stellen. Sie können die Anfrage- und Antwortverarbeitung selbst implementieren, ohne das PlayFab SDK zu Ihrem Projekt hinzuzufügen.

  1. Implementieren Sie in der Anwendung eigenständig Methoden für die Arbeit mit der API oder verwenden Sie Xsolla-SDKs.

War dieser Artikel hilfreich?
Vielen Dank!
Gibt es etwas, das wir verbessern können? Nachricht
Das tut uns leid
Bitte erläutern Sie, weshalb dieser Artikel nicht hilfreich ist. Nachricht
Vielen Dank für Ihr Feedback!
Wir werden Ihr Feedback aufgreifen und dazu nutzen, Ihr Erlebnis verbessern.
Diese Seite bewerten
Diese Seite bewerten
Gibt es etwas, das wir verbessern können?

Jetzt nicht

Vielen Dank für Ihr Feedback!

Nützliche Links

Letztmalig aktualisiert: 18. Oktober 2021

Haben Sie einen Tippfehler oder einen anderen Textfehler gefunden? Wählen Sie den Text aus und drücken Sie Strg+Eingabe.

Problem melden
Wir überprüfen unsere Inhalte ständig. Ihr Feedback hilft uns, sie zu verbessern.
Geben Sie eine E-Mail-Adresse an, damit wir Sie erreichen können
Vielen Dank für Ihr Feedback!