查看产品列表和购买
搜尋產品列表¶
當用戶進入應用內商店時,調用產品列表搜索API。如果用戶請求產品列表,則返回包含產品信息的IAPV4Product
類。
產品列表和詳細資訊¶
欄位名稱 | 描述 |
---|---|
marketPid | 在應用內商店註冊的固有產品ID |
currency | 貨幣類型(例如:KRW/USD) |
price | 產品價格 |
title | 產品標題 |
displayPrice | 產品價格的字串類型(例如:$100.00) 更多 |
productDescription | 產品細節 |
originalMarketJson | 從市場接收到的產品資訊 使用 Google 訂閱 V2 時,可以使用 originalMarketJson 檢查在 Google Play Console 中定義的產品資訊 |
displayOriginalPrice | 折扣前的價格字串 |
originalPrice | 沒有折扣的原始價格 |
iconURL | 產品圖示 (512*512) 僅適用於 Hive SDK v4.12.0 及以後版本,僅限 Google |
displayPrice¶
- 在訂單中發送顯示價格,結合貨幣符號和價格(例如 $0.99)。由於 Android 或 iOS 有其自己的顯示類型,貨幣符號和價格的順序可能會根據操作系統在不同國家顯示不同。
- 確保每個國家的貨幣符號與其表格相同。請參考識別政策以確認貨幣符號的表格。
- 如果需要添加或更改增值稅的其他國家,伺服器會計算所有貨幣的增值稅並添加到顯示價格、價格、顯示原始價格和原始價格中。因此,您不需要再處理與增值稅相關的工作。
Note
Google 支持在价格和原价不同的情况下显示原价。如果两个值相同,则该商品不在促销中。
Apple 不提供 iconURL 值。
originalPrice 和 displayOriginalPrice 仅适用于 Google (v4 12.0.0 +) 和 Apple (v4 24.0.0 +)。如果价格值和原价值相同,则表示该商品不处于折扣状态。相反,如果两个值不同,由于正在折扣中,可以使用它分别显示折扣价格和原价。
要搜索产品列表,请在IAPV4类中调用getProductInfo()
方法,以接收列表的产品信息和Lebi余额。
以下是请求搜索产品列表的示例代码。
API 參考: hive .IAPV4.getProductInfo
API 參考: IAPV4 ::getProductInfo
API 參考: IAPV4.getProductInfo
API 參考: com .hive.IAPV4.getProductInfo
API 參考: IAPV4Interface .getProductInfo
API 參考: HIVEIAPV4::getProductInfo
Warning
未能调用 getProductInfo()
方法将无法在实现产品列表时利用可消耗产品的信息。
這要求遊戲客戶端直接實現返回結果 API 失敗的響應,例如 重試直到獲得成功回調 或 向用戶顯示錯誤彈出窗口(例如,市場不可用)。
有關結果 API 代碼的詳細資訊,請參見 結果 API 代碼 - IAP v4。
Note
在 Windows 應用程式中使用 GOOGLE\_PLAYSTORE
市場進行 Google Play(Hive SDK v4 Unity Windows 23.0.0 或更高版本)時,第一次調用 IAPV4.getProductInfo
時,會出現一個 Google 帳戶登錄畫面,供應用程式用戶選擇用於支付產品的帳戶。此登錄過程不是應用程式開發者實現的功能;它是由 Hive SDK 自動執行的。
如果用於支付的 Google 帳戶的身份驗證信息過期,Hive SDK 會自動執行重新身份驗證過程。
產品購買¶
在IAPV4類別中調用purchase()
方法,使用市場PID,這是一個在Apple App Store和Google Play Store上註冊的參數,以請求IAP v4的產品購買。
以下是請求產品購買的示例代碼。
API 參考: hive .IAPV4.purchase
#include "HiveIAPV4.h"
FString MarketPid = TEXT("YOUR_PRODUCT_MARKET_PID");
FString IapPayload = TEXT("YOUR_CUSTOM_PAYLOAD");
FHiveIAPV4::Purchase(MarketPid, IapPayload, FHiveIAPV4OnPurchaseDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveIAPV4Receipt& Receipt) {
if (Result.IsSuccess()) {
//TODO: Request verification of receipt with received receipt
}
}));
API 參考: IAPV4 ::purchase
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
string marketPid = "{YOUR_PRODUCT_MARKET_PID}";
string iapPayload = "{YOUR_CUSTOM_PAYLOAD}";
IAPV4::purchase(marketPid, iapPayload, [=](ResultAPI const & result, IAPV4Receipt const & receipt) {
if (result.isSuccess()) {
// TODO: Request verification of receipt with received receipt
}
});
API 參考: com.hive.IAPV4.purchase
import com.hive.IAPV4
import com.hive.ResultAPI
val marketPid = "{YOUR_PRODUCT_MARKET_PID}"
val iapPayload = "{YOUR_CUSTOM_PAYLOAD}"
IAPV4.purchase(marketPid, iapPayload, object : IAPV4.IAPV4PurchaseListener {
override fun onIAPV4Purchase(result: ResultAPI, iapV4Receipt: IAPV4.IAPV4Receipt?) {
if (result.isSuccess) {
// call successful
}
}
})
API 參考: com .hive.IAPV4.purchase
API 參考: HIVEIAPV4::purchase:additionalInfo:handler:
#import <HIVEService/HIVEService-Swift.h>
NSString *marketPid = @"{YOUR_PRODUCT_MARKET_PID}";
NSString *iapPayload = @"{YOUR_CUSTOM_PAYLOAD}";
[HIVEIAPV4 購買: marketPid iapPayload: iapPayload handler: ^(HIVEResultAPI *result, HIVEIAPV4Receipt *receipt) {
if ([result isSuccess]) {
// TODO: 請求驗證收到的收據
}
}];
Note
支援的功能可能因操作系統/市場而異。欲了解更多詳情,請參見支援功能的狀態。
使用 iapPayload
¶
在执行购买(purchase()
)或订阅(purchaseSubscription
)方法时,游戏公司可以将 iapPayload
作为参数传递。iapPayload
是由游戏公司定义的购买元数据。例如,当用户购买产品时,它可能包含购买时间、购买用户信息、购买的游戏角色信息、购买数量(消耗品)、购买令牌等。
如果 iapPayload
被作为参数传递,IAP 服务器将会 验证购买收据,将此 iapPayload
值与对应的购买收据进行匹配,并通知游戏服务器。具体来说,将 iapPayload
值和与唯一收据密钥对应的 hiveiap_transaction_id
值进行匹配并传输到游戏服务器。
利用購買收據和 iapPayload
配對可以解決許多問題。例如,可能會出現這樣的情況:用戶購買了一個項目時發生錯誤,付款已完成但項目未交付。此時,如果執行 restore()
方法,您可以獲得該項目的購買收據。但是,由於這個收據不包含有關項目類型、購買時間和購買該項目的角色的信息,因此很難確切知道遊戲公司應該為用戶恢復哪個項目。然而,這些信息可以通過與購買收據配對的 iapPayload
知道,這樣就可以向用戶提供該項目。
Warning
當傳遞 iapPayload
時,建議對其進行加密。與收據不同,iapPayload
易受偽造和篡改的影響。
設定消耗品項目的購買數量¶
Google Play 商店允許用戶在單一交易中通過在購物車中指定數量來購買兩個或更多相同的應用內產品。如果您的 Google Play 控制台產品設置允許多數量購買,您的應用應該處理多數量購買並根據指定的購買數量交付商品。然而,多數量購買僅適用於可消耗的應用內產品,這些產品在消耗後可以再次購買。請勿為無法重複購買的產品啟用此功能。
Note
如果您對某個項目應用多數量購買,您可以在收據驗證響應中的 hiveiap_quantity
檢查購買數量。
呼叫 purchase()
方法前的注意事項¶
- 如果在因市場問題而調用
purchase()
方法時發送 RESPONSE_FAIL 或 CANCELED 錯誤,請通知用戶購買過程中發生錯誤。 - 如果因市場問題而通知用戶購買問題,請調用
restore()
方法以恢復購買。 - 如果在調用
purchase()
方法時發送 NEED_RESTORE 錯誤,則購買被取消。要恢復購買,請調用restore()
方法。 - 如果計費系統嘗試離線支付或孩子要求父母代為支付時調用
purchase()
方法,則會發送 ITEM_PENDING 錯誤,該項目將進入待處理狀態。父母的代理購買在 Google Play 商店、亞馬遜和 Apple App Store 市場上受到支持。 - 如果成功進行離線支付或父母代替孩子進行支付,則通過 UserEngagement 發送 IAP_UPDATED 事件。 當通過 UserEngagement eventEnd 回調返回參數時,如果
type
為 "subscription",則調用restoreSubscription()
,如果type
為空,則調用restore()
。可以通過調用這些方法檢查完成的收據。 - 要排除通知不可用購買的 NOT_SUPPORTED 錯誤,請參考 限制應用內購買的短語指南。
- 在桌面環境中通過 HIVESTORE 購買時,支付請求屏幕將在新窗口中顯示。
呼叫 hive.IAPV4.purchase(marketPid, null, onIAPV4PurchaseCB);
將立即返回一個響應,包含 ErrorCode:IAPSUCCESS=90 和 Code:IAPV4HiveStoreSuccess=-6110000,而不包含收據信息,通過 onIAPV4PurchaseCB
。根據 ErrorCode(或 Code),可以顯示有關物品分發資格狀態的指導消息。
- 對於在 Google Play 上的 Windows 應用程式(Hive SDK v4 Unity Windows 23.0.0 或更高版本)使用
GOOGLE\_PLAYSTORE
市場的情況,如果用於付款的 Google 帳戶的身份驗證信息過期,Hive SDK 會自動執行重新身份驗證過程。 - 對於在 Google Play 上的 Windows 應用程式(Hive SDK v4 Unity Windows 23.0.0 或更高版本)使用
GOOGLE\_PLAYSTORE
市場的情況,當用戶在應用程式中顯示的付款等待彈出窗口上按下確認按鈕,且付款完成未確認時,會通過onIAPV4PurchaseCB
返回ErrorCode:IAPSUCCESS=90
和Code:IAPV4PendingPurchase=-6100013
的響應。此響應並不表示付款失敗,而是因為內部錯誤無法確認付款完成,或者用戶只是沒有進行付款。在這種情況下,不會返回收據,如果用戶在付款瀏覽器窗口中已完成付款,則可以通過IAPV4.restore
獲取收據。
購買錯誤代碼¶
錯誤代碼 | 描述 |
---|---|
NEED_INITIALIZE | 無法初始化 |
NETWORK | 網路錯誤 |
NOT_SUPPORTED | 無法購買(設備上的應用內購買被拒絕等)。用戶設置了不可用的商店 |
INVALID_SESSION | 無效的購買會話 |
INVALID_PARAM | 無效的參數 |
IN_PROGRESS | 購買API正在進行中 |
ITEM_PENDING | 提示離線支付或孩子要求父母代其支付 |
CANCELED | 用戶已取消 |
NEED_RESTORE | 需要恢復API |
RESPONSE_FAIL | IAP伺服器錯誤 |
限制應用內購買的短語¶
Korean | 앱 내 구입 기능이 차단이 되어 구매가 불가합니다. 해제 후 다시 시도해 주세요. (설정 > 스크린 타임 > 콘텐츠 및 개인 정보 보호 제한 > iTunes 및 App Store 구입 > 앱 내 구입) |
---|---|
English | You can't make a purchase because the in-app purchase feature has been blocked. Please unblock the feature and try again. (Settings > Screen Time > Content & Privacy Restrictions > iTunes & App Store Purchases > In-app Purchases) |
French | u ne peux pas effectuer l'achat car la fonction d'achat in-app a été bloquée. Débloque d'abord la fonction et essaie de nouveau. (Réglages > Temps d’écran > Restrictions relatives au contenu et à la confidentialité > Achats dans l’iTunes et l’App Store > Achats intégrés) |
German | Kauf nicht möglich, weil das In-App-Kauf-Feature gesperrt ist. Bitte entsperre es und versuche es erneut. (Einstellungen > Bildschirmzeit > Beschränkungen > Käufe im iTunes & App Store > In-App-Käufe) |
Japanese | App内の購入機能が制限されており、購入できません。 解除した後、再度お試しください。 (設定 > スクリーンタイム > コンテンツとプライバシーの制限 > iTunesおよびApp Storeでの購入 > App内課金) |
Chinese Simplified | 因App内购功能已关闭,无法进行购买。 请开启后再试。 (设置 > 屏幕使用时间 > 内容和隐私访问限制 > iTunes Store 与 App Store 购买项目 > App 内购买项目) |
Chinese Traditional | 因App內購功能已關閉, 無法進行購買. 請開啟後重新再試 (設定 > 螢幕使用時間 > 內容與隱私權限制 > iTunes 與 App Store 購買 > App 內購買) |
Russian | Покупка недоступна, т.к. на устройстве отключены встроенные покупки. Активируйте данную функцию и повторите попытку. (Настройки > Экранное время > Контент и конфиденциальность > Покупки в iTunes Store и App Store > Встроенные покупки) |
Spanish | No se puede realizar la compra porque la función de Compras en la app ha sido bloqueada. Favor de desbloquear la función y volver a intentar. (Ajustes > Tiempo de uso > Restricciones de contenido y privacidad > Compras en iTunes y App Store > Compras dentro de la app) |
Portuguese | Você não pode efetuar uma compra porque a função de compra do app foi bloqueada. Por favor, desbloqueie a função e tente novamente. (Definições > Tempo de ecrã > Conteúdo e privacidade > Compras na iTunes e App Store > Compras integradas) |
Indonesian | Pembelian tidak bisa dilakukan karena fitur pembelian In-App telah dibatasi. Silakan matikan pembatasan dan coba lagi. (Pengaturan > Durasi Layar > Pembatasan Konten & Privasi > Pembelian iTunes & App Store > Pembelian In-app) |
Turkish | Uygulama içi satın alma özelliği bloke edildiği için satın almayı yapamazsınız. Lütfen özelliğin blokajını kaldırıp tekrar deneyiniz. (Ayarlar > Ekran Süresi > İçerik ve Gizlilik Sınırlamaları > iTunes ve App Store Satın Alımları > Uygulama İçi Satın Alım) |
Vietnamese | Bạn không thể thực hiện giao dịch do tính năng Mua In-App đang bị tắt. Vui lòng bật tính năng và thử lại. (Cài đặt > Thời gian sử dụng > Bật giới hạn > Mua hàng iTunes & App Store > Mua In-app) |
Thai | คุณไม่สามารถซื้อได้เนื่องจากเมนูการซื้อของในแอพพลิเคชั่นถูกบล็อคอยู่ กรุณาปลดล็อคแล้วลองอีกครั้ง (การตั้งค่า > เวลาหน้าจอ > จำกัดเนื้อหาและความเป็นส่วนตัว > สินค้าที่ซื้อใน iTunes & App Store > การซื้อภายในแอพ) |
Italian | Non puoi effettuare l'acquisto perché la funzione di acquisti in-app è bloccata. Preghiamo di sbloccare la funzione e riprovare. (Impostazioni > Tempo di utilizzo > Contenuti e privacy > Acquisti su iTunes e App Store > Acquisti in-app) |
Arabic | .لا يمكنك إجراء عملية شراء لأن ميزة الشراء داخل التطبيق قد تم حظرها .الرجاء إلغاء حظر الميزة والمحاولة مرة أخرى (الإعدادات > مدة استخدام الجهاز > قيود المحتوى والخصوصية > الشراء من iTunes Store و App Store > الشراء من داخل التطبيق) |
通知購買撤回政策的短語¶
根據內容產業促進法,請在您的遊戲商店上公開關於購買撤回的通知以及您購買撤回政策的鏈接。對於iOS,如果在Apple對您的應用進行檢查過程中公開了購買撤回的通知,這可能會成為拒絕審核您遊戲的原因。