iap26最強內購插件 | 最簡潔的中文源
Cydiakk源
關于我們
官方Q群
官方主頁
官方博客
展開
首頁
博客
登錄
Cydiakk中文源?
首頁
資源列表
技術文章
關于我們
資源列表/[插件 ]
您未登錄賬號
iap26最強內購插件
軟件版本:0.0.2
支持設備:
iPhone
iPad
文件大?。?5.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發(fā)布
No2Theft iOS 16設備防盜系統(tǒng)
50下載 / 1.1.1版本
2024-03-07 00:23:42發(fā)布
Latchkey鎖頭自定義
72下載 / 2.3.2版本
2024-03-07 00:23:20發(fā)布
BioProtect XS 面容/指紋加密【破解版】
34下載 / 4.6-229版本
2024-03-07 00:23:14發(fā)布
最新下載更多
Diatrus Installer為unc0ver安裝Sileo
2970下載 / 0.0001版本
2024-03-08 02:21:37發(fā)布
CCLess++控制中心模塊
3481下載 / 1.8.2版本
2024-03-08 02:21:29發(fā)布
阿凡達屏蔽助手
32524下載 / 1.0.0.4-4版本
2024-03-08 02:20:59發(fā)布
GoodWiFi無線WiFi增強
1765下載 / 1.2版本
2024-03-08 02:20:46發(fā)布
廣告終結者
3727下載 / 2.3.1版本
2024-03-08 02:20:43發(fā)布
源主推薦
MCPatch屏蔽OTA更新
允許安裝iOS12屏蔽OTA更新描述文件
新騰翔嘉麗圓縮小版
好看的騰翔嘉麗圓縮小版字體
Bubble 主題
精致的Bubble主題,圖標涵蓋464個
Unc&雷神&Ele 最新防凍屏插件
完美解決11系統(tǒng)全系列越獄工具神經性卡死、假死、凍結
STMoon 超好看的單色主題[VIP5專享]
超好看的單色輪廓主題
MaxiX 主題 [VIP5專享]
好看的多彩主題
BlackOrs 2 主題 [VIP5專享]
超精美的主題 兼容7.0-11.4系統(tǒng)
Amara XI 主題 [VIP5專享]
超精美的主題 兼容7.0-11.4系統(tǒng)
旗下網站
博客
|
Cydiakk中文源
|
版權與免責聲明
粵ICP備18011282號-4
Copyright 版權所有 ? 2017-2024 CydiaKK.Com ?. All rights reserved. Cydiakk中文源?版權或產權保護
返回頂部
iOS 內購(IAP)的整個流程有哪些問題? - 知乎首頁知乎知學堂發(fā)現(xiàn)等你來答?切換模式登錄/注冊iOS 開發(fā)應用內購(In-App Purchase)iOS 內購(IAP)的整個流程有哪些問題?來自 @Bill Cheng 答「用戶使用 iOS 內支付成功,但是服務器端沒有收到客戶端發(fā)來的 Receipt 的話,怎么進行支付的確認? 」—— …顯示全部 ?關注者177被瀏覽102,055關注問題?寫回答?邀請回答?好問題?1 條評論?分享?6 個回答默認排序Bill Cheng??iOS 開發(fā)等 2 個話題下的優(yōu)秀答主? 關注感謝邀請首先貼上IAP流程:用戶點擊內購按鈕——>用戶確認購買內容——>用戶通過App Store賬戶驗證——>蘋果服務器驗證用戶請求——>蘋果服務器從用戶帳號扣款——>蘋果向用戶返回購買成功信息——>軟件接收并顯示用戶購買信息觀察上面的流程,不難發(fā)現(xiàn)整個流程所有對于用戶的驗證都是蘋果處理的,這就導致了第一個問題:『開發(fā)者實際上并不知道這個用戶是誰』,或者說『開發(fā)者實際上并不知道付錢的是誰』一般來說開發(fā)者會默認付錢的用戶和購買內容的用戶為同一個人,而在這個流程中,實際上付錢的用戶和購買內容的用戶是兩個賬號,而且這兩個賬號分別屬于不同的體系這樣的問題在針對軟件內容的IAP里面可能看不到問題,但是對于『服務』這種和用戶賬號關聯(lián)的東西問題就很大了——我如何才能知道,是我向其提供服務的用戶進行了付款行為,而不是其他用戶違反條例幫助此用戶獲得授權,或者說其他用戶想要把自己購買的服務應用到其他賬號上上面這段可能有些繞口,那么我來舉個例子:現(xiàn)在我有一個通過IAP出售的服務A,此服務是一個一次性購買服務。一個用戶使用賬號X購買了這個服務,然后用戶通過自己的App Store賬號在使用賬號Y的機器上使用了恢復IAP功能,那么此時我是否應該給賬號Y提供服務A呢?針對這個問題,雖然現(xiàn)在有各種各樣的解決方法,不過大部分情況,最后用戶還是會和客服聯(lián)系抱怨,這是IAP兩套賬號系統(tǒng)導致的第一個問題第二個問題就是,觀察流程可以發(fā)現(xiàn),對于用戶購買流程中給開發(fā)者發(fā)送的信號都來自于用戶本地程序,這個也就是早期IAP內購插件可以存在的原因了,好在現(xiàn)在蘋果給開發(fā)者提供了中間步驟的驗證,才使得內購插件不會影響到開發(fā)者服務器端數據檢測。總的來說,蘋果的IAP流程對于本地軟件增值功能來說是一個很好的服務,但是對于任何有雙重賬號問題的服務來說都是絕對的悲劇,而且由于蘋果對于iOS生態(tài)圈封閉的態(tài)度,對于這個大問題的修復也總只是點到為止,國外可能還比較無所謂,但是在中國這個對于『用戶』看重的環(huán)境中,產品經理和程序員都會面臨各種悲劇……IAP還有些亂七八糟的問題,比如說去年讓萬眾瘋狂的『免費IAP DNS』、取消訂單必須通過蘋果處理等等。當然還有一些中國環(huán)境下的,讓產品經理煩躁的問題(Android下我可以直接拿到用戶信用卡賬號密碼,iOS下我連用戶App Store ID都很難拿到,怎么賣數據)。發(fā)布于 2013-04-28 18:05?贊同 36??8 條評論?分享?收藏?喜歡收起?NewPanRust? 關注我寫了一套完整的 IAP 方案, 處理了 IAP 的九大坑,感興趣的朋友來看看吧: 第一篇:[[iOS]貝聊 IAP 實戰(zhàn)之滿地是坑](https://www.jianshu.com/p/07b5ec193353),這一篇是支付基礎知識的講解,主要會詳細介紹 IAP,同時也會對比支付寶和微信支付,從而引出 IAP 的坑和注意點。第二篇:[[iOS]貝聊 IAP 實戰(zhàn)之見坑填坑](https://www.jianshu.com/p/8e5bf711f9f0),這一篇是高潮性的一篇,主要針對第一篇文章中分析出的 IAP 的問題進行具體解決。第三篇:[[iOS]貝聊 IAP 實戰(zhàn)之訂單綁定](https://www.jianshu.com/p/847838cde48b),這一篇是關鍵性的一篇,主要講述作者探索將自己服務器生成的訂單號綁定到 IAP 上的過程。發(fā)布于 2018-01-14 21:36?贊同 9??添加評論?分享?收藏?喜歡
【Flutter】App集成谷歌內購(GooglePay)的全過程(全程詳細圖文加代碼) - 掘金
首頁 首頁
沸點
課程
直播
活動
競賽
商城
APP
插件 搜索歷史
清空
創(chuàng)作者中心
寫文章 發(fā)沸點 寫筆記 寫代碼 草稿箱 創(chuàng)作靈感
查看更多
會員
登錄
注冊
【Flutter】App集成谷歌內購(GooglePay)的全過程(全程詳細圖文加代碼)
Newki
2023-05-15
3,770
閱讀13分鐘
Flutter集成谷歌內購與使用的全過程
我正在參加「掘金·啟航計劃」
前言
注意:本文包含大量的圖片與代碼,注意流量使用。
在之前的文章中,我們了解到 Flutter 的頁面開發(fā),以及 Flutter 的架構搭建,完成對應的頁面與邏輯是沒什么問題了。
但是開發(fā)一個 App 又不是只有頁面的基本邏輯,如果涉及到一些第三方的對接就顯得比較麻煩,比如推送,支付,內購,IM 等等。
而如果第三方沒有提供到 Flutter 的插件,那么我們就需要通過 Channel 的方式自己去實現(xiàn) Android 與 iOS 的具體實現(xiàn)。
還好,F(xiàn)lutter 推出這么些年,基本上常用的一些插件都已經有支持,就算官方沒出,也有民間大神出了類似的插件。
而本文所說的就是相對比較復雜的第三方集成,應用商城內購,大部分是講谷歌內購,其實蘋果內購比谷歌內購要更容易一下,兼容一下同樣的代碼就能完成相關的流程。
以谷歌內購為例,我們需要做的總共為三步,每一步我會給出詳細的相關設置對應的圖片或代碼。
需要在谷歌市場配置商品,設置測試渠道,配置開發(fā)者賬號,設置對應權限。
配置完商品之后,如何在 Flutter 中獲取到商品,購買指定商品,消耗商品等。
購買成功之后,如何到服務器校驗是否支付成功,后臺服務器如何配置通行權限,谷歌市場與谷歌云的關聯(lián)以及相關校驗。
注意:由于谷歌市場版本老在變化,本文的谷歌市場以 2023-05-02 時間為準,如果后期谷歌市場與谷歌云的相關網頁布局 或 Tab 發(fā)生變化,大家可以參考使用。
好了,大致的步驟了解了之后,我們就開始一步步的走相關流程。
一、谷歌市場配置商品
按道理,我們只需要在谷歌市場中,找到指定的應用,然后在內購的 Tab 中直接添加商品即可。但是并沒有這么簡單,會提示報錯,沒有設置付款賬號。
1.1 定價模板
所以我們要切換到整個賬號的設置頁面,而不是指定應用的選項。
找到付款概況之后,如果沒有付款賬號,我們填寫一些信息,姓名,郵箱,賬號,等等信息,創(chuàng)建完成之后我們就可以設置定價的模板。
如果能創(chuàng)建模板說明你付款賬號沒問題,定價模板是非必須的,可有可無,但是定義了模板之后會更加方便,到時候創(chuàng)建商品可以直接關聯(lián)模板,賬號下的每一個子應用的內購商品都能關聯(lián)對應的模板,有一個統(tǒng)一的定價。
如何創(chuàng)建定價模板如下:
我們創(chuàng)建模板之后,就可以定義模板的價格與標題,選擇的金額會有對應的匯率轉換,比如我創(chuàng)建的新加坡幣,如果用港元支付的話,會根據匯率轉換為對應的港元支付。
創(chuàng)建完成之后,我們就能看到對應的定價模板如下圖所示:
1.2 應用上架
當我們的一些定價模板定義完成之后,我們就可以設置應用的內購了,點擊應用商品內購的 Tab ,結果是不能創(chuàng)建,因為你雖然創(chuàng)建了子應用,但是你沒有上傳APK包,并沒有應用所以沒有對應的應用內商品。
所以在此之前我們還需要做一些配置。我們需要創(chuàng)建一個內部測試渠道,然后配置對應的開發(fā)者或測試人員。
哎,對對對,我知道是很麻煩,很SB,但誰叫谷歌就是這么定的流程呢,沒有辦法,按流程走把。
首先需要創(chuàng)建一個測試軌道:比如我選擇的是內部測試:
發(fā)布一個 APK / AAB 文件到測試渠道,然后 選擇/創(chuàng)建 測試人員。
如果沒有的話,創(chuàng)建一個測試者,輸入對應的郵箱即可。
這樣就能添加測試人員了,同時你還可以在底部邀請鏈接去邀請測試者,激活測試規(guī)則等。
當一切都配置完成之后(會有一個進度條的,當完成一步會中劃線標記的),我們到發(fā)布中選擇審核以及發(fā)布,谷歌審核很快,一切正常2個小時內就能通過,然后我們打開谷歌應用市場搜索我們的應用就能找到內部測試的渠道應用:
點擊下載之后,我們安裝的就是我們之前創(chuàng)建的內部測試渠道應用啦。
1.3 創(chuàng)建應用內購商品
應用雖然是上線了,但是我們還沒創(chuàng)建內購商品呢,此時我們再點擊應用內購的 Tab 就能創(chuàng)建對應的商品了。
商品其實是分訂閱類型與內購商品,內購商品又分消耗型與非消耗型,由于我們的商品并不復雜,是輸入消耗型的,所以我的代碼都是以消耗性為例。
如何區(qū)別各種類型?舉個栗子:
訂閱類型:愛奇藝的VIP月卡。
非消耗性:消消樂免費玩前10關卡,付費解鎖后面的關卡內容。
消耗性:歡樂斗地主買100個歡樂豆。
我們其實就是最簡單的消耗性,花錢買虛擬幣,可重復購買的那種。
下面開始創(chuàng)建商品,這一點反倒是蠻簡單:
注意的是,創(chuàng)建應用id的時候,最好是包名加上商品id。避免沖突
com.xxgroup.whatsapp.coin10
隨后定義對應的標題與描述,以及商品對應的價格,可以使用價格模板,也可以直接寫。
創(chuàng)建完成之后別急,需要激活之后才能生效:
此時列表上就有了,這樣才是生效狀態(tài)。
此時就能買了嗎?可以了,但是測試賬號并沒有關聯(lián)信用卡,也不方便,我們設置一下測試賬號的測試購買授權:
下面的授權方式改為:LICENSED
好了到此,我們的谷歌市場配置就完成了。
二、集成支付插件兼容Android與iOS支付
接下來我們就在 Flutter 中使用插件集成應用內支付功能。
in_app_purchase: 3.1.5
文檔地址:【傳送門】
使用起來并不復雜,可以說是 Android 與 iOS 的邏輯是一樣樣的。
貼一下我的代碼:
首先是生命周期的回調,頁面創(chuàng)建完成初始化插件,并設置監(jiān)聽,當頁面關閉的時間銷毀資源:
late StreamSubscription> _subscription;
late InAppPurchase _inAppPurchase;
List
@override
void onReady() {
fetchCoinList();
// 初始化in_app_purchase插件
_inAppPurchase = InAppPurchase.instance;
//監(jiān)聽購買的事件
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();
}
加載全部的商品,這里真實開發(fā)環(huán)境是由后端接口返回的,我這里作為測試就寫死了:
/// 加載全部的商品
void loadProducts() async {
final bool available = await _inAppPurchase.isAvailable();
if (!available) {
SmartDialog.showToast("無法連接到商店");
return;
}
//開始購買
SmartDialog.showToast("連接成功-開始查詢全部商品");
const Set
'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
if (products.isNotEmpty) {
//賦值內購商品集合
_products = products;
}
SmartDialog.showToast("全部商品加載完成了,可以啟動購買了,總共商品數量為:${products.length}");
//先恢復可重復購買
await _inAppPurchase.restorePurchases();
}
查詢到商品之后就可以在 ListView 顯示商品的屬性,如過 UI 設計的列表樣式比較復雜,當我們谷歌內購設置的標題與詳情滿足不了設計的需求,可以由我們自己的后臺返回對應接口,當商品加載成功之后的商品 id 去匹配對應后臺的列表數據并展示出來。
當我們點擊對應的 Item 就可以拿到對應的商品ID,執(zhí)行購買的邏輯:
// 調用此函數以啟動購買過程
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);
}
我們的商品都是消耗類型的,所以這里我們就寫死了,如果你的商品有多種類型,你可以判斷類型是輸入哪一種類型,分別就行不同種類的購買方式。
當我們點擊購買之后,就可以走到購買監(jiān)聽中了,我們在里面監(jiān)聽當前購買的狀態(tài)。當確定購買完成之后我們就能進行商品的消耗。如果購買完成不消耗,那么三天之后會自動退款的。
/// 內購的購買更新監(jiān)聽
void _listenToPurchaseUpdated(List
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)) {
//校驗成功之后執(zhí)行消耗
await _inAppPurchase.completePurchase(googleDetail);
}
}
/// Apple支付成功的校驗
void loadAppleGetPayInfo(AppStorePurchaseDetails appstoreDetail) {
if (await coinRepositroy.checkApplyPaySuccess(appstoreDetail)) {
//校驗成功之后執(zhí)行消耗
await _inAppPurchase.completePurchase(appstoreDetail);
}
}
到這一步,我們已經和測試賬號管理了,所以我們直接運行 Debug 包一樣的可以測試支付,并且我們授權測試支付,所以不需要綁定銀行卡直接用測試支付卡就能完成支付流程。
截圖:
當我們支付成功之后就可以執(zhí)行消耗操作。
三、服務器校驗相關流程
我并沒有把代碼做區(qū)分,上面的代碼就已經包含了支付成功之后的后端校驗邏輯。
為什么要加后端校驗?客戶端支付成功了,服務端怎么知道,萬一用接口的方式通信,如果被抓包豈不是可以無限加金幣了。太不安全了,所以才有服務器校驗這一步。
iOS的校驗不用說,很簡單,拿到支付完成的票據直接發(fā)起請求即可,而 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關聯(lián)
首先需要配置 Google Cloud 并且配置相關的賬號,對應指定的應用。
點擊項目的 API Access 中
如果這一步你沒有 Google Cloud 賬號,可以創(chuàng)建或關聯(lián)已有的 Google Cloud 賬號,這里我沒有就直接創(chuàng)建了Google Cloud 賬號。關聯(lián)之后我們就能看到上圖所示的畫面。
我們可以直接在谷歌市場控制臺中的 API Access 中直接進入谷歌云后臺,也能 直接輸入網址 code.google.com/apis/consol… 是一樣的效果。
網上很多教程教你去開通 Google Play Developer API 權限,其實現(xiàn)在是沒必要了,因為我們關聯(lián) Google Cloud 賬號之后,默認就已經開通了。
所以我們不需要再次去授權了。
如果覺得不保險,也能在里面搜索 Billing ,然后啟動相關的支付服務權限,反正我是開了,但我覺得沒必要開這些,如果不行的你開啟這些服務也無所謂。
3.2 創(chuàng)建 web-OAuth 授權
網上很多教程比較老,可能要你手動的創(chuàng)建web授權,其實當我們在谷歌市場的后臺關聯(lián)谷歌云的時候,就已經幫我們初始化了很多配置,已經都有了。
我們再谷歌云后臺,在APIs & auth 項中找到 Credentials,直接查看即可:
我們點擊 Web 授權進去配置相關配置。
主要是配置左側的上下兩個 URI 地址,上面的配置后臺域名:
下面的是固定寫法,callback的地址一定是可用域名 + /oauth2callback。
創(chuàng)建完成之后,記得記錄你的三個重要字段,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',
}
向以下的網址發(fā)起 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 保存起來,后續(xù)以刷新的方式來獲取新的 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
}
只需要驗證狀態(tài)即可:
consumptionState == 0
purchaseState == 0
說明這個商品已經購買了,并且也沒有被消耗,那么此時就可以給移動端返回true,讓移動端執(zhí)行消耗操作。
后端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接口,獲得訂單狀態(tài)
$packageName=""http://包名
$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支付中客戶端如果沒有進行消耗是不能再次購買該商品
//處理游戲邏輯 發(fā)鉆石,通知客戶端進行消耗
}else{
//訂單驗證失敗
}
}else{
//簽名驗證失敗
}
}
第一步是可選的,校驗APK的簽名,當前應用是不是谷歌市場下載的,如果不是從谷歌市場下載的那么支付不生效。如果你想要的校驗APK來源就加上,不想校驗也可以。
第二步就是開始校驗谷歌內購支付訂單的狀態(tài),拿到本地長期保存的refresh_token 以及之前獲取到的client_id 和 client_secret 就可以到哪授權的 access_token 。
第三部就是拿到 access_token 以及 客戶端傳遞的包名,產品id,支付憑證,調用校驗接口,拿到訂單的當前狀態(tài)。
然后就是根據訂單的狀態(tài)判斷返回給客戶端是否有效,讓客戶端執(zhí)行消耗操作。
如果您覺得有必要,也可以消耗之后再次調用接口校驗,是否已購買,是否已消耗。
3.3 創(chuàng)建Service Account的授權
其實之前的之前的 Web-OAuth 的方式來進行驗證不是不行,但是步驟相對比較復雜,而更推薦的方式則是創(chuàng)建服務的方式來進行校驗。
我們把視角拉回谷歌市場控制臺,找到 Api Access 選項 (老熟人了)
其實我們在下面的訪問權限就可以看到 Service Account 的選項。如果你已有 Service Account 就可以看到全部的關聯(lián)的 Service Account 。如果你沒有此服務,那么就可以點擊創(chuàng)建服務去谷歌云創(chuàng)建。當我們到谷歌云里面點擊創(chuàng)建 Service Account:
我們點擊創(chuàng)建 Service Account 會走到創(chuàng)建服務的流程:
第一步隨便寫,關鍵是第二步:
選擇角色為 Service Account Admin
第三步不填,直接提交:
你就能看到你創(chuàng)建的服務啦,接下來就是創(chuàng)建Key,Json的方式創(chuàng)建,然后下載到Json給到后臺人員。
再下一步就回到谷歌商店控制臺的 Api Access 看 Service Account 是否已經關聯(lián)上了:
如果有這樣的信息,說明關聯(lián)上了,才是正確的流程,如果你創(chuàng)建了 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."
}
之后正常顯示了服務,說明你的服務才能訪問到谷歌市場這一邊,接下來就是點擊授予訪問權限。
重點是要把財務信息的兩項勾選上,這樣才能訪問到應用內支付校驗的相關權限,如圖所示:
點擊保存修改之后就完成了,由于我們關聯(lián)賬號的時候已經勾選了 Google Play Android Developer API 權限,我們現(xiàn)在直接就能用了。
后端的用法各平臺的使用方式不同,但是都是很簡單的,直接集成谷歌的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 ,只是封裝之后使用起來也很簡單。感覺比原生都好用
主要是內購的配置,谷歌的配置,應用配置,商品的配置,谷歌云配置,各種授權配置。只要其中一步卡住了就不能行,感覺真的是很復雜,網上的一些參考資源很多都是過時的,所以才有了我一步步的踩坑的分享,如果有需要大家可以收藏一波,收藏等于學會,萬一哪天踩坑了可以參考參考嘛。
關于內購,不知道大家有沒有遇到內購的一些坑呢,又是如何解決的呢?歡迎大家一起交流一下哦。
那么本期內容就到這里,如講的不到位或錯漏的地方,希望同學們可以評論區(qū)指出。
如果感覺本文對你有一點點點的啟發(fā),還望你能點贊支持一下,你的支持是我最大的動力啦。
Ok,這一期就此完結。
Newki
Android/Flutter開發(fā) @武漢
163
文章
419k
閱讀
1.2k
粉絲 目錄 收起
Flutter集成谷歌內購與使用的全過程
前言
一、谷歌市場配置商品
二、集成支付插件兼容Android與iOS支付
三、服務器校驗相關流程
3.1 Google Cloud關聯(lián)
3.2 創(chuàng)建 web-OAuth 授權
3.3 OAuth校驗支付是否成功
3.3 創(chuàng)建Service Account的授權
后記
相關推薦 Flutter筆記:Flutter的WidgetsBinding.instance的window屬性 1.4k閱讀 ?·? 5點贊使用Flutter約束傳遞優(yōu)化你的UI設計 1.1k閱讀 ?·? 12點贊Flutter 繪制實踐 | 路徑篇 · 數字顯示管 2.6k閱讀 ?·? 62點贊Flutter 構建設計系統(tǒng) 1.3k閱讀 ?·? 11點贊添加Flutter到iOS工程最新教程 6.5k閱讀 ?·? 19點贊 友情鏈接:
smartjs
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,在多個應用商店中為游戲設置應用內購從未如此簡單。該包提供: a–a 一種免費訪問所有商店的通用 API,以便您充分了解和優(yōu)化自己的游戲內經濟 a–a 與 Unity Analytics 自動耦合,可根據多個平臺的收入和購買數據趨勢進行監(jiān)控和決策 a–a 支持 iOS、Mac、tvOS、Google Play、Windows 和 Amazon 應用商店(*). a–a 支持與 Unity Distribution Portal 一起使用,以與其他應用商店同步目錄和交易 a–a 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:
文檔位置:
狀態(tài)
可用版本:
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 優(yōu)美締軟件(上海)有限公司 版權所有 "Unity"、Unity 徽標及其他 Unity 商標是 Unity Technologies 或其附屬機構在美國及其他地區(qū)的商標或注冊商標。其他名稱或品牌是其各自所有者的商標。 公安部備案號:31010902002961 法律條款 隱私政策 Cookies 滬ICP備13002771號-8
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
語言包
服務商店
沒找到想要的插件?
提交需求
已發(fā)布需求
插件開發(fā)指南
發(fā)布插件
我的插件
App原生語言插件
App原生語言插件
iOS 內購插件
iOS 內購插件
StoreKit
內購
IAP
原生代碼實現(xiàn)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.發(fā)起支付請求
var iap = uni.requireNativePlugin("XTLIAPKit")
//發(fā)起支付
iap.pay({
'pids': ['內購商品id'],
'isAutoFinishTransaction': false//是否自動結算憑據
},(ret) => {
})
3.完成支付請求,僅在isAutoFinishTransaction=false時需要
//完成支付并結算憑證
iap.finishTransaction({})
平臺兼容性
Android
iOS
×
適用版本區(qū)間:9 - 17
原生插件通用使用流程:
購買插件,選擇該插件綁定的項目。
在HBuilderX里找到項目,在manifest的app原生插件配置中勾選模塊,如需要填寫參數則參考插件作者的文檔添加。
根據插件作者的提供的文檔開發(fā)代碼,在代碼中引用插件,調用插件功能。
打包自定義基座,選擇插件,得到自定義基座,然后運行時選擇自定義基座,進行l(wèi)og輸出測試。
開發(fā)完畢后正式云打包
付費原生插件目前不支持離線打包。
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.發(fā)起支付請求
var iap = uni.requireNativePlugin("XTLIAPKit")
//發(fā)起支付
iap.pay({
'pids': ['內購商品id'],
'isAutoFinishTransaction': false//是否自動結算憑據
},(ret) => {
})
3.完成支付請求,僅在isAutoFinishTransaction=false時需要
//完成支付并結算憑證
iap.finishTransaction({})
隱私、權限聲明
1. 本插件需要申請的系統(tǒng)權限列表:
暫無
2. 本插件采集的數據、發(fā)送的服務器地址、以及數據用途說明:
暫無
3. 本插件是否包含廣告,如包含需詳細說明廣告表達方式、展示頻率:
暫無
許可協(xié)議
作者未提供license.md
評論列表
撰寫評論
暫無用戶評論。
加載更多...
沒有更多評論了。
插件問答
我要提問
使用中有什么不明白的地方,就向插件作者提問吧~
我要提問
加載更多...
沒有更多了。
推廣
他的插件
iOS 內購插件
StoreKit
內購
IAP
(0)
原生代碼實現(xiàn)iOS內購,只有兩個方法簡單操作
?下載?10
?贊賞?0
原生SDK插件作者排行
李子
發(fā)布插件:49
下載?7987?
?銷量?1154?
FullStack
發(fā)布插件:116
下載?14206?
?銷量?1343?
Fvv123
發(fā)布插件:8
下載?18292?
?銷量?17?
fsyang
發(fā)布插件:22
下載?12660?
?銷量?1878?
博文浩蕩
發(fā)布插件:40
下載?16906?
?銷量?1859?
碼農朱哲
發(fā)布插件:46
下載?31409?
?銷量?1199?
軟云
發(fā)布插件:46
下載?9899?
?銷量?646?
極光
發(fā)布插件:6
下載?27875?
?銷量?23?
happyboy183
發(fā)布插件:4
下載?4447?
?銷量?785?
三杯五岳
發(fā)布插件:60
下載?18677?
?銷量?2605?
hke***@qq.com
發(fā)布插件:13
下載?5721?
?銷量?1235?
imn***@gmail.com
發(fā)布插件:3
下載?2963?
?銷量?2?
129***@qq.com
發(fā)布插件:1
下載?2367?
?銷量?2?
mPaaS
發(fā)布插件:1
下載?13256?
?銷量?8?
935***@qq.com
發(fā)布插件: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
不確定
不支持
支持
小程序
微信
不確定
不支持
支持
阿里
不確定
不支持
支持
百度
不確定
不支持
支持
字節(jié)跳動
不確定
不支持
支持
不確定
不支持
支持
釘釘
不確定
不支持
支持
快手
不確定
不支持
支持
飛書
不確定
不支持
支持
京東
不確定
不支持
支持
快應用
華為
不確定
不支持
支持
聯(lián)盟
不確定
不支持
支持
部署進度
×
Modal title
One fine body…
Close
Save changes
DCloud 即數字天堂(北京)網絡技術有限公司是W3C成員及HTML5中國產業(yè)聯(lián)盟發(fā)起單位
商務合作:bd@dcloud.io、廣告投放?|?
向官方投訴
京ICP備12046007號-4 | 京公網安備:11010802035340號
增值電信業(yè)務經營許可證編號:合字B2-20220010 | 國家信息安全等級保護三級,證書編號:11010813802-20001
學如逆水行舟,不進則退。
今天和大家來聊聊iOS內購即In-App Purchase,內購分為消耗型、非消耗型、自動訂閱、非自動訂閱型。
內購流程
配置App內購買項目(可以參考蘋果官方文檔)
在iTC后臺接收付費協(xié)議
創(chuàng)建App內購買項目
創(chuàng)建沙盒賬號,用于測試
代碼實現(xiàn)
從蘋果請求商品詳情
- (void)requestIAPProducts:(NSSet
{
SKProductsRequest *productReq = [[SKProductsRequest alloc] initWithProductIdentifiers:productIds];
productReq.delegate = self;// SKProductsRequestDelegate
[productReq start];
}
實現(xiàn)SKProductsRequestDelegate代理,如果獲取到商品的話就執(zhí)行購買行為
#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
{
}
監(jiān)聽商品支付結果:SKPaymentTransactionObserver
#pragma mark SKPaymentTransactionObserver
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray
{
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
發(fā)布上線
代碼實現(xiàn)開發(fā)完成后,可以跟著版本一起發(fā)布,也可以單獨審核內購,看具體需求
內購常見錯誤
獲取不到商品信息:檢查itc商品審核以及下線情況,檢查設備知否支持內購
無法連接: 網絡問題,切記沙盒環(huán)境下不可開vpn或者網絡代理
21000 App Store無法讀取你提供的JSON數據
21002 收據數據不符合格式
21003 收據無法被驗證
21004 你提供的共享密鑰和賬戶的共享密鑰不一致
21005 收據服務器當前不可用
21006 收據是有效的,但訂閱服務已經過期。當收到這個信息時,解碼后的收據信息也包含在返回內容中
21007 收據信息是測試用(sandbox),但卻被發(fā)送到產品環(huán)境中驗證
21008 收據信息是產品環(huán)境中使用,但卻被發(fā)送到測試環(huán)境中驗證
如果覺得我寫的還不錯的話,記得給個關注哦。有任何疑問?可以留言咨詢哦,看到會回復
參考資料:
App內購買項目類型
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者 人面猴序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...沈念sama閱讀 145,261評論 1贊 308死咒序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...沈念sama閱讀 62,177評論 1贊 259救了他兩次的神仙讓他今天三更去死文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...開封第一講書人閱讀 96,329評論 0贊 214道士緝兇錄:失蹤的賣姜人 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...開封第一講書人閱讀 41,490評論 0贊 184?港島之戀(遺憾婚禮)正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...茶點故事閱讀 49,353評論 1贊 262惡毒庶女頂嫁案:這布局不是一般人想出來的文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...開封第一講書人閱讀 39,028評論 1贊 179城市分裂傳說那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...沈念sama閱讀 30,611評論 2贊 276雙鴛鴦連環(huán)套:你想象不到人心有多黑文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...開封第一講書人閱讀 29,383評論 0贊 171萬榮殺人案實錄序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...沈念sama閱讀 32,749評論 0贊 215?護林員之死正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...茶點故事閱讀 29,460評論 2贊 219?白月光啟示錄正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...茶點故事閱讀 30,814評論 1贊 232活死人序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...沈念sama閱讀 27,255評論 2贊 215?日本核電站爆炸內幕正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...茶點故事閱讀 31,752評論 3贊 214男人毒藥:我在死后第九天來索命文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...開封第一講書人閱讀 25,685評論 0贊 9一樁弒父案,背后竟有這般陰謀文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...開封第一講書人閱讀 26,114評論 0贊 170情欲美人皮我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...沈念sama閱讀 33,747評論 2贊 234代替公主和親正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...茶點故事閱讀 33,901評論 2贊 238推薦閱讀更多精彩內容iOS 內購最新講解一.總說內購的內容 協(xié)議、稅務和銀行業(yè)務 信息填寫 內購商品的添加 添加沙盒測試賬號 內購代碼的具體實現(xiàn) 內購的注...九洲仙人閱讀 2,837評論 2贊 3iOS 內購最新講解一.總說內購的內容 協(xié)議、稅務和銀行業(yè)務 信息填寫 內購商品的添加 添加沙盒測試賬號 內購代碼的具體實現(xiàn) 內購的注...默默_David閱讀 3,351評論 0贊 6Flutter iOS 蘋果IAP(內購)實現(xiàn)步驟及問題總結(全網最全)IAP內購支付流程 Client向Server發(fā)送請求,獲得一份產品列表。 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越獄內購破解插件可以解決什么類型的軟件? - 知乎首頁知乎知學堂發(fā)現(xiàn)等你來答?切換模式登錄/注冊iOSiPhone 應用iphone越獄內購破解插件可以解決什么類型的軟件?關注者3被瀏覽7,500關注問題?寫回答?邀請回答?好問題?添加評論?分享?1 個回答默認排序知乎用戶破解插件有很多種,IAP FREE,IAP CRACKER是常見的內購破解類插件。內購破解對大多數軟件可以成功,這在網上有各種清單就不多贅述,而許多游戲大作諸如gameloft或者EA的是很難破解的。發(fā)布于 2014-01-23 20:18?贊同??1 條評論?分享?收藏?喜歡收起??
LocaliAPHeper 內購神器 | 最簡潔的中文源
Cydiakk源
關于我們
官方Q群
官方主頁
官方博客
展開
首頁
博客
登錄
Cydiakk中文源?
首頁
資源列表
技術文章
關于我們
資源列表/[工具 ]
您未登錄賬號
LocaliAPHeper 內購神器
軟件版本:2.0
支持設備:
iPhone
iPad
文件大?。?9.39 KB
支持版本:iOS 6.0 ~ iOS 15.6
?
提供作者:ant
下載數量:28609次??????????總下載量:28613次
收藏數量:106次
?
Cydiakk中文源?
https://apt.cydiakk.com/
5050
資源
494343
粉絲
1654477
人氣
去看看
軟件內容
掃描二維碼下載
請確保到
添加Cydiakk中文源?
刷新列表 以后再掃描二維碼下載
軟件描述:LocaliAPHeper 內購神器破解小助手破解部分軟件的收費,彈窗付款點擊取消即可
軟件簡介:
發(fā)布支持 iOS13
兼容支持 iOS6~12
簡體中文漢化版
具體內容?預覽截圖
更新說明:
屏幕截圖
搜索
最新上傳更多
Sushi音樂模幅
83下載 / 1.0版本
2024-03-07 00:23:44發(fā)布
No2Theft iOS 16設備防盜系統(tǒng)
50下載 / 1.1.1版本
2024-03-07 00:23:42發(fā)布
Latchkey鎖頭自定義
72下載 / 2.3.2版本
2024-03-07 00:23:20發(fā)布
BioProtect XS 面容/指紋加密【破解版】
34下載 / 4.6-229版本
2024-03-07 00:23:14發(fā)布
最新下載更多
Diatrus Installer為unc0ver安裝Sileo
2970下載 / 0.0001版本
2024-03-08 02:21:37發(fā)布
CCLess++控制中心模塊
3481下載 / 1.8.2版本
2024-03-08 02:21:29發(fā)布
阿凡達屏蔽助手
32524下載 / 1.0.0.4-4版本
2024-03-08 02:20:59發(fā)布
GoodWiFi無線WiFi增強
1765下載 / 1.2版本
2024-03-08 02:20:46發(fā)布
廣告終結者
3727下載 / 2.3.1版本
2024-03-08 02:20:43發(fā)布
源主推薦
MCPatch屏蔽OTA更新
允許安裝iOS12屏蔽OTA更新描述文件
新騰翔嘉麗圓縮小版
好看的騰翔嘉麗圓縮小版字體
Bubble 主題
精致的Bubble主題,圖標涵蓋464個
Unc&雷神&Ele 最新防凍屏插件
完美解決11系統(tǒng)全系列越獄工具神經性卡死、假死、凍結
STMoon 超好看的單色主題[VIP5專享]
超好看的單色輪廓主題
MaxiX 主題 [VIP5專享]
好看的多彩主題
BlackOrs 2 主題 [VIP5專享]
超精美的主題 兼容7.0-11.4系統(tǒng)
Amara XI 主題 [VIP5專享]
超精美的主題 兼容7.0-11.4系統(tǒng)
旗下網站
博客
|
Cydiakk中文源
|
版權與免責聲明
粵ICP備18011282號-4
Copyright 版權所有 ? 2017-2024 CydiaKK.Com ?. All rights reserved. Cydiakk中文源?版權或產權保護
返回頂部