Android 集成指南
环境要求
- Gradle 版本不低于 6.1.1,Android AGP 插件版本不低于 4.0.1;
准备
- 参照 准备工作 所述创建 app,配置 app 参数
- 参照 TapSDK 快速开始 配置包名和签名
SDK 指南
SDK 集成
打开项目的 project/app/build.gradle
文件,添加 gradle 配置如下:
dependencies {
...
// TapTapIAP dependency
implementation 'com.taptap.android.payment:iap:4.8.2'
implementation 'com.taptap.android.payment:base:4.8.2'
implementation 'com.taptap.android.payment:wechat:4.8.2'
implementation 'com.taptap.android.payment:alipaycn:4.8.2'
}
打开项目的 AndroidManifest.xml
文件,添加如下配置:
(${applicationId}
为您的应用包名)
<activity-alias
android:name="${applicationId}.wxapi.WXPayEntryActivity"
android:exported="true"
android:targetActivity="com.taptap.payment.wechat.WechatPayActivity" />
SDK 初始化
TapTap 登录模块依赖于 TapTapSDK 初始化,具体参考 TapSDK 集成
import com.taptap.sdk.core.TapTapRegion;
import com.taptap.sdk.core.TapTapSdk;
import com.taptap.sdk.core.TapTapSdkOptions;
/* 必选配置 */
// 开发者中心对应 Client ID
String clientId = "";
// 开发者中心对应 Client Token
String clientToken = "";
// 是否开启 log,建议 Debug 开启,Release 关闭,默认关闭 log
boolean enableLog = BuildConfig.DEBUG;
TapTapSdkOptions tapSdkOptions = new TapTapSdkOptions(
clientId, // 游戏 Client ID
clientToken, // 游戏 Client Token
TapTapRegion.CN // 游戏可玩区域: [TapTapRegion.CN]=国内 [TapTapRegion.GLOBAL]=海外
);
tapSdkOptions.setEnableLog(enableLog);
// 初始化 TapSDK
TapTapSdk.init(context, tapSdkOptions);
创建 TapTapIAP
,请使用 newBuilder()
这里会根据SDK.init所设置的 ClientID
和 ClientToken
校验是否有权限使用 TapTapIAP
。
// 创建 TapTapIAP 实例
TapTapIAP tapTapIAP = TapTapIAP.newBuilder().build();
展示可供购买的商品
初始化完成 TapTapIAP
后,您就可以查询可售的商品并将其展示给用户了。
查询应用内商品详情,请调用 queryProductDetailsAsync()
。为了处理该异步操作的结果,您还必须指定实现 ProductDetailsResponseListener
接口的监听器。然后,您可以替换 onProductDetailsResponse()
,该方法会在查询完成时通知监听器,如以下示例所示:
List<Product> queryProductList = new ArrayList<>();
// 支持批量查询 Product, 设置好对应的 ProductID、ProductType
// ProductType 目前仅支持 ProductType.INAPP
for (int i = 0; i < products.length; i++) {
String productId = products[i];
Product product = Product.newBuilder()
.setProductId(productId)
.setProductType(ProductType.INAPP)
.build();
queryProductList.add(product);
}
QueryProductDetailsParams params = QueryProductDetailsParams.newBuilder()
.setProductList(queryProductList).build();
tapTapIAP.queryProductDetailsAsync(params, new ProductDetailsResponseListener() {
@Override
public void onProductDetailsResponse(TapPaymentResult result,
List<ProductDetails> productDetails, List<String> unavailableProductIds) {
...
// 判断 TapPaymentResult
// 使用商品详情
}
});