GAMEPOT结算仅支持游戏内消耗性商品类型的结算。只有V17版本支持One Store应用内SDK。
包含ONE Store应用内SDK : gamepot-billing-onestore.aar
包含GALAXY Store应用内SDK: gamepot-billing-galaxystore.aar
包含My Card应用内SDK : gamepot-billing-mycard.aar ( 请避免用于Google Store环境的构建程序。)
可使用用于在APP内购买商品的支付功能。支付结果值以Listener形式实现。
设置MainActivity.java
若要设置MainActivity.java文件以使用支付功能,请使用下列代码。
import io.gamepot.common.GamePot;
import io.gamepot.common.GamePotPurchaseInfo;
import io.gamepot.common.GamePotPurchaseListener;
import io.gamepot.common.GamePotError;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// 请先调用setup API。
GamePot.getInstance().setup(getApplicationContext());
...
GamePot.getInstance().setPurchaseListener(new GamePotPurchaseListener<GamePotPurchaseInfo>() {
@Override
public void onSuccess(GamePotPurchaseInfo info) {
// 支付成功。道具发放请求以Server to Server传递至Webhook中设置的地址。
// 仅在此处处理结果,请不要实际发放道具。
}
@Override
public void onFailure(GamePotError error) {
// 支付失败。请使用error.getMessage()显示错误消息。
}
@Override
public void onCancel() {
// 付款过程中用户取消时
}
});
...
}
}
支付尝试功能
通过一个支付API,可在Google PlayStore、Apple APPStore使用支付尝试功能。
若要使用支付尝试功能,请使用下列代码。
import io.gamepot.common.GamePot;
// productId:商店中注册的商品ID
GamePot.getInstance().purchase("product id");
import io.gamepot.common.GamePot;
// productId:商店中注册的商品ID
// uniqueId:单独管理的发票号
GamePot.getInstance().purchase("product id", "uniqueId");
另行管理支付尝试及发票编号,向Webhook传达角色信息 OneStore版本时,uniqueId+serverId+playerId+etc的长度之和小于85byte方可进行支付。
import io.gamepot.common.GamePot;
// productId:在Store注册的商品ID
// uniqueId:单独管理的发票号
// serverId:付费角色的服务器ID
// playerId:付费角色的角色ID
// etc:付费角色的其他信息
GamePot.getInstance().purchase("product id","uniqueId","serverId","playerId","etc");
获取付款道具列表功能
若要使用获取由Store传递的应用内付费道具列表功能,请使用下列代码。
作为登录成功后应当调用的API,由于getPurchaseDetailList API是提供从Store应用内SDK非同步获取的内容的API,因此可根据调用的时间以空值形式发送。(以可支付的环境为准)
import io.gamepot.common.GamePot;
//[case1]
GamePotPurchaseDetailList details = GamePot.getInstance().getPurchaseDetailList();
//[case2]
GamePot.getInstance().getPurchaseDetailListAsync(new GamePotListener<GamePotPurchaseDetailList>() {
@Override
public void onSuccess(GamePotPurchaseDetailList data) {
//data : In-app information
}
@Override
public void onFailure(GamePotError error) {
// api error
}
});
发放付费道具功能
对照付款Store的发票明细,全部完成验证后,方可设置向开发公司服务器发送发放请求。
详细内容请参阅道具发放请求。
Mycard支付
Mycard库:gamepot-billing-mycard.aar
(参考) 关联Mycard所需的FacServiceID / KEY值请联系Mycard进行确认,然后在Dashboard中设置。
请填写Dashboard >> 支付 >> IAP的Store类型:Google项目 > 添加价格 > 货币(ex.TWD)/价格信息后保存相关信息。
在Dashboard >> 项目设置 >> 外部支付项目中添加MyCard,并确认是否正常输入相应FacService ID / Sign Key。
支付时调用SDK的下列代码。
GamePot.getInstance().purchase("product id");
MyCard使用过程中以付费道具的调用形式调用GamePot.getInstance().getPurchaseDetailList();时将出现错误。为应对这一问题,请调用GamePot.getInstance().getPurchaseThirdPaymentsDetailList();。
删除./AndroidManifest.xml文件中标签的name。
<application
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
tools:replace="android:allowBackup" >
resValue "string", "gamepot_store", "google"
resValue "string", "gamepot_payment", "mycard" // 只有当商店为Google时才适用。
确认../libs文件夹内是否包含gamepot-billing-mycard.aar。
确认是否已设置为开发时build.gradle文件内包含库。
ex) implementation(name: 'gamepot-billing-mycard', ext: 确认文件夹内是否包含'aar')。
外部支付功能
以OnrStore为例:若要关联不使用OnrStore支持的应用内SDK的外部支付模块,请参阅关联外部支付服务完成相应设置后使用下列代码。
import io.gamepot.common.GamePot;
// activity:当前Activity
// product id:在Dashboard登记的支付ID
GamePot.getInstance().purchaseThirdPayments(activity, product id);
import io.gamepot.common.GamePot;
GamePotPurchaseDetailList thirdPaymentsDetailList = GamePot.getInstance().getPurchaseThirdPaymentsDetailList();
Last updated