Skip to content

결제

결제 모듈은 게임 내 아이템 구매 및 완전 구매(买断) 결제 기능을 제공합니다.
JOGOS_SDK 소개 페이지에서 사용 중인 엔진 관련 내용을 읽은 후 아래와 같이 사용하세요.

javascript
window.JOGOS_SDK.payment;

인앱 구매

1단계: 상품 ID 생성

  • 개발자 대시보드 Information / Purchase 페이지에서 상품을 생성합니다.
  • 동일 게임 내 상품 ID는 중복될 수 없습니다.

2단계: 주문 발행

  • 플레이어가 게임 내 아이템을 구매할 때 상품 구매 버튼에 이 인터페이스를 연결하면 Jogos 결제 창이 열립니다.
  • 상품 ID를 전달하면 결제 창 열기 성공 시 주문 번호가 반환되며, 이 번호로 추후 주문 정보를 조회할 수 있습니다.
  • goodsId는 개발자 대시보드에서 생성한 상품 ID입니다.
javascript
// 성공 시 주문 번호 반환
let orderNo = await window.JOGOS_SDK.payment.buyGoods(goodsId: string);

3단계: 사용자 결제 대기

클라이언트에서 주문 결제 완료 알림 구독

주문 후 실제 결제까지 시간이 걸릴 수 있습니다.
이 인터페이스로 결제 성공 알림을 구독하면 결제 완료 시 플랫폼이 등록된 콜백을 호출해 주문이 결제되었음을 알리고 최신 주문 정보를 반환합니다.

javascript
window.JOGOS_SDK.payment.subscribeOrderPaid(callbackFn: (order: PaymentOrder) => void);

4단계: 발송 및 플랫폼에 주문 발송 완료 알림

클라이언트에서 발송 처리(단독 게임)

개발자는 플레이어 결제 성공을 감지하면 자동으로 보상을 지급하고 이 인터페이스를 호출해 플랫폼에 발송 완료를 알립니다.

알림
  • 게임에 별도 서버가 없을 경우, 클라이언트에서 결제를 감지하면 이 인터페이스를 호출해 Jogos 플랫폼에 해당 사용자에게 발송 완료를 알리는 것을 권장합니다.
  • 인터페이스 반환 결과에 따라 게임 내 보상 지급 또는 오류 메시지를 표시하세요.
  • 발송 후 클라우드 세이브 동기화 인터페이스를 호출해 플레이어 데이터를 저장하는 것을 권장합니다.
javascript
await window.JOGOS_SDK.payment.deliverGoods(orderNo: string);

"게임 서버" 연결 방식:

서버 연결 관련 API는 페이지 서버 사이드 연결 인터페이스를 참조하세요.


기타 인터페이스

결제 개선 제안
  • 클라이언트에서 결제 성공 알림 구독(subscribeOrderPaid)은 네트워크 등 불가피한 요인으로 100% 도달을 보장할 수 없습니다. 주문 정보 조회 인터페이스로 최신 결제 상태를 확인하는 것을 권장합니다.
  • 일부 단독 게임은 세이브 삭제 기능을 제공할 수 있으며, 이전 결제 보상을 재지급할지는 개발자 재량입니다. 주문 목록 조회 인터페이스로 플레이어의 모든 주문을 가져와 재지급할 수 있습니다.
  • 주문 정보 획득 후 status 필드로 주문을 처리하세요.

주문 정보

주문 번호로 상세 정보 조회. 구조는 다음과 같습니다:

javascript
// 결제 주문
export interface PaymentOrder {
  // 게임 ID
  gameId: number;
  // 게임 이름
  gameName: string;
  // 사용자 ID
  userId: number;
  // 주문 번호
  orderNo: string;
  // 상품 ID
  productId: string;
  // 상품 이름
  productName: string;
  // 통화
  currency: string;
  // 국가
  country: string;
  // 할인
  discount: number;
  // Jogos 코인 차감
  calorcoin: number;
  // 결제 금액
  paid: number;
  // 결제 채널
  channel: string;
  // 결제 유형
  paymentType: string;
  // 결제 번호
  paymentNo: string;
  // 발송 여부
  deliverGoods: boolean;
  // 주문 상태 pending: 미결제 fail: 실패 cancel: 취소 expire: 만료 success: 성공 refunding: 환불 중 refunded: 환불 완료 refund-fail: 환불 실패
  status: 'pending' | 'fail' | 'cancel' | 'expire' | 'success' | 'refunding' | 'refunded' | 'refund-fail';
  // 주문 생성 시간
  createTime: String;
  // 환불 번호
  refundNo: String;
  // 환불 설명
  refundDescription: String;
  // 환불 신청 시간
  refundTime: String;
  // 환불 완료 시간
  refundedTime: String;
}

주문 정보 조회

javascript
// 성공 시 주문 정보 반환
let order = await window.JOGOS_SDK.payment.getOrderDetail(orderNo: string);

주문 목록 조회

개발자는 본 인터페이스로 특정 상태의 주문 목록을 페이징 조회할 수 있으며, 반환되는 각 주문 객체는 상세 조회와 동일한 구조입니다.

javascript
// 성공 시 주문 목록 반환
let orderList = await window.JOGOS_SDK.payment.getOrderList(
  status?: 'pending' | 'fail' | 'cancel' | 'expire' | 'success' | 'refunding' | 'refunded',
  pageNo?: number,  // 페이지 번호, 기본값 1
  pageSize?: number // 페이지당 건수, 기본값 20
);
javascript
// 성공 시 주문 번호 반환
let orderNo = await window.JOGOS_SDK.payment.buyOut();
*중요 알림*

체험판・정식판 모두 게임의 첫 시작 씬에서 반드시 초기화를 수행하고 콜백 완료 후 게임 로직을 실행하세요. Jogos는 초기화 시점에 사용자가 게임을 구매했는지 검증하며, 미구매 시 플레이를 계속할 수 없습니다.
이는 불법 복제를 방지하는 효과적인 수단입니다.