การชำระเงิน PG
Hive IAP v4 รองรับการชำระเงิน PG ในสภาพแวดล้อม PC และมือถือ ในสภาพแวดล้อม PC หน้าจอการขอชำระเงินด้านล่างจะแสดงในหน้าต่างใหม่
ก่อนที่จะใช้ การชำระเงิน PG ให้ตรวจสอบ นโยบายการชำระเงิน PG ของ Hive และลงทะเบียนข้อมูลที่จำเป็นในคอนโซลตาม การเตรียมงาน ของคู่มือคอนโซลการชำระเงิน PG.
ฟีเจอร์การชำระเงิน PG¶
ฟีเจอร์หลักของการชำระเงิน PG Hive มีดังนี้
-
Hive การชำระเงิน PG ทำงานตาม Hive IAP v4 และ PG Payment API และจะถูกประมวลผลแบบอะซิงโครนัสผ่าน เว็บเบราว์เซอร์ที่จัดเตรียมโดยหน่วยงานการชำระเงิน (PG).
-
ข้อมูลที่ลงทะเบียนไว้ล่วงหน้าในคอนโซลจะสะท้อนในราคาสินค้าและข้อมูลสินค้าที่จำเป็นสำหรับการตั้งค่าร้านค้า และข้อมูลเกี่ยวกับสินค้าจะถูกส่งผ่าน Hive SDK v4.
-
หากมี URL สำหรับรับผลการชำระเงิน ลงทะเบียนในคอนโซล ผลการชำระเงินจะถูกส่งไปยัง URL นั้น ขึ้นอยู่กับวิธีการชำระเงิน อาจมีสถานการณ์ที่ไม่สามารถส่งผลการชำระเงินได้ทันที (ตัวอย่าง: การฝากบัญชีเสมือน)
-
คำสั่งซื้อต่างๆ ที่ชำระเงินเสร็จสิ้นแล้วจะต้องได้รับการประมวลผลเพื่อให้การชำระเงินสำหรับผลิตภัณฑ์เสร็จสมบูรณ์ผ่านทาง
transactionFinish(marketPid)
API. -
หากคุณต้องการซื้อผลิตภัณฑ์อีกครั้งซึ่งการชำระเงินได้เสร็จสิ้นแล้ว แต่ การประมวลผลการชำระเงินเสร็จสิ้น ยังไม่เสร็จสิ้น การชำระเงินจะไม่ดำเนินการต่อ คุณสามารถซื้อผลิตภัณฑ์อีกครั้งหลังจากการประมวลผลการชำระเงินของผลิตภัณฑ์ที่ซื้อก่อนหน้านี้เสร็จสิ้น
-
หากคุณพยายามที่จะซื้อผลิตภัณฑ์เพิ่มเติมที่การชำระเงินยังไม่เสร็จสมบูรณ์ เช่น เมื่อคุณเปิดหน้าต่างการชำระเงินหลายหน้าต่างในขณะที่การชำระเงินยังไม่เสร็จสมบูรณ์, การชำระเงินเพียงครั้งแรกจะเสร็จสมบูรณ์ และการซื้อที่เหลือจะถูกยกเลิกโดยอัตโนมัติ แม้ว่าจะมีการชำระเงินแล้วก็ตาม
-
การชำระเงินอาจถูกยกเลิกตามดุลยพินิจของเซิร์ฟเวอร์เกมแม้ว่าจะมีการส่งคำขอประมวลผลการชำระเงินเสร็จสมบูรณ์ก็ตาม
กระบวนการชำระเงิน PG¶
กระบวนการดำเนินการชำระเงิน PG ที่ใช้ SDK ของ Hive มีดังนี้
- เรียกใช้
hive.IAPV4.purchase(marketPid, iapPayload, onIAPV4PurchaseCB)
เพื่อขอซื้อ -
หลังจากการซื้อเสร็จสิ้น ข้อมูลใบเสร็จในรูปแบบของ
bypassInfo
จะถูกส่งไปยังเซิร์ฟเวอร์เกมผ่านอาร์กิวเมนต์onIAPV4PurchaseCB
Note
Hive เริ่มตั้งแต่ SDK 25.1.0 สัญญาณการเสร็จสิ้นการซื้อจะถูกส่งจาก SDK ไม่ใช่จากเซิร์ฟเวอร์ IAP.
-
Hive ดำเนินการตรวจสอบใบเสร็จในเซิร์ฟเวอร์ IAP
Note
หากคุณลงทะเบียน URL เพื่อรับผลลัพธ์การชำระเงิน ในคอนโซล คุณจะได้รับสัญญาณการซื้อที่เสร็จสมบูรณ์ซ้ำจาก SDK ดังนั้นคุณต้องไม่ลงทะเบียน URL เพื่อรับผลลัพธ์การชำระเงิน ในคอนโซล หรือคุณต้องจัดการกับใบเสร็จซ้ำ
- เรียกใช้
hive.IAPV4.transactionFinish(marketPid)
เพื่อทำการชำระเงินสำหรับผลิตภัณฑ์
การซื้อหลายจำนวน¶
Hive PG Payment รองรับการซื้อหลายจำนวน โดยการระบุจำนวนเมื่อขอซื้อ คุณสามารถซื้อผลิตภัณฑ์ในแอปเดียวกันมากกว่าหนึ่งรายการในการชำระเงินครั้งเดียว
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 call successful
}
}));
```
API Reference: [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 purchase: marketPid iapPayload: iapPayload quantity handler: ^(HIVEResultAPI *result, HIVEIAPV4Receipt *receipt) {
if ([result isSuccess]) {
// TODO: Request verification of receipt with received receipt
}
}];
```