环境
因为项目需要 不能使用google for untiy ,所以使用了aar作为插件导入
android studio 3.2 和 unity2018.3.8
支付代码
安卓studio下载加环境配置请自行百度参考他人
//文中 ConstCode.TGA 等价 static String TGA="google",方便日志查看
public class GooglePay {
private static Activity _activity;
private static BillingClient billingClient;
private static List<String> skulList = new ArrayList<>();
private static boolean isConnect;
private static SkuDetails skuDetails;
private static String serverUrl;
private static PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
/*
*购买更新
*/
@Override
public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
// To be implemented in a later section.
Log.i(ConstCode.TGA, "onPurchasesUpdated: ");
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchases != null) {
/**
* 购买成功
*/
for (final Purchase purchase : purchases) {
if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
if (!purchase.isAcknowledged()) {
acknowledgePurchase(purchase);
}
}
}
} else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
// Handle an error caused by a user cancelling the purchase flow.
//处理由用户取消购买流程引起的错误
Toast.makeText(_activity, "User cancel", Toast.LENGTH_SHORT).show();
} else {
// Handle any other error codes.
Log.i(ConstCode.TGA, "onPurchasesUpdated: 用户支付错误:" + billingResult.getResponseCode());
}
}
};
//获取pay client
private static void getBillingClient() {
billingClient = BillingClient.newBuilder(_activity)
.setListener(purchasesUpdatedListener)
.enablePendingPurchases()
.build();
billingClient.startConnection(new BillingClientStateListener() {
/*
*计费设置完成
*/
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
isConnect = true;
queryAndConsumePurchase();
Log.i(ConstCode.TGA, "onBillingSetupFinished: 谷歌支付链接成功");
} else {
isConnect = false;
Log.i(ConstCode.TGA, "onBillingSetupFinished: 谷歌支付链接失败 错误码:" + billingResult.getResponseCode());
}
}
@Override
public void onBillingServiceDisconnected() {
Log.i(ConstCode.TGA, "onBillingServiceDisconnected");
isConnect = false;
}
});
}
/*
*获取商品详情并支付
*/
private static void getSkuDetail(String goodId) {
skulList.clear();
skulList.add(goodId);
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skulList).setType(BillingClient.SkuType.INAPP);
billingClient.querySkuDetailsAsync(params.build(),
new SkuDetailsResponseListener() {
/*
*商品查询响应
*/
@Override
public void onSkuDetailsResponse(BillingResult billingResult,
List<SkuDetails> skuDetailsList) {
// Process the result.
Log.i(