跳轉至

PG 付款

Hive IAP v4 支援在 PC 和移動環境中的 PG 付款。在 PC 環境中,下面的付款請求畫面會在新窗口中顯示。

在申請PG 付款之前,請檢查Hive PG 付款政策,並根據PG付款控制台指南的前期工作在控制台中註冊必要的信息。

PG 付款功能

Hive PG 付款的主要功能 如下所示。

  • Hive PG 付款基於 Hive IAP v4PG 付款 API 運作,並通過 支付機構 (PG) 提供的網頁瀏覽器 進行異步處理。

  • 在控制台中提前注册的信息反映在商店配置所需的产品价格和产品信息中,产品信息通过 Hive SDK v4 传输。

  • 如果在控制台中註冊了接收付款結果的URL,則付款結果將發送到該URL。根據付款方式,有些情況下無法立即傳輸付款結果。(例如:虛擬帳戶存款)

  • 已完成付款的訂單必須通過transactionFinish(marketPid) API處理產品付款完成。

  • 如果您想重新購買已完成付款但付款完成處理尚未完成的產品,則付款將不會進行。 您可以在之前購買的產品的付款完成處理後重新購買。

  • 如果您嘗試購買尚未完成付款的其他產品,例如在付款尚未完成時打開多個付款窗口,只有第一筆付款會完成,其餘的購買將自動取消,即使它們已經付款。

  • 付款可能會在遊戲伺服器的酌情權下被取消,即使已提出付款完成處理請求。


PG 付款流程

適用於 Hive SDK 的 PG 付款操作流程如下。

  1. 呼叫 hive.IAPV4.purchase(marketPid, iapPayload, onIAPV4PurchaseCB) 以請求購買
  2. 購買完成後,收據資訊以 bypassInfo 的形式通過 onIAPV4PurchaseCB 參數發送到遊戲伺服器

    Note

    Hive 從 SDK 25.1.0 開始,購買完成信號是由 SDK 發送,而不是 IAP 伺服器。

  3. Hive 在 IAP 伺服器上進行收據驗證

Note

如果您在控制台中註冊接收付款結果的URL,您將會從SDK收到重複的購買完成信號,因此您必須要麼不在控制台中註冊接收付款結果的URL,要麼必須處理重複的收據。

  1. 调用 hive.IAPV4.transactionFinish(marketPid) 来完成产品的支付


多數量購買

Hive PG 付款 支持多數量購買。通過在請求購買時指定數量,您可以在一次付款中購買多個相同的應用內產品。

Hive SDK 调用 hive.IAPV4.purchase(marketPid, iapPayload, quantity, onIAPV4PurchaseCB),并使用 quantity 参数,允许您指定数量。

Note

多數量購買僅支持可重複購買的消耗性應用內產品。請小心不要重複購買一次性產品。

請求多數量購買的範例代碼如下。

API 參考: [hive .IAPV4.purchase](http://developers.withhive.com/HTML/v4_api_reference/Unity3D/group___i_a_p_v4.html#ga4f5a16cebe1b2b1fab22126faacafbec)

```cs
using hive;    
        String marketPid = "{YOUR_PRODUCT_MARKET_PID}";    
        String iapPayload = "{YOUR_CUSTOM_PAYLOAD}";
        int quantity = 3;

        IAPV4.purchase(marketPid, iapPayload, quantity, (ResultAPI result, IAPV4Receipt receipt) => {    
        if (result.isSuccess()) {    
                         // TODO: Request verification of receipt with received receipt    
                 }    
});
```
```c++

#include "HiveIAPV4.h"

FString MarketPid = TEXT("YOUR_PRODUCT_MARKET_PID");
FString IapPayload = TEXT("YOUR_CUSTOM_PAYLOAD");
int32 Quantity = 3;

FHiveIAPV4::Purchase(MarketPid, IapPayload, Quantity, FHiveIAPV4OnPurchaseDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveIAPV4Receipt& Receipt) {
                if (Result.IsSuccess()) {
                                // API 呼叫成功
                }
}));
```
API 參考: [IAPV4 ::purchase](http://developers.withhive.com/HTML/v4_api_reference/CPP/group___i_a_p_v4.html#ga2bff8cc9d70d0a25eaddc9d45dac86b8)

```cpp
#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
        using namespace std;    
        using namespace hive;    
        string marketPid = "{YOUR_PRODUCT_MARKET_PID}";    
        string iapPayload = "{YOUR_CUSTOM_PAYLOAD}";
        int quantity = 3;
        IAPV4::purchase(marketPid, iapPayload, quantity, [=](ResultAPI const & result, IAPV4Receipt const & receipt) {    
                 if (result.isSuccess()) {    
                         // TODO: Request verification of receipt with received receipt    
                 }    
});
```
API 參考: [com.hive.IAPV4.purchase](https://developers.withhive.com/HTML/dokka/-hive%20-s-d-k%20v4/com.hive/-i-a-p-v4/purchase.html)

```kt
import com.hive.IAPV4    
        import com.hive.ResultAPI    
        val marketPid = "{YOUR_PRODUCT_MARKET_PID}"    
        val iapPayload = "{YOUR_CUSTOM_PAYLOAD}"
        val quantity = 3
        IAPV4.purchase(marketPid, iapPayload, quantity, object : IAPV4.IAPV4PurchaseListener {    
                 override fun onIAPV4Purchase(result: ResultAPI, iapV4Receipt: IAPV4.IAPV4Receipt?) {    
                         if (result.isSuccess) {    
                                 // call successful    
                         }    
                 }    
})
```
API 參考: [com .hive.IAPV4.purchase](https://developers.withhive.com/HTML/v4_api_reference/Android/group___i_a_p_v4.html#gad5e467681ef02fc2ab393bad201e617c)

```java
import com.hive.IAPV4;    
        import com.hive.ResultAPI;    
        String marketPid = "{YOUR_PRODUCT_MARKET_PID}";    
        String iapPayload = "{YOUR_CUSTOM_PAYLOAD}";
        int quantity = 3;
        IAPV4.INSTANCE.purchase(marketPid, iapPayload, quantity, (result, iapV4Receipt) -> {    
                 if (result.isSuccess()) {    
                         // call successful    
                 }    
});
```
API 參考: [HIVEIAPV4::purchase:additionalInfo:handler:](https://developers.withhive.com/documentation/hiveiapv4/iapv4interface/purchase(_:iappayload:handler:))

```swift
import HIVEService    
        let marketPid = "{YOUR_PRODUCT_MARKET_PID}"    
        let iapPayload = "{YOUR_CUSTOM_PAYLOAD}"
        let quantity = 3

        HIVEIAPV4.purchase(marketPid, iapPayload, quantity) { result, receipt in    
                 if result.isSuccess() {    
                         // TODO: Request verification of receipt with received receipt    
                 }    
}
```
<strong>API 參考</strong>: <a href="[cgv hive_sdk4_ios_api_ref_en]/group___i_a_p_v4.html#ga4cd19176f947717f2c7be545ed76a6e0" target="_blank" rel="noopener noreferrer">HIVEIAPV4::purchase:additionalInfo:handler:</a >

```objc
#import <HIVEService/HIVEService-Swift.h>

NSString *marketPid = @"{YOUR_PRODUCT_MARKET_PID}";
NSString *iapPayload = @"{YOUR_CUSTOM_PAYLOAD}";
NSNumber quantity = 3;

[HIVEIAPV4 購買: marketPid iapPayload: iapPayload 數量 handler: ^(HIVEResultAPI *result, HIVEIAPV4Receipt *receipt) {
        if ([result isSuccess]) {
                // TODO: 使用收到的收據請求驗證
        }
}];
```