支付
支付模組提供遊戲內物品的購買支付和買斷支付的相關功能,閱讀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 步:發貨,並通知平台訂單已發貨
由用戶端處理發貨(單機遊戲)
開發者獲知玩家付款成功後,自動處理獎勵發放,並呼叫此介面通知平台已完成發貨。
javascript
await window.JOGOS_SDK.payment.deliverGoods(orderNo: string);
由「遊戲伺服器」接入的方式:
伺服器接入相關API,請參閱:伺服器接入介面
頁面。
其他介面
訂單資訊
根據訂單編號查詢訂單的詳細資訊。訂單結構如下所示:
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
);
買斷制遊戲
- 在開發者後台將您的遊戲設定為「Game Pricing」(買斷制類型),並設定遊戲價格。
- 為您的遊戲建立兩個提交版本:試玩版與正式版
- 試玩版:建議刪除玩家無法接觸到的關卡資產、模型、貼圖、音樂等,僅保留玩家可試玩的內容,額外打包此版本上傳。
- 正式版:玩家可使用完整遊戲內容的版本。
- 在試玩版遊戲內設定購買按鈕:
- 當玩家試玩結束時(例如試玩版達到第一章最後一關),若需購買正式版遊戲,需設計「販售正式版」的介面與購買按鈕:
- 購買按鈕可呼叫
buyOut
介面開啟 Jogos 平台支付視窗,方便玩家儘快購買遊戲正式版; - 當使用者購買成功後,Jogos 平台會自動切換至正式版遊戲供玩家繼續遊玩,開發者無需額外處理。
- 請保持試玩版與正式版的版本號一致,Jogos 平台會自動將使用者存檔遷移至正式版。
- 支付成功後會返回訂單編號,開發者可根據此訂單編號查詢該訂單的相關資訊。
javascript
// 成功返回訂單編號
let orderNo = await window.JOGOS_SDK.payment.buyOut();