การชำระเงิน PG
Hive IAP v4 รองรับการชำระเงิน PG ในสภาพแวดล้อม PC และมือถือ ในสภาพแวดล้อม PC หน้าจอการขอชำระเงินด้านล่างจะแสดงในหน้าต่างใหม่
ก่อนที่จะใช้ การชำระเงิน PG ให้ตรวจสอบ นโยบายการชำระเงิน PG ของ Hive และลงทะเบียนข้อมูลที่จำเป็นในคอนโซลตาม การเตรียมงาน ของคู่มือคอนโซลการชำระเงิน PG.
ฟีเจอร์การชำระเงิน PG¶
ฟีเจอร์หลักของการชำระเงิน PG Hive มีดังนี้
-
Hive การชำระเงิน PG ทำงานตาม Hive IAP v4 และ PG Payment API และจะถูกประมวลผลแบบอะซิงโครนัสผ่าน เว็บเบราว์เซอร์ที่จัดเตรียมโดยหน่วยงานการชำระเงิน (PG).
-
คำสั่งซื้อต่างๆ ที่ชำระเงินเสร็จสิ้นแล้วจะต้องได้รับการประมวลผลเพื่อให้การชำระเงินสำหรับผลิตภัณฑ์เสร็จสมบูรณ์ผ่านทาง
transactionFinish(marketPid)API. -
หากคุณต้องการซื้อผลิตภัณฑ์อีกครั้งซึ่งการชำระเงินได้เสร็จสิ้นแล้ว แต่ การประมวลผลการชำระเงินเสร็จสิ้น ยังไม่เสร็จสิ้น การชำระเงินจะไม่ดำเนินการต่อ คุณสามารถซื้อผลิตภัณฑ์อีกครั้งหลังจากการประมวลผลการชำระเงินของผลิตภัณฑ์ที่ซื้อก่อนหน้านี้เสร็จสิ้น
-
หากคุณพยายามที่จะซื้อผลิตภัณฑ์เพิ่มเติมที่การชำระเงินยังไม่เสร็จสมบูรณ์ เช่น เมื่อคุณเปิดหน้าต่างการชำระเงินหลายหน้าต่างในขณะที่การชำระเงินยังไม่เสร็จสมบูรณ์, การชำระเงินเพียงครั้งแรกจะเสร็จสมบูรณ์ และการซื้อที่เหลือจะถูกยกเลิกโดยอัตโนมัติ แม้ว่าจะมีการชำระเงินแล้วก็ตาม
-
การชำระเงินอาจถูกยกเลิกตามดุลยพินิจของเซิร์ฟเวอร์เกมแม้ว่าจะมีการส่งคำขอประมวลผลการชำระเงินเสร็จสมบูรณ์ก็ตาม
คำแนะนำการชำระเงิน PG และการประมวลผลใบเสร็จ¶
ใน Hive SDK 25.1.0 ขึ้นไป วิธีการชำระเงิน PG และการประมวลผลใบเสร็จมีดังนี้
-
เรียกใช้ IAPV4.purchase(marketPid, iapPayload, onIAPV4PurchaseCB) เพื่อขอซื้อ
Warning
หากคุณลงทะเบียน URL สำหรับข้อมูลการชำระเงินที่เสร็จสิ้นใน คอนโซล Hive > บิลลิ่ง > การตั้งค่าสภาพแวดล้อมการชำระเงิน > การตั้งค่า PG > การตั้งค่าฟีเจอร์เพิ่มเติม คุณต้องลบ URL นี้ก่อน
-
หลังจากการซื้อสินค้าเสร็จสมบูรณ์ ข้อมูลใบเสร็จ (
bypassInfo) จะถูกส่งผ่าน callbackonIAPV4PurchaseCB - เกมไคลเอนต์ส่งข้อมูลใบเสร็จนี้ไปยังเซิร์ฟเวอร์เกม
- เซิร์ฟเวอร์เกมเรียกใช้ API ตรวจสอบใบเสร็จ เพื่อตรวจสอบข้อมูลใบเสร็จนี้
- หลังจากการตรวจสอบใบเสร็จเสร็จสมบูรณ์ เรียกใช้ IAPV4.transactionFinish เพื่อดำเนินการจ่ายสินค้าให้เสร็จสมบูรณ์ หากคุณไม่ได้รับข้อมูลใบเสร็จที่แจ้งว่าการซื้อเสร็จสมบูรณ์ผ่าน callback
onIAPV4PurchaseCBในขั้นตอนที่ 2 ข้างต้น ให้เรียกใช้ IAPV4.restore เพื่อขอข้อมูลใบเสร็จสำหรับไอเทมที่ยังไม่ได้จ่ายอีกครั้ง จากนั้นทำตามขั้นตอนที่ 3-5 เพื่อดำเนินการตรวจสอบใบเสร็จและจ่ายสินค้าให้เสร็จสมบูรณ์
Note
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับขั้นตอนการประมวลผลใบเสร็จและวิธีการตรวจสอบ โปรดดู การตรวจสอบใบเสร็จ
การซื้อหลายจำนวน¶
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
}
}];
```
