标签: in-app-billing

添加应用内结算库时出错

我按照链接中提到的这些步骤执行此操作.

  1. IInAppBillingService.aidl文件复制到Android项目.

    (1)如果您使用的是Eclipse:将IInAppBillingService.aidl文件导入/ src目录.

    (2)如果您在非Eclipse环境中进行开发:创建以下目录/ src/com/android/vending/billing并将该IInAppBillingService.aidl文件复制到此目录中.

  2. 构建应用程序.你应该可以看到一个名为生成的文件IInAppBillingService.java/gen您的项目目录.
  3. /utilTrivialDrive示例目录中的帮助程序类添加到项目中.请记住相应地更改这些文件中的包名称声明,以便您的项目正确编译.

但是当我完成它时,Eclipse给了我一个错误:

interface IInAppBillingService should be declared in a file called com\android\vending\billing\IInAppBillingService.aidl.
Run Code Online (Sandbox Code Playgroud)

aidl文件位于正确的目录中,但未IInAppBillingService.java生成该 文件.

以前有人见过吗?

android in-app-billing google-play google-play-services

37
推荐指数
3
解决办法
2万
查看次数

Android In App Billing:无法启动launchPurchaseFlow,因为launchPurchaseFlow正在进行中

我是第一次实施In App Billing,我正在使用静态SKU ID测试我的第一次购买.

它第一次运作良好.我致电mHelper.launchPurchaseFlow(...)并完成了测试购买.我的活动收到onActivityResult回调,我确保处理它mHelper.handleActivityResult(...).一切都很棒.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Pass on the activity result to the helper for handling
    log("onActivityResult");
    if (!this.mHelper.handleActivityResult(requestCode, resultCode, data)) {
        log("cleared the launch flow");
        // not handled, so handle it ourselves (here's where you'd
        // perform any handling of activity results not related to in-app
        // billing...
        super.onActivityResult(requestCode, resultCode, data);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我想测试下一部分,所以我重新启动了应用并尝试购买相同的SKU(静态purchasedSKU).

mHelper.launchPurchaseFlow(rootActivity, "android.test.purchased", 10002,   
       new IabHelper.OnIabPurchaseFinishedListener() {

        @Override …
Run Code Online (Sandbox Code Playgroud)

android in-app-billing android-billing

36
推荐指数
4
解决办法
3万
查看次数

如何验证MY服务器上的Android应用内结算交易?

我制作了一个Android应用,可以使用应用内结算方式购买商品.购买商品后,可以轻松地在Android电子市场和手机之间同步交易 - 即可在应用中使用.但是,我需要我的服务器知道购买.提供特定于应用程序的数据的决定应该在我的服务器上进行,而不是在客户端应用程序中进行.

例如

  1. 用户从Android Market购买商品X.
  2. 交易数据Y被发送到客户端.
  3. 客户端将Y发送到我的服务器.
  4. 客户端要求服务器为X提供内容.
  5. 如果Y有效,服务器会提供内容.如何实现这一目标?

问:如何验证来自Android客户端(可能源自Google服务器)的交易数据不是假的?即黑客没有生成数据.

Google服务器 - > Android客户端 - >我的服务器 - > Android客户端

也许这更像是一个PHP问题而不是其他任何东西.究竟我的服务器脚本(PHP)应该怎么做才能验证检索到的数据是否真实?

php android in-app-billing

34
推荐指数
2
解决办法
2万
查看次数

购买Google Play应用内结算版本3的服务器端验证

在向用户提供可下载内容之前,我无法找到关于如何验证服务器上的应用内结算购买的直接答案.

我在app-billing版本3中使用.我使用基于TrivialDrive示例代码中的IabHelper类的代码购买托管产品.一切都很好,花花公子,购买成功完成,我得到一个完整的购买对象和以下原始JSON数据:

{
    "orderId":"12999763169054705758.1364365967744519",
    "packageName":"my package name",
    "productId":"77",
    "purchaseTime":1366217534000,
    "purchaseState":0,
    "purchaseToken":"utfwimslnrrwvglktizikdcd.AO-J1OwZ4l5oXz_3d2SAWAAUgFE3QErKoyIX8WuSEnBW26ntsyDmlLgoUd5lshqIY2p2LnlV4tpH4NITB4mJMX98sCtZizH7wGf6Izw3tfW_GflJDKFyb-g"
}
Run Code Online (Sandbox Code Playgroud)

据我所知,我需要传递purchaseToken和我看到的称为服务器签名的东西.然后,服务器使用私钥来验证购买.它是否正确?如果是这样,我从哪里获得签名,是否真的没有关于购买的服务器端验证的体面文档?

android in-app-purchase in-app-billing

34
推荐指数
2
解决办法
3万
查看次数

Android IAB.错误 - 需要验证.您需要登录自己的Google帐户

在运行应用程序的Android>示例应用程序> Trivial Drive中,我在执行IAP时得到以下信息:

Error - Authentication is required. You need to sign into your Google Account
Run Code Online (Sandbox Code Playgroud)

我已使用测试帐户(即我在开发者控制台中指定的测试电子邮件地址)切换到手机上的单独帐户,并按照此处的所有步骤操作:

https://android.stackexchange.com/questions/20369/getting-authentication-is-required-when-trying-to-access-the-play-store

但没有快乐.

还有什么建议?

====更新

我已经在我的手机上抨击了所有Google帐户,现在只有一个帐户 - 即测试帐户.

我在这里尝试了一切:https://android.stackexchange.com/questions/20369/getting-authentication-is-required-when-trying-to-access-the-play-store

android in-app-billing google-play

34
推荐指数
4
解决办法
3万
查看次数

在 android-billing-5.0 中获取 ProductDetails 价格

我已将我的 Kotlin 应用程序从 4.0 升级到 android-billing 5.0,因此,SkuDetails 现已弃用,因此我将使用迁移说明迁移到使用 ProductDetails 。

之前我使用SkuDetails.price向用户显示应用内购买的购买价格,但我在ProductDetails中找不到类似的方法。

在 Google Play Billing Library 5.0 中,是否有一种未弃用的方法来检索应用内购买或订阅的价格?

android in-app-billing kotlin android-billing play-billing-library

33
推荐指数
2
解决办法
9866
查看次数

在Google In-App Billing API中用作开发人员有效负载的用途是什么?

在Android中销售应用内商品培训课程建议在发出购买请求时使用有效负载:

第五个参数包含一个"开发人员有效负载"字符串,您可以使用该字符串发送有关订单的补充信息(它可以是空字符串).通常,这用于传递唯一标识此购买请求的字符串标记.如果您指定字符串值,Google Play会将此字符串与购买回复一起返回.随后,当您对此次购买进行查询时,Google Play会将此字符串与购买详细信息一起返回.

安全建议:最好传入一个字符串,以帮助您的应用程序识别进行购买的用户,以便您以后可以验证这是该用户的合法购买.对于消耗品,您可以使用随机生成的字符串,但对于非消耗品,您应使用唯一标识用户的字符串.

实施IAB购买页面也有类似的建议,与有效载荷值应在自己的安全服务器上检查的其他建议:

安全建议:发送购买请求时,创建一个唯一标识此购买请求的字符串标记,并将此标记包含在developerPayload中.您可以使用随机生成的字符串作为标记.当您收到Google Play的购买回复时,请务必检查返回的数据签名,orderId和developerPayload字符串.为了增加安全性,您应该在自己的安全服务器上执行检查.确保验证orderId是您之前未处理过的唯一值,并且developerPayload字符串与您先前使用购买请求发送的令牌相匹配.

查看Google用于演示API的Trivial Drive应用程序的源代码,我发现此警告:

* WARNING: Locally generating a random string when starting a purchase and
* verifying it here might seem like a good approach, but this will fail in the
* case where the user purchases an item on one device and then uses your app on
* a different device, because on the other device you will not have access to the
* random …
Run Code Online (Sandbox Code Playgroud)

security android in-app-purchase in-app-billing

32
推荐指数
1
解决办法
9439
查看次数

Google IAP会返回简短的购买令牌以进行验证

我已经实施了服务器端验证Google IAP购买令牌.我的移动应用程序将此令牌发送给我,因为它来自Google.

常规令牌看起来像

minodojglppganfbiedlabed.AO-J1OyNtpooSraUdtKlZ_9gYs0o20ZF_0ryTNACmvaaaG5EwPX0hPruUdGbE3XejoXYCYzJA2xjjAxrDLFhmu9WC4fvTDNL-RDXCWjlHKpzLOigxCr1QhScXR8uXtX8R94iV6MmMHqD

但有时我会得到一个像这样的短标记

korpimulxmslxissnschtkdb

当我通过Google Play Developer API验证此令牌时:https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token,对于短令牌,我收到404错误.

问题出在哪儿?这个短令牌可能代表真实交易吗?

android in-app-purchase in-app-billing google-play

32
推荐指数
1
解决办法
8862
查看次数

应用内结算v3 - 请勿检测退款

我已经关注了Google的"In-App Billing v3"培训.我买了一件物品,但我遇到了问题.

https://developer.android.com/training/in-app-billing/index.html

我已取消并退还购买但该应用程序检测到购买是真的.我无法继续测试我的应用程序,因为我始终检测到购买该项目.

我在logCat中发现的唯一错误是下一个:

[3687] InAppBillingService.logResponseBundle:Bundle不包含响应代码

启动mHelper.queryInventoryAsync(mGotInventoryListener)后出现.

任何的想法?

android google-checkout in-app-billing

31
推荐指数
2
解决办法
5091
查看次数

与应用程序安装关联的帐户信息

对于在Android中实施应用内结算的用户来说,这是一个广受欢迎的问题,即如何处理多个帐户.如果用户配置了多个帐户,哪个帐户将用于应用内结算(因为没有选项让用户选择帐户)?挖了很多之后,下段在这里似乎可以解释它..

注意:要进行测试购买,许可测试帐户必须位于用户的Android设备上.如果设备有多个帐户,则会使用下载该应用的帐户进行购买.如果没有任何帐户下载了应用程序,则使用第一个帐户进行购买.用户可以通过展开购买对话框来确认正在进行购买的帐户.

我使用在应用程序计费中涉及的帐户创建开发人员有效负载,以便可以在以后某个时间或其他某个设备上正确还原.但是自Honeycomb以来,没有主账户这样的东西.用户可以删除任何帐户,可能是购买该应用程序的帐户,在这种情况下,帐户列表中的第一个帐户将用于计费.现在,如果我知道使用了哪个帐户,并且它是否"不是安装了应用程序的帐户",我至少可以告知用户以后的购买将不会恢复.

所以,我的问题是......

有没有办法找到用于下载应用程序的帐户?

Google Play似乎确实使用了这些信息.无论如何,我们可以与Google Play互动达到这个级别吗?

注意:PackageManager似乎没有解决这个问题.

android in-app-purchase google-account in-app-billing android-billing

30
推荐指数
1
解决办法
668
查看次数