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

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

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

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

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

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

  1. Firebase 프로젝트를 초기화.
  2. 인벤토리에 아이템을 추가하기 위한 기능을 가져오고 구성:

    • <MerchantID> - 관리자 페이지에서 확인할 수 있는 판매자 ID:
      • 회사 설정 > 회사 섹션.
      • 관리자 페이지의 브라우저 주소 표시줄에 있는 URL. 해당 URL은 https:​//publisher.xsolla.com/<merchant ID>/<Publisher Account section> 형식으로 되어 있습니다.

    • <ProjectID> - 관리자 페이지에서 확인할 수 있는 프로젝트 ID:
      • 프로젝트 이름 옆에서 확인
      • 프로젝트 설정 > 프로젝트
ID 섹션에서 확인

    • <ApiKey> - 회사 설정 > API 키 또는 프로젝트 설정 > API 키 섹션의 관리자 페이지에서 확인할 수 있는 API key
주의

API 키 작업에 대한 자세한 정보는 API 참조를 확인하세요.

주요 권장 사항:

  • 본인의 공간에 생성된 API 키를 저장합니다.. 생성된 API 키는 관리자 페이지에서 한 번만 볼 수 있습니다.
  • API 키를 비밀로 유지해야 합니다. 이러한 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) 메서드 호출을 애플리케이션 논리에 따라 구현합니다. 콜백은 인벤토리에 아이템이 성공적으로 추가되기 시작하면 데이터를 반환합니다.
이 기사가 도움이 되었나요?
감사합니다!
개선해야 할 점이 있을까요? 메시지
유감입니다
이 기사가 도움이 안 된 이유를 설명해 주세요. 메시지
의견을 보내 주셔서 감사드립니다!
메시지를 검토한 후 사용자 경험 향상에 사용하겠습니다.
이 페이지 평가
이 페이지 평가
개선해야 할 점이 있을까요?

답하기 원하지 않습니다

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

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

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