엑솔라 솔루션 기반 인벤토리에 아이템 추가

엑솔라는 인게임 스토어 제품 기반 플레이어 인벤토리(플레이어 인벤토리) 구현용 솔루션을 제공합니다. 이 솔루션은 모든 구매품 및 사용자 프리미엄 보상을 플랫폼 간에 동기화할 수 있게 해 줍니다.

타사 결제 UI(예: Google Play 인앱 구매)를 사용하여 구매한 아이템을 플레이어 인벤토리에 추가할 수 있습니다.

Grant items to users API 서버 쿼리가 호출되면 인벤토리에 아이템이 추가됩니다. 애플리케이션 백 엔드용으로 Firebase를 사용하고 있다면 기본 제공 함수를 사용하세요.

  1. 클라우스 함수를 Firebase 프로젝트에 추가합니다.
  2. 함수 호출 논리를 구현합니다.

클라우드 기능을 Firebase 프로젝트에 추가

  1. Firebase 프로젝트를 초기화합니다.
  2. 인벤토리에 아이템을 추가하는 기능을 불러와서 구성합니다. 조건:
    • <MerchantID>판매자 ID프로젝트 설정 > 웹훅 섹션의 게시자 계정에서 찾을 수 있습니다.
    • <ProjectID>프로젝트 ID프로젝트 설정 > 프로젝트 ID 섹션의 게시자 계정에서 찾을 수 있습니다.
    • <ApiKey>API 키는 회사 설정 > API 키 섹션의 게시자 계정에서 찾을 수 있습니다.

인벤토리에 아이템 추가 기능 코드:

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

exports.redeem = functions.https.onRequest((request, response) => {
  const sku = request.body.sku;
  const quantity = request.body.quantity;
  const userId = request.body.user_id;

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

  const postData = JSON.stringify(
      [{
        "comment": "Purchased by Google Pay",
        "platform": "xsolla",
        "user": {
          "id": userId,
        },
        "items": [{
          "sku": sku,
          "quantity": quantity,
        }],
      }]
  );

  const options = {
    hostname: "store.xsolla.com",
    port: 443,
    path: `/api/v2/project/${projectId}/inventory/reward`,
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Content-Length": postData.length,
      "Authorization": `Basic ${authHeader}`,
    },
  };

  const req = https.request(options, (res) => {
    if (res.statusCode == 200) {
      response.status(200).send();
      return;
    }
    if (res.statusCode == 404) {
      response.status(404).send();
      return;
    }
    if (res.statusCode == 401) {
      response.status(401).send();
      return;
    }
    response.status(400).send();

    res.on("data", (d) => {
      process.stdout.write(d);
    });
  });
  req.on("error", (e) => {
    response.status(500).send(e.message);
  });

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

  1. 이 예시를 따라 프로덕션 환경에 함수를 배포합니다.

애플리케이션에서 함수 호출

인벤토리에 아이템을 추가하려면 논리를 애플리케이션의 함수 호출에 추가한 다음 redeem을 함수 이름으로 지정하고 sku, quantity, user_id 매개 변수를 이에 전달합니다.

일부 청구 인터페이스(예: Google Play 인앱 구매)는 클라이언트 측에서 인벤토리에 아이템 추가용 논리 개시해야 합니다. 이 경우 클라이언트 측 메서드를 구현하여 redeem 함수를 호출하세요.

Android용 구현 예시로 Google Play 인앱 구매를 인벤토리에 추가할 수 있게 하는 xsolla-googleplay-sdk 모듈을 사용할 수 있습니다.

프로젝트 예시 적용 방법:

  1. Android Studio를 시작합니다.
  2. xsolla-googleplay-sdk 모듈을 프로젝트에 추가합니다.
  3. 라이브러리를 초기화합니다. 이를 수행하려면 다음 줄을 Android 프로젝트 소스 코드에 추가해야 합니다. 단, 여기서 조건은 <your-deployment-host>가 클라우드 함수 URL의 호스트이어야 합니다(예: https://us-central1-xsolla-sdk-demo.cloudfunctions.net):

Copy
Full screen
Small screen
InventoryAdmin.init("<your-deployment-host>")

프로덕션의 함수를 실행하면 클라우드 함수 URL이 Firebase 명령줄에 표시됩니다. 또한, 함수 URL을 Functions > Dashboard 섹션의 Firebase 콘솔에서 사용할 수 있습니다.

  1. InventoryAdmin.grantItemToUser (sku, userId, quantity, callback) 메서드 호출을 애플리케이션 논리에 따라 구현합니다. 콜백은 인벤토리에 아이템이 성공적으로 추가되기 시작하면 데이터를 반환합니다.

이 기사가 도움이 되었나요?
감사합니다!
개선해야 할 점이 있을까요? 메시지
유감입니다
이 기사가 도움이 안 된 이유를 설명해 주세요. 메시지
의견을 보내 주셔서 감사드립니다!
메시지를 검토한 후 사용자 경험 향상에 사용하겠습니다.
이 페이지 평가
이 페이지 평가
개선해야 할 점이 있을까요?

답하기 원하지 않습니다

의견을 보내 주셔서 감사드립니다!
마지막 업데이트: 2021년 10월 18일

오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누릅니다.

문제 보고
콘텐츠를 항상 검토합니다. 여러분의 피드백은 콘텐츠를 개선에 도움이 됩니다.
후속 조치를 위해 이메일을 제공해 주세요
의견을 보내 주셔서 감사드립니다!