PG支払い
Hive IAP v4は、PCおよびモバイル環境でPG決済をサポートしています。PC環境では、以下の支払いリクエスト画面が新しいウィンドウに表示されます。
PG決済を適用する前に、Hive PG決済ポリシーを確認し、PG決済コンソールガイドの事前作業に従って必要な情報をコンソールに登録してください。
PG決済機能¶
Hive PG決済の主な機能は以下の通りです。
-
Hive PG決済は Hive IAP v4およびPG決済APIに基づいて運営されており、決済代理店(PG)が提供するウェブブラウザを通じて非同期的に処理されます。
-
コンソールに事前に登録された情報は、店舗設定に必要な製品価格および製品情報に反映され、製品に関する情報は Hive SDK v4 を通じて送信されます。
-
コンソールに支払い結果を受信するためのURLが登録されている場合、支払い結果はそのURLに送信されます。支払い方法によっては、支払い結果を即座に送信できない場合があります。(例: バーチャル口座への入金)
-
支払いが完了した注文は、
transactionFinish(marketPid)
APIを通じて製品の支払い完了のために処理されなければなりません。 -
支払いが完了した商品の再購入を希望する場合、しかし支払い完了処理が完了していない場合、支払いは進行しません。 以前に購入した商品の支払い完了処理が完了した後に再購入できます。
-
支払いが完了していない状態で複数の支払いウィンドウを開くなど、追加の製品を購入しようとした場合、最初の支払いのみが完了し、残りの購入は自動的にキャンセルされます たとえ支払いが完了していても。
-
支払いは、支払い完了処理リクエストが行われた場合でも、ゲームサーバーの裁量でキャンセルされることがあります。
PG支払いプロセス¶
Hive SDKを適用したPG支払い操作プロセスは次のとおりです。
hive.IAPV4.purchase(marketPid, iapPayload, onIAPV4PurchaseCB)
を呼び出して購入をリクエストします-
購入が完了すると、
bypassInfo
形式の領収書情報がonIAPV4PurchaseCB
引数を通じてゲームサーバーに送信されますNote
Hive SDK 25.1.0から、購入完了信号はIAPサーバーではなくSDKから送信されます。
-
Hive IAPサーバーでの領収書確認を進めてください
Note
コンソールに支払い結果を受け取るURLを登録すると、SDKから重複した購入完了信号を受け取ることになるため、コンソールに支払い結果を受け取るURLを登録しないか、重複した領収書を処理する必要があります。
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: 受領書の検証を受領書でリクエストする
}
});
```
```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 call successful
}
}));
```
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: 受け取ったレシートでレシートの検証をリクエストする
}
});
```
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) {
// 成功した呼び出し
}
}
})
```
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: 受領書の検証を受け取った受領書でリクエストする
}
}
```
<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: 受け取ったレシートでレシートの検証をリクエストする
}
}];
```