接下来给大家介绍下三星储值的接入流程。
一. 接入流程
二. 接口调用
1.初始化
iapMode
- OPERATION_MODE_PRODUCTION 正式储值,成功请求会发生金融交易,并返回实际结果(成功或失败)。
- OPERATION_MODE_TEST 测试模式,不发生金融交易(许可测试人员无需为项目购买付费),并且总是返回成功的结果。
- OPERATION_MODE_TEST_FAILURE 它旨在进行负面测试,以确保您的应用程序可以处理错误,例如不正确的输入和用户操作。
private static IapHelper iapHelper;
iapHelper = IapHelper.getInstance(activity);
iapHelper.setOperationMode(iapMode);
2.获取用户拥有的物品
iapHelper.getOwnedList(IapHelper.PRODUCT_TYPE_ALL, new OnGetOwnedListListener() {
@Override
public void onGetOwnedProducts(ErrorVo _errorVO, ArrayList<OwnedProductVo> _ownedList) {
if (_errorVO != null) {
if (_errorVO.getErrorCode() == IapHelper.IAP_ERROR_NONE) {
//成功
} else {
//失败
LogUtil.d(TAG, "getOwnedList onError: " + _errorVO.getErrorCode());
}
} else {
}
}
});
3.获取应用内商品详情
iapHelper.getProductsDetails("productId", new OnGetProductsDetailsListener() {
@Override
public void onGetProducts(ErrorVo _errorVO, ArrayList<ProductVo> _productList) {
if (_errorVO != null) {
if (_errorVO.getErrorCode() == IapHelper.IAP_ERROR_NONE) {
//成功
} else {
//失败
LogUtil.d(TAG, "getProductsDetails onError: " + _errorVO.getErrorCode());
}
} else {
}
}
});
4.购买应用内商品
* @param itemId 商品ID
* @param orderId 订单号
iapHelper.startPayment(itemId, orderId, new OnPaymentListener() {
@Override
public void onPayment(ErrorVo _errorVO, PurchaseVo _purchaseVO) {
/**
* 注意:
* PurchaseVo中mOrderId是没有返回值的
* mPaymentId才是orderId
*/
if (_errorVO != null) {
if (_errorVO.getErrorCode() == IapHelper.IAP_ERROR_NONE) {
//成功
} else {
//失败
LogUtil.d(TAG, "onPayment > ErrorCode : " + _errorVO.getErrorCode());
// In case of network error from GalaxyStore 4.5.20.7 version and IAP SDK 6.1 version,
// IAP error popup is not displayed.
// As needed, the app can display network error to users.
if (_errorVO.getErrorCode() == HelperDefine.IAP_ERROR_NETWORK_NOT_AVAILABLE) {
LogUtil.d(TAG, "onPayment > Network error!");
}
}
} else {
}
}
});
5.确认购买的消耗品
* @param purchaseId 商品ID
iapHelper.consumePurchasedItems(purchaseId, new OnConsumePurchasedItemsListener() {
@Override
public void onConsumePurchasedItems(ErrorVo _errorVO, ArrayList<ConsumeVo> _consumeList) {
if (_errorVO != null) {
if (_errorVO.getErrorCode() == IapHelper.IAP_ERROR_NONE) {
//成功
} else {
//失败
LogUtil.d(TAG, "onConsumePurchasedItems > ErrorCode : " + _errorVO.getErrorCode());
}
} else {
}
}
});
6.释放iap资源
//释放资源
if (iapHelper != null) {
iapHelper.dispose();
iapHelper = null;
}
三. 注意事项
1.拉起储值前必须先调用“getOwnedList”,然后“getProductsDetails”,再调用“startPayment”。
2.当iapMode为HelperDefine.OperationMode.OPERATION_MODE_TEST时,可以本地直接沙盒储值,不会扣取费用
3.当iapMode为HelperDefine.OperationMode.OPERATION_MODE_PRODUCTION时,此时测试需要在三星后台中把账号加入测试计划,并且同意加入后,在商店下载这个上传的包体才能进行沙盒测试,一定要注意,这是坑!!
4.在一些活动中,三星要求需要在账号或角色登录后调用掉单补单的流程,这个要注意,不然有些活动是开不了的,三星那边也不让开!!
四. 测试注意事项
官方文档:https://developer.samsung.com/iap/programming-guide/submit-the-app-to-galaxy-store.html?lang=zh#7.2
资料:
至此,三星储值接入完成,至于如何创建应用,加入测试计划这些,请参考官方;然后可以在储值中加入自己的逻辑进行封装使用~~