动态应用内购买

时间:2014-12-15 21:21:26

标签: android in-app-purchase google-play google-play-services

这个问题(Android In-App Billing Dynamic Product List)是在3年前被问到的。 Android仍然无法使用动态应用内购买商品吗?

我希望实现此类功能的原因是因为我的应用程序为某些用户提供了一种方法,可以为其他人创建自己的应用内购买。

似乎另一种解决方案是使用消费类应用内货币,但我更倾向于直接通过Play商店购买选项(特别是因为我已经看到了无处不在的黑客入侵游戏货币的方法)。

无论选项如何,我都希望使用服务器端验证。可能有办法通过服务器添加应用内购买?

2 个答案:

答案 0 :(得分:3)

我不确定这是否足够,但您可以通过这种方式使用Google Play APIinsert个新的应用结算产品。适用于Android的所有应用结算产品仍需要在Google Play开发者控制台中specified,但至少使用Play API,您可以以编程方式执行此操作。

答案 1 :(得分:3)

我设法使用Google Play Api实现了这一点,并以动态/编程方式将产品上传到Play商店。

首先,我使用PHP,因为我将Laravel用于后端REST API。由您自己选择。我将使用作曲家安装google/apiclient库 使用composer require google/apiclient

https://developers.google.com/android-publisher/api-ref/inappproducts

https://developers.google.com/android-publisher/api-ref/inappproducts/insert

示例产品可以这样上传:

第1步::您需要对服务进行身份验证。如果愿意,可以使用服务json文件或Auth oath。就我而言,我使用了服务json文件并在我的GCP控制台中启用了Google Play API。

第2步::您需要一个sku(唯一)引用文档并查看所需格式

第3步:您需要设置一个价格(微),您可以使用https://github.com/Torann/laravel-currency将一种货币转换为另一种货币,在这种情况下,我会根据默认值获取我的货币商店的货币(在应用产品中) NB:货币必须匹配,否则会出错。

第4步:您需要设置列表,这些列表基本上是应用程序出于翻译目的所需要的标题/描述


$client = new Google_Client();
$client->setAuthConfig(storage_path('service_account.json'));

// You have to add this scope so it knows it is in app billing store
$client->addScope('https://www.googleapis.com/auth/androidpublisher');
$service = new Google_Service_AndroidPublisher($client);

$body = new \Google_Service_AndroidPublisher_InAppProduct();
$body->setSku("unique_sku_here");
$body->setPackageName('android_app_package_name'); // e.g com.example.in_app_test

//1.00 USD = 1,000,000 Microns.

// Create a new price object 
$price = new \Google_Service_AndroidPublisher_Price();
$price->setCurrency('USD');

//Using **torann/currency** library to convert from one currency to another

$new_price = intval(currency("1000", $from = "EUR", $to = "USD", false));
$price->priceMicros = $new_price * 1000000;
$body->setDefaultPrice($price);

// Setting the default language

$body->defaultLanguage = "en_US";
$body->setListings([
                    'en_US' => [
                        'title' => 'Product Title',
                        'description' => "Product Description here"
                    ]
                ]);    

$purchase = $service->inappproducts->insert(
                     'android_app_package_name',
                     $body,
                    [
                      'autoConvertMissingPrices' => true,
                    ]);

$purchase->setStatus(true); // Always set this to mark the product active on the GPlay console.

通过此操作,您将成功返回产品。

干杯。如果您有任何障碍,请随时发表评论,我很乐于澄清。