比特派钱包华为安装教程|内购插件

作者: 比特派钱包华为安装教程
2024-03-08 02:22:31

iap26最强内购插件 | 最简洁的中文源

iap26最强内购插件 | 最简洁的中文源

Cydiakk源

关于我们

官方Q群

官方主页

官方博客

展开

首页

博客

登录

Cydiakk中文源™

首页

资源列表

技术文章

关于我们

资源列表/[插件 ]

您未登录账号

iap26最强内购插件

软件版本:0.0.2

支持设备:

iPhone

iPad

文件大小:25.45 KB

支持版本:iOS 11.0 ~ iOS 15.6

 

提供作者:JustinPet26

下载数量:59245次          总下载量:61958次

收藏数量:392次

 

Cydiakk中文源™

https://apt.cydiakk.com/

5050

资源

494343

粉丝

1654477

人气

去看看

软件内容

扫描二维码下载

请确保到

添加Cydiakk中文源™

刷新列表 以后再扫描二维码下载

软件描述:一款破解APP超强内购插件

软件简介:

一款破解APP超强内购插件

===============

内购是最强的放心产品

===============

点击购买,然后点击取消

=================

即可内购 ,千万别点击确认

更新说明:

屏幕截图

搜索

最新上传更多

Sushi音乐模幅

83下载 / 1.0版本

2024-03-07 00:23:44发布

No2Theft iOS 16设备防盗系统

50下载 / 1.1.1版本

2024-03-07 00:23:42发布

Latchkey锁头自定义

72下载 / 2.3.2版本

2024-03-07 00:23:20发布

BioProtect XS 面容/指纹加密【破解版】

34下载 / 4.6-229版本

2024-03-07 00:23:14发布

最新下载更多

Diatrus Installer为unc0ver安装Sileo

2970下载 / 0.0001版本

2024-03-08 02:21:37发布

CCLess++控制中心模块

3481下载 / 1.8.2版本

2024-03-08 02:21:29发布

阿凡达屏蔽助手

32524下载 / 1.0.0.4-4版本

2024-03-08 02:20:59发布

GoodWiFi无线WiFi增强

1765下载 / 1.2版本

2024-03-08 02:20:46发布

广告终结者

3727下载 / 2.3.1版本

2024-03-08 02:20:43发布

源主推荐

MCPatch屏蔽OTA更新

允许安装iOS12屏蔽OTA更新描述文件

新腾翔嘉丽圆缩小版

好看的腾翔嘉丽圆缩小版字体

Bubble 主题

精致的Bubble主题,图标涵盖464个

Unc&雷神&Ele 最新防冻屏插件

完美解决11系统全系列越狱工具神经性卡死、假死、冻结

STMoon 超好看的单色主题[VIP5专享]

超好看的单色轮廓主题

MaxiX 主题 [VIP5专享]

好看的多彩主题

BlackOrs 2 主题 [VIP5专享]

超精美的主题 兼容7.0-11.4系统

Amara XI 主题 [VIP5专享]

超精美的主题 兼容7.0-11.4系统

旗下网站

博客

|

Cydiakk中文源

|

版权与免责声明

粤ICP备18011282号-4

Copyright 版权所有 © 2017-2024 CydiaKK.Com ®. All rights reserved. Cydiakk中文源™版权或产权保护

返回顶部

iOS 内购(IAP)的整个流程有哪些问题? - 知乎

iOS 内购(IAP)的整个流程有哪些问题? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册iOS 开发应用内购(In-App Purchase)iOS 内购(IAP)的整个流程有哪些问题?来自 @Bill Cheng 答「用户使用 iOS 内支付成功,但是服务器端没有收到客户端发来的 Receipt 的话,怎么进行支付的确认? 」—— …显示全部 ​关注者177被浏览102,055关注问题​写回答​邀请回答​好问题​1 条评论​分享​6 个回答默认排序Bill Cheng​​iOS 开发等 2 个话题下的优秀答主​ 关注感谢邀请首先贴上IAP流程:用户点击内购按钮——>用户确认购买内容——>用户通过App Store账户验证——>苹果服务器验证用户请求——>苹果服务器从用户帐号扣款——>苹果向用户返回购买成功信息——>软件接收并显示用户购买信息观察上面的流程,不难发现整个流程所有对于用户的验证都是苹果处理的,这就导致了第一个问题:『开发者实际上并不知道这个用户是谁』,或者说『开发者实际上并不知道付钱的是谁』一般来说开发者会默认付钱的用户和购买内容的用户为同一个人,而在这个流程中,实际上付钱的用户和购买内容的用户是两个账号,而且这两个账号分别属于不同的体系这样的问题在针对软件内容的IAP里面可能看不到问题,但是对于『服务』这种和用户账号关联的东西问题就很大了——我如何才能知道,是我向其提供服务的用户进行了付款行为,而不是其他用户违反条例帮助此用户获得授权,或者说其他用户想要把自己购买的服务应用到其他账号上上面这段可能有些绕口,那么我来举个例子:现在我有一个通过IAP出售的服务A,此服务是一个一次性购买服务。一个用户使用账号X购买了这个服务,然后用户通过自己的App Store账号在使用账号Y的机器上使用了恢复IAP功能,那么此时我是否应该给账号Y提供服务A呢?针对这个问题,虽然现在有各种各样的解决方法,不过大部分情况,最后用户还是会和客服联系抱怨,这是IAP两套账号系统导致的第一个问题第二个问题就是,观察流程可以发现,对于用户购买流程中给开发者发送的信号都来自于用户本地程序,这个也就是早期IAP内购插件可以存在的原因了,好在现在苹果给开发者提供了中间步骤的验证,才使得内购插件不会影响到开发者服务器端数据检测。总的来说,苹果的IAP流程对于本地软件增值功能来说是一个很好的服务,但是对于任何有双重账号问题的服务来说都是绝对的悲剧,而且由于苹果对于iOS生态圈封闭的态度,对于这个大问题的修复也总只是点到为止,国外可能还比较无所谓,但是在中国这个对于『用户』看重的环境中,产品经理和程序员都会面临各种悲剧……IAP还有些乱七八糟的问题,比如说去年让万众疯狂的『免费IAP DNS』、取消订单必须通过苹果处理等等。当然还有一些中国环境下的,让产品经理烦躁的问题(Android下我可以直接拿到用户信用卡账号密码,iOS下我连用户App Store ID都很难拿到,怎么卖数据)。发布于 2013-04-28 18:05​赞同 36​​8 条评论​分享​收藏​喜欢收起​NewPanRust​ 关注我写了一套完整的 IAP 方案, 处理了 IAP 的九大坑,感兴趣的朋友来看看吧: 第一篇:[[iOS]贝聊 IAP 实战之满地是坑](https://www.jianshu.com/p/07b5ec193353),这一篇是支付基础知识的讲解,主要会详细介绍 IAP,同时也会对比支付宝和微信支付,从而引出 IAP 的坑和注意点。第二篇:[[iOS]贝聊 IAP 实战之见坑填坑](https://www.jianshu.com/p/8e5bf711f9f0),这一篇是高潮性的一篇,主要针对第一篇文章中分析出的 IAP 的问题进行具体解决。第三篇:[[iOS]贝聊 IAP 实战之订单绑定](https://www.jianshu.com/p/847838cde48b),这一篇是关键性的一篇,主要讲述作者探索将自己服务器生成的订单号绑定到 IAP 上的过程。发布于 2018-01-14 21:36​赞同 9​​添加评论​分享​收藏​喜欢

【Flutter】App集成谷歌内购(GooglePay)的全过程(全程详细图文加代码) - 掘金

【Flutter】App集成谷歌内购(GooglePay)的全过程(全程详细图文加代码) - 掘金

首页 首页

沸点

课程

直播

活动

竞赛

商城

APP

插件 搜索历史

清空

创作者中心

写文章 发沸点 写笔记 写代码 草稿箱 创作灵感

查看更多

会员

登录

注册

【Flutter】App集成谷歌内购(GooglePay)的全过程(全程详细图文加代码)

Newki

2023-05-15

3,770

阅读13分钟

Flutter集成谷歌内购与使用的全过程

我正在参加「掘金·启航计划」

前言

注意:本文包含大量的图片与代码,注意流量使用。

在之前的文章中,我们了解到 Flutter 的页面开发,以及 Flutter 的架构搭建,完成对应的页面与逻辑是没什么问题了。

但是开发一个 App 又不是只有页面的基本逻辑,如果涉及到一些第三方的对接就显得比较麻烦,比如推送,支付,内购,IM 等等。

而如果第三方没有提供到 Flutter 的插件,那么我们就需要通过 Channel 的方式自己去实现 Android 与 iOS 的具体实现。

还好,Flutter 推出这么些年,基本上常用的一些插件都已经有支持,就算官方没出,也有民间大神出了类似的插件。

而本文所说的就是相对比较复杂的第三方集成,应用商城内购,大部分是讲谷歌内购,其实苹果内购比谷歌内购要更容易一下,兼容一下同样的代码就能完成相关的流程。

以谷歌内购为例,我们需要做的总共为三步,每一步我会给出详细的相关设置对应的图片或代码。

需要在谷歌市场配置商品,设置测试渠道,配置开发者账号,设置对应权限。

配置完商品之后,如何在 Flutter 中获取到商品,购买指定商品,消耗商品等。

购买成功之后,如何到服务器校验是否支付成功,后台服务器如何配置通行权限,谷歌市场与谷歌云的关联以及相关校验。

注意:由于谷歌市场版本老在变化,本文的谷歌市场以 2023-05-02 时间为准,如果后期谷歌市场与谷歌云的相关网页布局 或 Tab 发生变化,大家可以参考使用。

好了,大致的步骤了解了之后,我们就开始一步步的走相关流程。

一、谷歌市场配置商品

按道理,我们只需要在谷歌市场中,找到指定的应用,然后在内购的 Tab 中直接添加商品即可。但是并没有这么简单,会提示报错,没有设置付款账号。

1.1 定价模板

所以我们要切换到整个账号的设置页面,而不是指定应用的选项。

找到付款概况之后,如果没有付款账号,我们填写一些信息,姓名,邮箱,账号,等等信息,创建完成之后我们就可以设置定价的模板。

如果能创建模板说明你付款账号没问题,定价模板是非必须的,可有可无,但是定义了模板之后会更加方便,到时候创建商品可以直接关联模板,账号下的每一个子应用的内购商品都能关联对应的模板,有一个统一的定价。

如何创建定价模板如下:

我们创建模板之后,就可以定义模板的价格与标题,选择的金额会有对应的汇率转换,比如我创建的新加坡币,如果用港元支付的话,会根据汇率转换为对应的港元支付。

创建完成之后,我们就能看到对应的定价模板如下图所示:

1.2 应用上架

当我们的一些定价模板定义完成之后,我们就可以设置应用的内购了,点击应用商品内购的 Tab ,结果是不能创建,因为你虽然创建了子应用,但是你没有上传APK包,并没有应用所以没有对应的应用内商品。

所以在此之前我们还需要做一些配置。我们需要创建一个内部测试渠道,然后配置对应的开发者或测试人员。

哎,对对对,我知道是很麻烦,很SB,但谁叫谷歌就是这么定的流程呢,没有办法,按流程走把。

首先需要创建一个测试轨道:比如我选择的是内部测试:

发布一个 APK / AAB 文件到测试渠道,然后 选择/创建 测试人员。

如果没有的话,创建一个测试者,输入对应的邮箱即可。

这样就能添加测试人员了,同时你还可以在底部邀请链接去邀请测试者,激活测试规则等。

当一切都配置完成之后(会有一个进度条的,当完成一步会中划线标记的),我们到发布中选择审核以及发布,谷歌审核很快,一切正常2个小时内就能通过,然后我们打开谷歌应用市场搜索我们的应用就能找到内部测试的渠道应用:

点击下载之后,我们安装的就是我们之前创建的内部测试渠道应用啦。

1.3 创建应用内购商品

应用虽然是上线了,但是我们还没创建内购商品呢,此时我们再点击应用内购的 Tab 就能创建对应的商品了。

商品其实是分订阅类型与内购商品,内购商品又分消耗型与非消耗型,由于我们的商品并不复杂,是输入消耗型的,所以我的代码都是以消耗性为例。

如何区别各种类型?举个栗子:

订阅类型:爱奇艺的VIP月卡。

非消耗性:消消乐免费玩前10关卡,付费解锁后面的关卡内容。

消耗性:欢乐斗地主买100个欢乐豆。

我们其实就是最简单的消耗性,花钱买虚拟币,可重复购买的那种。

下面开始创建商品,这一点反倒是蛮简单:

注意的是,创建应用id的时候,最好是包名加上商品id。避免冲突

com.xxgroup.whatsapp.coin10

随后定义对应的标题与描述,以及商品对应的价格,可以使用价格模板,也可以直接写。

创建完成之后别急,需要激活之后才能生效:

此时列表上就有了,这样才是生效状态。

此时就能买了吗?可以了,但是测试账号并没有关联信用卡,也不方便,我们设置一下测试账号的测试购买授权:

下面的授权方式改为:LICENSED

好了到此,我们的谷歌市场配置就完成了。

二、集成支付插件兼容Android与iOS支付

接下来我们就在 Flutter 中使用插件集成应用内支付功能。

in_app_purchase: 3.1.5

文档地址:【传送门】

使用起来并不复杂,可以说是 Android 与 iOS 的逻辑是一样样的。

贴一下我的代码:

首先是生命周期的回调,页面创建完成初始化插件,并设置监听,当页面关闭的时间销毁资源:

late StreamSubscription> _subscription;

late InAppPurchase _inAppPurchase;

List? _products; //内购的商品对象集合

@override

void onReady() {

fetchCoinList();

// 初始化in_app_purchase插件

_inAppPurchase = InAppPurchase.instance;

//监听购买的事件

final Stream> purchaseUpdated = _inAppPurchase.purchaseStream;

_subscription = purchaseUpdated.listen((purchaseDetailsList) {

_listenToPurchaseUpdated(purchaseDetailsList);

}, onDone: () {

_subscription.cancel();

}, onError: (error) {

error.printError();

SmartDialog.showToast("购买失败了");

});

//加载全部的商品

loadProducts();

}

@override

void onClose() {

refreshController.dispose();

datas.clear();

if (Device.isIOS) {

final InAppPurchaseStoreKitPlatformAddition iosPlatformAddition =

_inAppPurchase.getPlatformAddition();

iosPlatformAddition.setDelegate(null);

}

_subscription.cancel();

}

加载全部的商品,这里真实开发环境是由后端接口返回的,我这里作为测试就写死了:

/// 加载全部的商品

void loadProducts() async {

final bool available = await _inAppPurchase.isAvailable();

if (!available) {

SmartDialog.showToast("无法连接到商店");

return;

}

//开始购买

SmartDialog.showToast("连接成功-开始查询全部商品");

const Set _kIds = {

'com.hongyegroup.whatsapp.android.coin100',

'com.hongyegroup.whatsapp.android.coin500',

'com.hongyegroup.whatsapp.android.coin1000',

'com.hongyegroup.whatsapp.android.coin3000',

};

final ProductDetailsResponse response = await _inAppPurchase.queryProductDetails(_kIds);

if (response.notFoundIDs.isNotEmpty) {

SmartDialog.showToast("无法找到指定的商品");

return;

}

// 处理查询到的商品列表

List products = response.productDetails;

if (products.isNotEmpty) {

//赋值内购商品集合

_products = products;

}

SmartDialog.showToast("全部商品加载完成了,可以启动购买了,总共商品数量为:${products.length}");

//先恢复可重复购买

await _inAppPurchase.restorePurchases();

}

查询到商品之后就可以在 ListView 显示商品的属性,如过 UI 设计的列表样式比较复杂,当我们谷歌内购设置的标题与详情满足不了设计的需求,可以由我们自己的后台返回对应接口,当商品加载成功之后的商品 id 去匹配对应后台的列表数据并展示出来。

当我们点击对应的 Item 就可以拿到对应的商品ID,执行购买的逻辑:

// 调用此函数以启动购买过程

void startPurchase(String productId) async {

if (_products != null && _products!.isNotEmpty) {

SmartDialog.showToast("准备开始启动购买流程");

try {

ProductDetails productDetails = _getProduct(productId);

Log.d("一切正常,开始购买,信息如下:title: ${productDetails.title} desc:${productDetails.description} "

"price:${productDetails.price} currencyCode:${productDetails.currencyCode} currencySymbol:${productDetails.currencySymbol}");

_inAppPurchase.buyConsumable(purchaseParam: PurchaseParam(productDetails: productDetails));

} catch (e) {

e.printError();

Log.e("购买失败了");

}

} else {

SmartDialog.showToast("当前没有商品无法调用购买逻辑");

}

}

// 根据产品ID获取产品信息

ProductDetails _getProduct(String productId) {

return _products!.firstWhere((product) => product.id == productId);

}

我们的商品都是消耗类型的,所以这里我们就写死了,如果你的商品有多种类型,你可以判断类型是输入哪一种类型,分别就行不同种类的购买方式。

当我们点击购买之后,就可以走到购买监听中了,我们在里面监听当前购买的状态。当确定购买完成之后我们就能进行商品的消耗。如果购买完成不消耗,那么三天之后会自动退款的。

/// 内购的购买更新监听

void _listenToPurchaseUpdated(List purchaseDetailsList) async {

for (PurchaseDetails purchase in purchaseDetailsList) {

if (purchase.status == PurchaseStatus.pending) {

// 等待支付完成

_handlePending();

} else if (purchase.status == PurchaseStatus.error) {

// 购买失败

_handleError(purchase.error);

} else if (purchase.status == PurchaseStatus.purchased || purchase.status == PurchaseStatus.restored) {

//完成购买, 到服务器验证

if (Device.isAndroid) {

var googleDetail = purchase as GooglePlayPurchaseDetails;

print(purchase);

loadAndroidGetPayInfo(googleDetail);

} else if (Device.isIOS) {

var appstoreDetail = purchase as AppStorePurchaseDetails;

print(purchase);

loadAppleGetPayInfo(appstoreDetail);

}

}

}

}

/// 购买失败

void _handleError(IAPError? iapError) {

SmartDialog.showToast("购买失败啦:${iapError?.code} message${iapError?.message}");

}

/// 等待支付

void _handlePending() {

SmartDialog.showToast("等待支付的逻辑");

}

/// Android支付成功的校验

void loadAndroidGetPayInfo(GooglePlayPurchaseDetails googleDetail) async {

final originalJson = googleDetail.billingClientPurchase.originalJson;

Log.d("originalJson:$originalJson");

if (await coinRepositroy.checkGooglePaySuccess(originalJson)) {

//校验成功之后执行消耗

await _inAppPurchase.completePurchase(googleDetail);

}

}

/// Apple支付成功的校验

void loadAppleGetPayInfo(AppStorePurchaseDetails appstoreDetail) {

if (await coinRepositroy.checkApplyPaySuccess(appstoreDetail)) {

//校验成功之后执行消耗

await _inAppPurchase.completePurchase(appstoreDetail);

}

}

到这一步,我们已经和测试账号管理了,所以我们直接运行 Debug 包一样的可以测试支付,并且我们授权测试支付,所以不需要绑定银行卡直接用测试支付卡就能完成支付流程。

截图:

当我们支付成功之后就可以执行消耗操作。

三、服务器校验相关流程

我并没有把代码做区分,上面的代码就已经包含了支付成功之后的后端校验逻辑。

为什么要加后端校验?客户端支付成功了,服务端怎么知道,万一用接口的方式通信,如果被抓包岂不是可以无限加金币了。太不安全了,所以才有服务器校验这一步。

iOS的校验不用说,很简单,拿到支付完成的票据直接发起请求即可,而 Android 的服务端校验就相对麻烦,需要配置谷歌云,以及对应的通行权限。

谷歌结算文档:【传送门】

谷歌支付校验AI:【传送门】

如果我们直接在API中调用校验接口,那肯定是直接报错:

{

"error": {

"code": 403,

"message": "The project id used to call the Google Play Developer API has not been linked in the Google Play Developer Console.",

"errors": [

{

"message": "The project id used to call the Google Play Developer API has not been linked in the Google Play Developer Console.",

"domain": "androidpublisher",

"reason": "projectNotLinked"

}

]

}

}

没有授权,接下来开始授权:

3.1 Google Cloud关联

首先需要配置 Google Cloud 并且配置相关的账号,对应指定的应用。

点击项目的 API Access 中

如果这一步你没有 Google Cloud 账号,可以创建或关联已有的 Google Cloud 账号,这里我没有就直接创建了Google Cloud 账号。关联之后我们就能看到上图所示的画面。

我们可以直接在谷歌市场控制台中的 API Access 中直接进入谷歌云后台,也能 直接输入网址 code.google.com/apis/consol… 是一样的效果。

网上很多教程教你去开通 Google Play Developer API 权限,其实现在是没必要了,因为我们关联 Google Cloud 账号之后,默认就已经开通了。

所以我们不需要再次去授权了。

如果觉得不保险,也能在里面搜索 Billing ,然后启动相关的支付服务权限,反正我是开了,但我觉得没必要开这些,如果不行的你开启这些服务也无所谓。

3.2 创建 web-OAuth 授权

网上很多教程比较老,可能要你手动的创建web授权,其实当我们在谷歌市场的后台关联谷歌云的时候,就已经帮我们初始化了很多配置,已经都有了。

我们再谷歌云后台,在APIs & auth 项中找到 Credentials,直接查看即可:

我们点击 Web 授权进去配置相关配置。

主要是配置左侧的上下两个 URI 地址,上面的配置后台域名:

下面的是固定写法,callback的地址一定是可用域名 + /oauth2callback。

创建完成之后,记得记录你的三个重要字段,client_id 和 client_secret 以及 redirect_uri ,后面会用到。

通过访问一下的网页获取到一个oauth2callback:

https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&

redirect_uri=https://api.whatsapp.sg/oauth2callback&client_id=816630003638-5p27m684jfpfa6sh6l9chbpreq2hg9ov.apps.googleusercontent.com

返回一个code:

https://api.whatsapp.sg/oauth2callback?code=4/CpVOd8CljO_gxTRE1M5jtwEFwf8gRD44vrmKNDi4GSS.kr-GHuseD-oZEnp6UADFXm0E0MD3FlAI

拿到后面的 code 字段。

code=4/CpVOd8CljO_gxTRE1M5jtwEFwf8gRD44vrmKNDi4GSS.kr-GHuseD-oZEnp6UADFXm0E0MD3FlAI

我们手动的在 postman 之类的工具上,通过固定的参数,拿到 refresh_token(重点,后期全靠它)

{

'grant_type':'authorization_code',

'code':'4/CpVOd8CljO_gxTRE1M5jtwEFwf8gRD44vrmKNDi4GSS.kr-GHuseD-oZEnp6UADFXm0E0MD3FlAI',//上一步获取的,

'client_id':'816630003638-5p27m684jfpfa6sh6l9chbpreq2hg9ov.apps.googleusercontent.com',

'client_secret':'36WnPnojshgj56uhghj-xCo',

'redirect_uri':'https://api.whatsapp.sg/oauth2callback',

}

向以下的网址发起 Post 请求。

https://accounts.google.com/o/oauth2/token

一定要保证网络畅通,只有一次机会,返回的json对象如下

{

"access_token" : "",

"token_type" : "Bearer",

"expires_in" : 3600,

"refresh_token" : "1/zaaHNytlC3SEBX7F2cfrHcqJEa3KoAHYeXES6nmho"

}

refresh_token 就拿到了,注意一定要保存好,只有这一次机会,如果再次调用此接口 refresh_token 就是空了,不会返回了。

3.3 OAuth校验支付是否成功

拿到这个refresh_token就可以调用真正的校验接口了,例如我们后端调用的是否支付成功:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{purchaseToken}?access_token={$access_token}"

这里的packageName,productId,purchaseToken 大家都很熟悉了,就是Android 支付成功之后返回给我们的,直接传递给后端即可,而access_token其实就是我们上面拿到的 refresh_token。

我们需要拿到第一次返回的 refresh_token 保存起来,后续以刷新的方式来获取新的 refresh_token ,用于访问真正的API。

后台调用验证接口完成之后得到的对象如下:

{

"kind": string,

"purchaseTimeMillis": string,

"purchaseState": integer,

"consumptionState": integer,

"developerPayload": string,

"orderId": string,

"purchaseType": integer,

"acknowledgementState": integer,

"purchaseToken": string,

"productId": string,

"quantity": integer,

"obfuscatedExternalAccountId": string,

"obfuscatedExternalProfileId": string,

"regionCode": string

}

只需要验证状态即可:

consumptionState == 0

purchaseState == 0

说明这个商品已经购买了,并且也没有被消耗,那么此时就可以给移动端返回true,让移动端执行消耗操作。

后端PHP的校验谷歌内购是否成功示例代码:

public function checkGooglePay(){

$google_public_key = "你的公钥(google后台在你的应用下获取)";

$inapp_purchase_data = $_REQUEST['signtureTemp'];

$inapp_data_signature = $_REQUEST['signtureDataTemp'];

$key = "-----BEGIN PUBLIC KEY-----\n".chunk_split($google_public_key, 64,"\n").'-----END PUBLIC KEY-----';

$key = openssl_pkey_get_public($key);

$signature = base64_decode($inapp_data_signature);

$ok = openssl_verify($inapp_purchase_data,$signature,$key,OPENSSL_ALGO_SHA1);

if (1 == $ok) {

// 支付验证成功!

//进行二次验证,订单查询

// 1.获取access_token(3600秒有效期)

$access_token_url = "https://accounts.google.com/o/oauth2/token";

$data_tmp2 = array(

'grant_type'=>'refresh_token',

'refresh_token'=>'',//长效token

'client_id'=>'', //客户端id

'client_secret'=>'',//客户端密钥

);

$http = new http($access_token_url,'POST',5);

$http->setContent($data_tmp2);

$result = $http->exec();

$result = json_decode($contents,true);

$access_token = $result['access_token'];

//2.通过获得access_token 就可以请求谷歌的API接口,获得订单状态

$packageName=""//包名

$productId="" //产品Id

$purchaseToken=""

$url = "https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/purchases/products/{productId}/tokens/{purchaseToken}?access_token={$access_token}";

$http = new http($url,'GET',5);

$http->setContent($data);

$contents = $http->exec();

$contents = json_decode($contents,true);

if($contents['consumptionState'] == 0 && $contents['purchaseState'] == 0){

//验证成功 购买成功并且没有消耗 google支付中客户端如果没有进行消耗是不能再次购买该商品

//处理游戏逻辑 发钻石,通知客户端进行消耗

}else{

//订单验证失败

}

}else{

//签名验证失败

}

}

第一步是可选的,校验APK的签名,当前应用是不是谷歌市场下载的,如果不是从谷歌市场下载的那么支付不生效。如果你想要的校验APK来源就加上,不想校验也可以。

第二步就是开始校验谷歌内购支付订单的状态,拿到本地长期保存的refresh_token 以及之前获取到的client_id 和 client_secret 就可以到哪授权的 access_token 。

第三部就是拿到 access_token 以及 客户端传递的包名,产品id,支付凭证,调用校验接口,拿到订单的当前状态。

然后就是根据订单的状态判断返回给客户端是否有效,让客户端执行消耗操作。

如果您觉得有必要,也可以消耗之后再次调用接口校验,是否已购买,是否已消耗。

3.3 创建Service Account的授权

其实之前的之前的 Web-OAuth 的方式来进行验证不是不行,但是步骤相对比较复杂,而更推荐的方式则是创建服务的方式来进行校验。

我们把视角拉回谷歌市场控制台,找到 Api Access 选项 (老熟人了)

其实我们在下面的访问权限就可以看到 Service Account 的选项。如果你已有 Service Account 就可以看到全部的关联的 Service Account 。如果你没有此服务,那么就可以点击创建服务去谷歌云创建。当我们到谷歌云里面点击创建 Service Account:

我们点击创建 Service Account 会走到创建服务的流程:

第一步随便写,关键是第二步:

选择角色为 Service Account Admin

第三步不填,直接提交:

你就能看到你创建的服务啦,接下来就是创建Key,Json的方式创建,然后下载到Json给到后台人员。

再下一步就回到谷歌商店控制台的 Api Access 看 Service Account 是否已经关联上了:

如果有这样的信息,说明关联上了,才是正确的流程,如果你创建了 Service Account,但是这里并没有展示,那么就肯定会错:

{

  "code" : 401,

  "errors" : [ {

    "domain" : "androidpublisher",

    "message" : "The current user has insufficient permissions to perform the requested operation.",

    "reason" : "permissionDenied"

  } ],

  "message" : "The current user has insufficient permissions to perform the requested operation."

}

之后正常显示了服务,说明你的服务才能访问到谷歌市场这一边,接下来就是点击授予访问权限。

重点是要把财务信息的两项勾选上,这样才能访问到应用内支付校验的相关权限,如图所示:

点击保存修改之后就完成了,由于我们关联账号的时候已经勾选了 Google Play Android Developer API 权限,我们现在直接就能用了。

后端的用法各平台的使用方式不同,但是都是很简单的,直接集成谷歌的API,然后总共就两步,第一步设置Config属性把这个 Service Account 生成的Json文件传入,第二步直接调用 GoogleAPI 内置的校验方法即可,都是API内置了的更方便。

当我们客户端把packageName ,prodectId,purchaseToken 三个字段传给后端,他们直接调用 API 就能直接校验,相比 Web-OAuth 的方式要更简单一些。

校验结果如下:

OK,两种方法 Web-OAuth 的授权方式,以及 Service Account 的授权方式,两种都可以达到效果。就看大家的喜欢哪一种啦!

那么到处整体的谷歌内购全部流程就结束了,大家觉得还算详细吗?

后记

其他的第三方插件我觉得 Flutter 都蛮简单的,比如极光推送,感觉比 Android 版本的还要简单,一些配置与代码都封装好了,开箱即用很方便。

对于内购的插件 in_app_purchase 其实内部在 Android 平台也是用的 Google Billing ,只是封装之后使用起来也很简单。感觉比原生都好用

主要是内购的配置,谷歌的配置,应用配置,商品的配置,谷歌云配置,各种授权配置。只要其中一步卡住了就不能行,感觉真的是很复杂,网上的一些参考资源很多都是过时的,所以才有了我一步步的踩坑的分享,如果有需要大家可以收藏一波,收藏等于学会,万一哪天踩坑了可以参考参考嘛。

关于内购,不知道大家有没有遇到内购的一些坑呢,又是如何解决的呢?欢迎大家一起交流一下哦。

那么本期内容就到这里,如讲的不到位或错漏的地方,希望同学们可以评论区指出。

如果感觉本文对你有一点点点的启发,还望你能点赞支持一下,你的支持是我最大的动力啦。

Ok,这一期就此完结。

Newki

Android/Flutter开发 @武汉

163

文章

419k

阅读

1.2k

粉丝 目录 收起

Flutter集成谷歌内购与使用的全过程

前言

一、谷歌市场配置商品

二、集成支付插件兼容Android与iOS支付

三、服务器校验相关流程

3.1 Google Cloud关联

3.2 创建 web-OAuth 授权

3.3 OAuth校验支付是否成功

3.3 创建Service Account的授权

后记

相关推荐 Flutter笔记:Flutter的WidgetsBinding.instance的window属性 1.4k阅读  ·  5点赞使用Flutter约束传递优化你的UI设计 1.1k阅读  ·  12点赞Flutter 绘制实践 | 路径篇 · 数字显示管 2.6k阅读  ·  62点赞Flutter 构建设计系统 1.3k阅读  ·  11点赞添加Flutter到iOS工程最新教程 6.5k阅读  ·  19点赞 友情链接:

smartjs

In App Purchasing - Unity 手册

In App Purchasing - Unity 手册

手册

脚本 API

unity.cn

Version:

2021.1

2023.2

2023.1

2022.3

2022.2

2022.1

2021.3

2021.2

2021.1

2020.3

2020.2

2020.1

2019.4

2019.3

2019.2

2019.1

2018.4

2018.3

2018.2

2018.1

2017.4

2017.3

2017.2

2017.1

5.6

包含此页的版本:

不含此页的版本:

受支持

旧版

手册

脚本 API

语言:

中文

English

中文

日本語

한국어

手册

Version:

2021.1

2023.2

2023.1

2022.3

2022.2

2022.1

2021.3

2021.2

2021.1

2020.3

2020.2

2020.1

2019.4

2019.3

2019.2

2019.1

2018.4

2018.3

2018.2

2018.1

2017.4

2017.3

2017.2

2017.1

5.6

包含此页的版本:

不含此页的版本:

受支持

旧版

Unity User Manual 2021.1

Released packages

In App Purchasing

FBX Exporter

Input System

In App Purchasing

com.unity.purchasing

描述

重要升级说明:如果从 Unity IAP(com.unity.purchasing + Asset Store 插件)版本 2.x 更新为版本 3.x,请完成以下操作以解决编译错误: 1. 移动 IAPProductCatalog.json 和 BillingMode.json,从:Assets/Plugins/UnityPurchasing/Resources/ 到:Assets/Resources/. 2. 移动 AppleTangle.cs 和 GooglePlayTangle.cs 从:Assets/Plugins/UnityPurchasing/generated 到:Assets/Scripts/UnityPurchasing/generated. 3. 所有其余 Asset Store 插件文件夹和文件从项目的 Assets/Plugins/UnityPurchasing 中删除。包描述:借助 Unity IAP,在多个应用商店中为游戏设置应用内购从未如此简单。该包提供: â–ª 一种免费访问所有商店的通用 API,以便您充分了解和优化自己的游戏内经济 â–ª 与 Unity Analytics 自动耦合,可根据多个平台的收入和购买数据趋势进行监控和决策 â–ª 支持 iOS、Mac、tvOS、Google Play、Windows 和 Amazon 应用商店(*). â–ª 支持与 Unity Distribution Portal 一起使用,以与其他应用商店同步目录和交易 â–ª Apple App Store 和 Google Play 的客户端收据验证安装此软件包后,打开 Services 窗口以启用应用内购,以使用这些功能。

版本信息

Released for Unity

Package version 3.2.3 is released for Unity Editor version 2021.1.

与 Unity 兼容

These package versions are available in Unity version 2021.1:

文档位置:

状态

可用版本:

com.unity.purchasing@4.0

released

4.0.0

com.unity.purchasing@3.2

released

3.2.2, 3.2.3

关键字

purchasing , iap , unity

FBX Exporter

Input System

Copyright © 2023 Unity Technologies 优美缔软件(上海)有限公司 版权所有 "Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。 公安部备案号:31010902002961 法律条款 隐私政策 Cookies 沪ICP备13002771号-8

iOS 内购插件 - DCloud 插件市场

iOS 内购插件 - DCloud 插件市场

Toggle navigation

登录

注册

全部

前端组件

通用组件

uvue 组件

nvue 组件

小程序组件

DataCom组件

JS SDK

通用 SDK

UTS SDK

微信小程序 SDK

Native.js

UTS插件

API插件

组件插件

uni-app前端模板

前端页面模板

uvue 页面模板

nvue 页面模板

uni-app前端项目模板

App原生语言插件

App原生语言插件

web 项目

web 项目模板

uniCloud

云函数模板

云端一体页面模板

云端一体项目模板

Admin插件

DB Schema及验证函数

HBuilderX

HBuilderX

语言包

服务商店

没找到想要的插件?

提交需求

已发布需求

插件开发指南

发布插件

我的插件

App原生语言插件

App原生语言插件

iOS 内购插件

iOS 内购插件

StoreKit

内购

IAP

原生代码实现iOS内购,只有两个方法简单操作

作者:

243***@qq.com

咨询作者

下载人数: 8

    

下载次数: 10

    

收藏人数:

1

(0)

插件ID:XTL-IAPKit

插件包体积:21.7KB

更新日期:2024-01-03

版本:2.0

购买(0 元)for 云打包

下载 for 离线打包

赞赏(0)

本站所有收费插件均支持免费试用,切勿私下交易或购买不可正常试用的插件,而造成不必要的纠纷。

概述

评论

更新记录

2.0(2024-01-03)

XTLIAPKit使用教程

1.引入XTLIAPKit插件

var iap = uni.requireNativePlugin("XTLIAPKit")

2.发起支付请求

var iap = uni.requireNativePlugin("XTLIAPKit")

//发起支付

iap.pay({

'pids': ['内购商品id'],

'isAutoFinishTransaction': false//是否自动结算凭据

},(ret) => {

})

3.完成支付请求,仅在isAutoFinishTransaction=false时需要

//完成支付并结算凭证

iap.finishTransaction({})

平台兼容性

Android

iOS

×

适用版本区间:9 - 17

原生插件通用使用流程:

购买插件,选择该插件绑定的项目。

在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。

根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。

打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。

开发完毕后正式云打包

付费原生插件目前不支持离线打包。

Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android

iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择

XTLIAPKit使用教程

1.引入XTLIAPKit插件

var iap = uni.requireNativePlugin("XTLIAPKit")

2.发起支付请求

var iap = uni.requireNativePlugin("XTLIAPKit")

//发起支付

iap.pay({

'pids': ['内购商品id'],

'isAutoFinishTransaction': false//是否自动结算凭据

},(ret) => {

})

3.完成支付请求,仅在isAutoFinishTransaction=false时需要

//完成支付并结算凭证

iap.finishTransaction({})

隐私、权限声明

1. 本插件需要申请的系统权限列表:

暂无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

暂无

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无

许可协议

作者未提供license.md

评论列表

撰写评论

暂无用户评论。

加载更多...

没有更多评论了。

插件问答

我要提问

使用中有什么不明白的地方,就向插件作者提问吧~

我要提问

加载更多...

没有更多了。

推广

他的插件

iOS 内购插件

StoreKit

内购

IAP

(0)

原生代码实现iOS内购,只有两个方法简单操作

 下载 10

 赞赏 0

原生SDK插件作者排行

李子

发布插件:49

下载 7987 

 销量 1154 

FullStack

发布插件:116

下载 14206 

 销量 1343 

Fvv123

发布插件:8

下载 18292 

 销量 17 

fsyang

发布插件:22

下载 12660 

 销量 1878 

博文浩荡

发布插件:40

下载 16906 

 销量 1859 

码农朱哲

发布插件:46

下载 31409 

 销量 1199 

软云

发布插件:46

下载 9899 

 销量 646 

极光

发布插件:6

下载 27875 

 销量 23 

happyboy183

发布插件:4

下载 4447 

 销量 785 

三杯五岳

发布插件:60

下载 18677 

 销量 2605 

hke***@qq.com

发布插件:13

下载 5721 

 销量 1235 

imn***@gmail.com

发布插件:3

下载 2963 

 销量 2 

129***@qq.com

发布插件:1

下载 2367 

 销量 2 

mPaaS

发布插件:1

下载 13256 

 销量 8 

935***@qq.com

发布插件:1

下载 2770 

 销量 6 

5元

10元

20元

50元

100元

200元

自定义

支付宝

微信支付

赞赏

×

前端兼容平台

Vue

vue2

不确定

不支持

支持

最低版本号:无

vue3

不确定

不支持

支持

App

app-vue

不确定

不支持

支持

app-nvue

不确定

不支持

支持

app-uvue

不确定

不支持

支持

H5-mobile

Safari

不确定

不支持

支持

Android Browser

不确定

不支持

支持

微信浏览器(Android)

不确定

不支持

支持

QQ浏览器(Android)

不确定

不支持

支持

H5-pc

Chrome

不确定

不支持

支持

IE

不确定

不支持

支持

Edge

不确定

不支持

支持

Firefox

不确定

不支持

支持

Safari

不确定

不支持

支持

小程序

微信

不确定

不支持

支持

阿里

不确定

不支持

支持

百度

不确定

不支持

支持

字节跳动

不确定

不支持

支持

QQ

不确定

不支持

支持

钉钉

不确定

不支持

支持

快手

不确定

不支持

支持

飞书

不确定

不支持

支持

京东

不确定

不支持

支持

快应用

华为

不确定

不支持

支持

联盟

不确定

不支持

支持

部署进度

×

Modal title

One fine body…

Close

Save changes

DCloud 即数字天堂(北京)网络技术有限公司是W3C成员及HTML5中国产业联盟发起单位

商务合作:bd@dcloud.io、广告投放 | 

向官方投诉

京ICP备12046007号-4 | 京公网安备:11010802035340号

增值电信业务经营许可证编号:合字B2-20220010 | 国家信息安全等级保护三级,证书编号:11010813802-20001

2022 iOS 内购详解最新最全In-App Purchase(附代码) - 简书

iOS 内购详解最新最全In-App Purchase(附代码) - 简书登录注册写文章首页下载APP会员IT技术2022 iOS 内购详解最新最全In-App Purchase(附代码)请叫我作家关注赞赏支持2022 iOS 内购详解最新最全In-App Purchase(附代码)

学如逆水行舟,不进则退。

今天和大家来聊聊iOS内购即In-App Purchase,内购分为消耗型、非消耗型、自动订阅、非自动订阅型。

内购流程

配置App内购买项目(可以参考苹果官方文档)

在iTC后台接收付费协议

创建App内购买项目

创建沙盒账号,用于测试

代码实现

从苹果请求商品详情

- (void)requestIAPProducts:(NSSet *)productIds

{

SKProductsRequest *productReq = [[SKProductsRequest alloc] initWithProductIdentifiers:productIds];

productReq.delegate = self;// SKProductsRequestDelegate

[productReq start];

}

实现SKProductsRequestDelegate代理,如果获取到商品的话就执行购买行为

#pragma mark SKProductsRequestDelegate

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response

{

[response.products enumerateObjectsUsingBlock:^(SKProduct * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

}];

[response.invalidProductIdentifiers enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

}];

// 开始购买

if (response.products.count > 0) {

SKProduct *product = response.products.firstObject;

SKMutablePayment *payment = [[SKMutablePayment alloc] init];

payment.applicationUsername = @"uid";

payment.productIdentifier = product.productIdentifier;

payment.quantity = 1;

[[SKPaymentQueue defaultQueue] addPayment:payment];

}

}

- (void)requestDidFinish:(SKRequest *)request

{

}

- (void)request:(SKRequest *)request didFailWithError:(NSError *)error

{

}

监听商品支付结果:SKPaymentTransactionObserver

#pragma mark SKPaymentTransactionObserver

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

{

for (SKPaymentTransaction *transaction in transactions) {

switch (transaction.transactionState) {

// 1、购买成功

// 2、购买成功,但是你没有finish掉,没有消耗

case SKPaymentTransactionStatePurchased: {

//自动订阅订单抛出,只有自动订阅订单originalTransaction才会有值

if (transaction.originalTransaction) {

} else {

}

// 对于成功的订单需要先到后台校验 成功后才可以消单

// [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

break;

}

case SKPaymentTransactionStateFailed: {

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

break;

}

case SKPaymentTransactionStateRestored: {

// [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

break;

}

case SKPaymentTransactionStatePurchasing: {

break;

}

case SKPaymentTransactionStateDeferred: {

break;

}

default: {

break;

}

}

}

}

后台校验订单

沙盒订单校验:https://sandbox.itunes.apple.com/verifyReceipt

正式订单校验:https://buy.itunes.apple.com/verifyReceipt

凭证校验结果格式说明

{

"receipt": {

"receipt_type": "ProductionSandbox",

"adam_id": 0,

"app_item_id": 0,

"bundle_id": "",

"application_version": "7.0",

"download_id": 0,

"version_external_identifier": 0,

"receipt_creation_date": "2022-05-20 02:37:42 Etc/GMT",

"receipt_creation_date_ms": "1653014262000",

"receipt_creation_date_pst": "2022-05-19 19:37:42 America/Los_Angeles",

"request_date": "2022-05-31 06:46:57 Etc/GMT",

"request_date_ms": "1653979617874",

"request_date_pst": "2022-05-30 23:46:57 America/Los_Angeles",

"original_purchase_date": "2013-08-01 07:00:00 Etc/GMT",

"original_purchase_date_ms": "1375340400000",

"original_purchase_date_pst": "2013-08-01 00:00:00 America/Los_Angeles",

"original_application_version": "1.0",

"in_app": [

{

"quantity": "1",

"product_id": "xxxx",

"transaction_id": "xx",

"original_transaction_id": "xxx",

"purchase_date": "2022-05-20 02:37:41 Etc/GMT",

"purchase_date_ms": "1653014261000",

"purchase_date_pst": "2022-05-19 19:37:41 America/Los_Angeles",

"original_purchase_date": "2022-05-20 02:37:41 Etc/GMT",

"original_purchase_date_ms": "1653014261000",

"original_purchase_date_pst": "2022-05-19 19:37:41 America/Los_Angeles",

"is_trial_period": "false",

"in_app_ownership_type": "PURCHASED" // 代表成功

}

]

},

"environment": "Sandbox",

"status": 0

}

Demo 已经上传至Github ,记得给个star

发布上线

代码实现开发完成后,可以跟着版本一起发布,也可以单独审核内购,看具体需求

内购常见错误

获取不到商品信息:检查itc商品审核以及下线情况,检查设备知否支持内购

无法连接: 网络问题,切记沙盒环境下不可开vpn或者网络代理

21000 App Store无法读取你提供的JSON数据

21002 收据数据不符合格式

21003 收据无法被验证

21004 你提供的共享密钥和账户的共享密钥不一致

21005 收据服务器当前不可用

21006 收据是有效的,但订阅服务已经过期。当收到这个信息时,解码后的收据信息也包含在返回内容中

21007 收据信息是测试用(sandbox),但却被发送到产品环境中验证

21008 收据信息是产品环境中使用,但却被发送到测试环境中验证

如果觉得我写的还不错的话,记得给个关注哦。有任何疑问❓可以留言咨询哦,看到会回复

参考资料:

App内购买项目类型

©著作权归作者所有,转载或内容合作请联系作者 人面猴序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...沈念sama阅读 145,261评论 1赞 308死咒序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...沈念sama阅读 62,177评论 1赞 259救了他两次的神仙让他今天三更去死文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...开封第一讲书人阅读 96,329评论 0赞 214道士缉凶录:失踪的卖姜人 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...开封第一讲书人阅读 41,490评论 0赞 184港岛之恋(遗憾婚礼)正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...茶点故事阅读 49,353评论 1赞 262恶毒庶女顶嫁案:这布局不是一般人想出来的文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...开封第一讲书人阅读 39,028评论 1赞 179城市分裂传说那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...沈念sama阅读 30,611评论 2赞 276双鸳鸯连环套:你想象不到人心有多黑文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...开封第一讲书人阅读 29,383评论 0赞 171万荣杀人案实录序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...沈念sama阅读 32,749评论 0赞 215护林员之死正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...茶点故事阅读 29,460评论 2赞 219白月光启示录正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...茶点故事阅读 30,814评论 1赞 232活死人序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...沈念sama阅读 27,255评论 2赞 215日本核电站爆炸内幕正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...茶点故事阅读 31,752评论 3赞 214男人毒药:我在死后第九天来索命文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...开封第一讲书人阅读 25,685评论 0赞 9一桩弑父案,背后竟有这般阴谋文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...开封第一讲书人阅读 26,114评论 0赞 170情欲美人皮我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...沈念sama阅读 33,747评论 2赞 234代替公主和亲正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...茶点故事阅读 33,901评论 2赞 238推荐阅读更多精彩内容iOS 内购最新讲解一.总说内购的内容 协议、税务和银行业务 信息填写 内购商品的添加 添加沙盒测试账号 内购代码的具体实现 内购的注...九洲仙人阅读 2,837评论 2赞 3iOS 内购最新讲解一.总说内购的内容 协议、税务和银行业务 信息填写 内购商品的添加 添加沙盒测试账号 内购代码的具体实现 内购的注...默默_David阅读 3,351评论 0赞 6Flutter iOS 苹果IAP(内购)实现步骤及问题总结(全网最全)IAP内购支付流程 Client向Server发送请求,获得一份产品列表。 Server返回包含产品标识符的列表。...StevenHu_Sir阅读 25,354评论 10赞 48iOS 苹果内购(In-App Purchase)内购简介 IAP 全称:In-App Purchase,是指苹果 App Store 的应用内购买,是苹果为 Ap...欧大帅Allen阅读 7,167评论 0赞 6iOS内购—— In-App Purchase(消耗型)iOS应用如果涉及到支付功能,分为两类:第三方支付和苹果内购。那么什么情况下选择使用第三方支付,又在什么情况下选择...ZfRee阅读 38,180评论 36赞 66评论0赞99赞10赞赞赏更

iphone越狱内购破解插件可以解决什么类型的软件? - 知乎

iphone越狱内购破解插件可以解决什么类型的软件? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册iOSiPhone 应用iphone越狱内购破解插件可以解决什么类型的软件?关注者3被浏览7,500关注问题​写回答​邀请回答​好问题​添加评论​分享​1 个回答默认排序知乎用户破解插件有很多种,IAP FREE,IAP CRACKER是常见的内购破解类插件。内购破解对大多数软件可以成功,这在网上有各种清单就不多赘述,而许多游戏大作诸如gameloft或者EA的是很难破解的。发布于 2014-01-23 20:18​赞同​​1 条评论​分享​收藏​喜欢收起​​

iapfree_百度百科

ree_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10iapfree播报讨论上传视频疯狂机器猫设计的iPhone内购破解插件iapfree是由中国作者crazydoraemon(疯狂机器猫)设计的iPhone内购破解插件。功能强大,超过iap cracker。已经永远不再更新。且服务器已于2013年7月关闭,新用户安装后无法下载核心插件,使新用户将无法使用该软件破解内购。软件名称iapfree软件版本4.0.1作    者crazydoraemon类    别iPhone内购破解插件目录1软件信息2软件操作▪安装方法▪使用3注意软件信息播报编辑Iapfree2013年最终版本为4.0.1,作者表示完全支持6.X设备。此款越狱后的deb插件可以从iapfree贴吧中的教程贴 [1]下载到。2013年2月16日,作者在微博发文表示,由于访问量过大,官方源主机服务提供商以CPU超限为由,已对主机停机。希望大家耐心等待。同时,作者也提醒大家,IAPFree永远也不会接受任何形式的捐赠或收费,大家要注意募捐信息的真伪。2013年2月18日,IAPFree插件列表服务器已部署完毕,由于域名解析先后顺序不同,所以有些用户可能暂时依然无法使用。估计明天早上之前应该都能恢复正常了。由于服务器刚刚部署完毕,不知道负载是否可以承受,作者提醒大家,请大家不要过分刷新列表,请节省服务器资源。源地址见拓展阅读第二与第三条。2013年4月28日,IAPFree更新至4.0版本 [2],内购核心插件更新至2.0.1。2013年7月23日,疯狂机器猫在微博发布,不再更新内购插件。原因是有人恶意散发言论。iapfree免费的内购时代将就此终结。2013年12月17日,疯狂机器猫在微博发布:“兴许,只是兴许哈。2014年我会回地球。”2014年1月1日,疯狂机器猫在微博宣布正在开发一套新的玩意。会把内购,内存修改,助手型辅助内挂功能等集于一身。使用形式也会有所改变,敬请关注。软件操作播报编辑安装方法首先请确保您的苹果设备已越狱,非越狱的苹果设备将无法安装DEB及之后的安装和使用。1、从iapfree吧 [1]下载正版iapfree及疯猫公共库DEB安装包。2、使用iTools、同步推、PP助手等同步软件连接电脑。3、打开文件系统,依次找到/var/root/Media/Cydia/AutoInstall/这个路径。4、将需要安装的DEB文件拖入即可。5、重新启动设备2次。6、找到IAPFree图标,初次使用需要覆盖插件列表,具体在iapfree吧教程中有介绍。7、进入游戏,点击内购按钮,不用再输入账号,直接内购成功!13、如有需要,可以下载其他app专用插件。(2013年4月中旬起已停止升级核心功能插件及其他插件。)使用1、启动软件后,就可以直观看到设置界面,默认情况下设置为生效,无需所任何修改。2、将软件设置画面拉至中下部分,会看到原始UDID,如果使用原始UDID进行内购,将有可能被苹果官方封停。3、在内购之前,请点击“随机UDID”让软件生成一段虚拟UDID,用来欺骗苹果的验证程序并且避免软件开发商剥夺您的使用权。4、以上步骤操作完毕后,就可以退出软件,开启游戏中的商店尝试内购。内购成功,将不提示输入苹果ID和密码。注意播报编辑1.如果是IAPFree不支持的软件或游戏,点了内购之后会显示类似“iTunes出错”之类的提示,即使是想使用真正付费也不可,除非关闭硬开关。2.截至2013年5月20日,iapfree的最新版本为4.0.1。最终版本为4.0.1,据消息人士称可破解多款应用及游戏,甚至包括FIFA13等,但暂时还未有消息发布。3.疯狂机器猫在新浪微博上声明从未创建过QQ群,官方消息只会在官网、新浪微博、腾讯微博、bhgbox论坛、推特、脸谱网发布。详情请查看早期的新浪微博消息,当时疯狂机器猫吓蒙了,大把人被骗了钱。4.疯狂机器猫官网上声明从未发起过任何捐款、赞助信息,且以后也不会发起。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

LocaliAPHeper 内购神器 | 最简洁的中文源

LocaliAPHeper 内购神器 | 最简洁的中文源

Cydiakk源

关于我们

官方Q群

官方主页

官方博客

展开

首页

博客

登录

Cydiakk中文源™

首页

资源列表

技术文章

关于我们

资源列表/[工具 ]

您未登录账号

LocaliAPHeper 内购神器

软件版本:2.0

支持设备:

iPhone

iPad

文件大小:59.39 KB

支持版本:iOS 6.0 ~ iOS 15.6

 

提供作者:ant

下载数量:28609次          总下载量:28613次

收藏数量:106次

 

Cydiakk中文源™

https://apt.cydiakk.com/

5050

资源

494343

粉丝

1654477

人气

去看看

软件内容

扫描二维码下载

请确保到

添加Cydiakk中文源™

刷新列表 以后再扫描二维码下载

软件描述:LocaliAPHeper 内购神器破解小助手破解部分软件的收费,弹窗付款点击取消即可

软件简介:

发布支持 iOS13

兼容支持 iOS6~12

简体中文汉化版

具体内容 预览截图

更新说明:

屏幕截图

搜索

最新上传更多

Sushi音乐模幅

83下载 / 1.0版本

2024-03-07 00:23:44发布

No2Theft iOS 16设备防盗系统

50下载 / 1.1.1版本

2024-03-07 00:23:42发布

Latchkey锁头自定义

72下载 / 2.3.2版本

2024-03-07 00:23:20发布

BioProtect XS 面容/指纹加密【破解版】

34下载 / 4.6-229版本

2024-03-07 00:23:14发布

最新下载更多

Diatrus Installer为unc0ver安装Sileo

2970下载 / 0.0001版本

2024-03-08 02:21:37发布

CCLess++控制中心模块

3481下载 / 1.8.2版本

2024-03-08 02:21:29发布

阿凡达屏蔽助手

32524下载 / 1.0.0.4-4版本

2024-03-08 02:20:59发布

GoodWiFi无线WiFi增强

1765下载 / 1.2版本

2024-03-08 02:20:46发布

广告终结者

3727下载 / 2.3.1版本

2024-03-08 02:20:43发布

源主推荐

MCPatch屏蔽OTA更新

允许安装iOS12屏蔽OTA更新描述文件

新腾翔嘉丽圆缩小版

好看的腾翔嘉丽圆缩小版字体

Bubble 主题

精致的Bubble主题,图标涵盖464个

Unc&雷神&Ele 最新防冻屏插件

完美解决11系统全系列越狱工具神经性卡死、假死、冻结

STMoon 超好看的单色主题[VIP5专享]

超好看的单色轮廓主题

MaxiX 主题 [VIP5专享]

好看的多彩主题

BlackOrs 2 主题 [VIP5专享]

超精美的主题 兼容7.0-11.4系统

Amara XI 主题 [VIP5专享]

超精美的主题 兼容7.0-11.4系统

旗下网站

博客

|

Cydiakk中文源

|

版权与免责声明

粤ICP备18011282号-4

Copyright 版权所有 © 2017-2024 CydiaKK.Com ®. All rights reserved. Cydiakk中文源™版权或产权保护

返回顶部