快速开始 🚀
要在开发者预览阶段获取艾克索拉 Mobile SDK 的访问权限,请填写表单。
开始
艾克索拉 Mobile SDK 是企业级艾克索拉 SDK 解决方案的升级版,最初设计用于大型项目从零开始的完整集成,被中大型开发者和发行商广泛使用
本快速入门指南将引导您集成艾克索拉 Mobile SDK,以在您的游戏中接受付款。我们将通过一个预配置的测试项目 ID,带您了解基本内容:设置基础用户身份验证、导入 SKU,以及处理测试支付。完成后,您的游戏将集成一个有效的支付系统,充分展示艾克索拉如何简化您的变现流程。让我们马上开始,仅需几个简单步骤,您的游戏就可以接受付款了!
安装 SDK
在预览阶段,请联系您的客户经理以获取艾克索拉 Mobile SDK 的访问权限。
- Unity
- Android
- iOS
- 打开 Unity 编辑器。
- 在主菜单中,点击 Window > Package Manager。
- 将包添加为依赖项:
- 点击 ➕ 图标并选择 Add package from tarball。
- 选择下载的 SDK 包(.tgz)。
- 点击 Open 并等待导入完成。
艾克索拉 Mobile SDK 需要 Android SDK 24(Android 7.0)或更高版本。
-
将 Maven Central 仓库添加到您的项目 Gradle 脚本中(通常是
settings.gradle
):repositories {
mavenCentral()
} -
在
build.gradle
中为 艾克索拉 Mobile SDK 添加新的依赖项:dependencies {
def version_mobilesdk = '<version_code>'
implementation "com.xsolla.android:mobile:$version_mobilesdk"
}提示在预览阶段,请联系您的客户经理以获取最新版本的艾克索拉 Mobile SDK。
在预览阶段,请联系您的客户经理以获取艾克索拉 Mobile SDK 的访问权限。
配置 SDK
- Unity
- Android
- iOS
在 Unity 编辑器 中:
-
从主菜单转到 Window > Xsolla > MobileSDK > Edit Settings
-
打开 Inspector 面板
-
在打开的资产中,将以下预定义的测试项目属性设置为各自的值:
属性 值 Project ID 77640 Login ID 026201e3-7e40-11ea-a85b-42010aa80004
提示提供的项目和登录 ID 是预定义的,可用于快速测试集成。
-
您的设置资产应类似以下所示:
-
现在,将以下几行代码添加到场景初始化代码中,例如继承自
MonoBehaviour
的类的Start()
方法:public class YourSDKIntegrationBehaviour : MonoBehaviour, IDetailedStoreListener {
public Start() {
var settings = XsollaStoreClientSettingsAsset.Instance().settings;
var configuration = XsollaStoreClientConfiguration.Builder.Create()
.SetSettings(settings)
.SetSandbox(true)
.SetLogLevel(XsollaLogLevel.Debug)
.Build();
// ...
}
// ...
}
首先,为定义 SDK 行为的艾克索拉 Mobile SDK 准备 Config
。
为了演示和简化,我们将使用活动的 onCreate
方法:
public class YourSDKIntegrationActivity extends Activity {
// ...
private static final String TAG = "YourSDKIntegration";
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
final Config.Common configCommon = Config.Common.getDefault()
.withDebugEnabled(true)
.withLogLevel(LogLevel.VERBOSE)
.withSandboxEnabled(true);
// 我们将使用预定义的项目 ID 和登录 ID,
// 以尽可能快速地完成任何测试集成。
final Config.Integration configIntegration = Config.Integration.forXsolla(
Config.Integration.Xsolla.Authentication.forAutoJWT(
ProjectId.parse(77640).getRight(),
LoginUUID.parse("026201e3-7e40-11ea-a85b-42010aa80004").getRight()
)
);
final Config.Payments configPayments = Config.Payments.getDefault();
final Config config = new Config(
configCommon,
configIntegration,
configPayments
);
// ...
}
// ...
}
在预览阶段,请联系您的客户经理以获取艾克索拉 Mobile SDK 的访问权限。
初始化 SDK
现在,当我们准备好配置后,即可开始初始化 SDK。
- Unity
- Android
- iOS
-
确保 Unity InAppPurchasing 插件已安装:
信息有关如何安装 Unity InAppPurchasing 插件的信息,请参阅此页面。
-
在
YourSDKIntegrationBehaviour
的Start
方法中,使用XsollaPurchasingModule.Builder
创建 SDK 模块,并将您之前准备好的配置作为其参数:var module = XsollaPurchasingModule.Builder.Create()
.SetConfiguration(configuration)
.Build(); -
将创建的 SDK 模块传递到
ConfigurationBuilder
,并使用为测试预创建的 SKU 来填充返回的实例:var configurationBuilder = ConfigurationBuilder.Instance(module)
.AddProduct("key_1", ProductType.Consumable); -
使用 Unity 的 InAppPurchasing 注册 SDK:
UnityPurchasing.Initialize(this, configurationBuilder);
-
在
YourSDKIntegrationActivity
类中,声明一个字段:@Nullable
private BillingClient mBillingClient = null; -
在准备
Config
的代码下方添加以下内容以创建BillingClient
:// ... 设置 `Config` ...
mBillingClient = BillingClient.newBuilder(this)
.setConfig(config)
.setListener(new PurchasesUpdatedListener() {
@Override
public void onPurchasesUpdated(
@NonNull BillingResult billingResult, @Nullable List<Purchase> purchases
) {
// 您的购买处理代码(例如消费)在此处添加。
}
})
.build(); -
新创建的
BillingClient
需要通过BillingClient.startConnection
调用与艾克索拉服务建立连接:mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingServiceDisconnected() {
Log.d(TAG, "Disconnected.");
}
@Override
public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
// 连接后代码...
}
}); -
一旦
BillingClient
成功连接到艾克索拉服务,即可开始获取 SKU 的商品详情。将以下代码放入 onBillingSetupFinished 回调中::final QueryProductDetailsParams queryProductDetailsParams =
QueryProductDetailsParams.newBuilder()
.setProductList(Arrays.asList(
QueryProductDetailsParams.Product.newBuilder()
.setProductId("key_1")
.setProductType(BillingClient.ProductType.INAPP)
.build()
))
.build();
mBillingClient.queryProductDetailsAsync(
queryProductDetailsParams, new ProductDetailsResponseListener() {
@Override
public void onProductDetailsResponse(
@NonNull BillingResult billingResult,
@Nullable List<ProductDetails> productDetailsList
) {
// 处理商品详情代码...
}
}
);
在预览阶段,请联系您的客户经理以获取 艾克索拉 Mobile SDK 的访问权限。
完成支付
一旦 SDK 完全初始化,就可以进行支付。
- Unity
- Android
- iOS
修改用于配置和初始化步骤的 MonoBehaviour
类,让它继承 IDetailedStoreListener
。并添加以下代码:
public class YourSDKIntegrationBehaviour : MonoBehaviour, IDetailedStoreListener {
// ...
public void OnInitialized(IStoreController controller, IExtensionProvider extensions) {
controller.InitiatePurchase("key_1");
}
// ...
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) {
if (args.purchasedProduct.definition.id == "key_1") {
Debug.Log("Successfully purchased 'key_1'");
}
return PurchaseProcessingResult.Complete;
}
// ...
通过 BillingClient
的 launchBillingFlow
方法启动购买流程。这至少需要一个通过 queryProductDetailsAsync
(参见初始化)获取的有效 ProductDetails
。为了简化集成,我们将在 onProductDetailsResponse
回调中直接执行此操作:
if (billingResult.isSuccess() &&
productDetailsList != null && !productDetailsList.isEmpty()) {
// 我们将使用列表中的第一个商品详情,
// 但通常您需要处理其余的商品详情。
final ProductDetails productDetails = productDetailsList.get(0);
// 为购买流程创建参数..
final BillingFlowParams billingFlowParams =
BillingFlowParams.newBuilder()
.setProductDetailsParamsList(Arrays.asList(
BillingFlowParams.ProductDetailsParams.newBuilder()
.setProductDetails(productDetails)
.build()
))
.build();
// 启动购买流程。
mBillingClient.launchBillingFlow(
YourSDKIntegration.this, billingFlowParams
);
} else {
Log.e(TAG,
"收到无效的商品详情响应: " +
billingResult.getResponseCode()
);
}
在购买流程完成后,会调用 onPurchasesUpdated
。这是为用户提供所购买内容的最佳时机。将以下代码添加到之前声明的 onPurchasesUpdated
(参见初始化):
if (billingResult.isSuccess() && purchases != null) {
for (int i = 0; i < purchases.size(); ++i) {
final ConsumeParams consumeParams =
ConsumeParams.newBuilder()
.setPurchaseToken(purchases.get(i).getPurchaseToken())
.build();
mBillingClient.consumeAsync(consumeParams, new ConsumeResponseListener() {
@Override
public void onConsumeResponse(
@NonNull BillingResult billingResult, String purchaseToken
) {
Log.e(TAG,
"Purchase consumption response: " +
billingResult.getResponseCode()
);
}
});
}
} else {
Log.e(TAG,
"Received an invalid 'purchases updated' response: " +
billingResult.getResponseCode()
);
}
在预览阶段,请联系您的客户经理以获取艾克索拉 Mobile SDK 的访问权限。
收款
SDK 依 赖于艾克索拉支付中心进行安全的支付收款。
以下步骤将带您完成测试支付收款流程:
-
选择银行卡支付方式:
-
使用列出的测试卡之一,并点击支付确认支付:
-
支付完成后,您将看到确认页面:
下一步?
恭喜!🎉 您已成功集成艾克索拉 Mobile SDK 并完成了首次测试支付。此成就不仅为您开启了 700 多种全球支付方式,还为集成更多艾克索拉解决方案奠定了基础(包括强大的网页商城)。
您已掌握以下基础知识:
- ✅ 用户身份验证
- ✅ SKU 管理
- ✅ 安全支付处理
这只是优化游戏货币化的开始。准备好探索更多了吗?欢迎查看我们的文档了解高级功能和其他艾克索拉产品,进一步提升您的游戏成功!
接下来您需要做的是创建自己的 发布商帐户 并在其中设置一个新项目。
您可能还对以下详细扩展示例感兴趣,这些示例可帮助您更好地理解基于艾克索拉 Mobile SDK 的完整购买流程: