Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Apple In App Purchase
Search
Sing Jie Lee
May 22, 2015
Technology
24
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Apple In App Purchase
Sing Jie Lee
May 22, 2015
More Decks by Sing Jie Lee
See All by Sing Jie Lee
Infocomm Media Youth Festival 2016 - Career Talk
singjie
0
61
Sprite Kit
singjie
0
64
SiriKit
singjie
0
210
React Native
singjie
1
92
Arduino
singjie
0
45
Software Engineering
singjie
0
61
Advanced Core Data
singjie
0
44
Amazon Echo and Home Integration
singjie
0
110
CS3216 Garena Project X
singjie
0
56
Other Decks in Technology
See All in Technology
LanceDB入門
mocobeta
7
470
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
710
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
13
8.7k
つくって納得、つかって実感! 大規模言語モデルことはじめ ver2.0
recruitengineers
PRO
4
1.6k
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
380
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.2k
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
830
モバイルアプリ開発概論2026
recruitengineers
PRO
5
580
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.7k
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
6
1.5k
QAエンジニア起点で進める、SmartHRにおける信頼性向上について
kaomi_wombat
1
140
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
320
Featured
See All Featured
Done Done
chrislema
186
16k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
73
41k
Skip the Path - Find Your Career Trail
mkilby
1
180
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
480
It's Worth the Effort
3n
188
29k
KATA
mclloyd
PRO
35
15k
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
Accessibility Awareness
sabderemane
1
170
Code Reviewing Like a Champion
maltzj
528
40k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
420
Transcript
In App Purchase iOS
Why?
Background Story
None
5 types of IAP • Consumable • Non Consumable •
Auto Renewable Subscription • Non-Renewing Subscription • Free Subscription
Products • Products are identified by ProductID • e.g. com.garena.fishfood.100
productID - Product Name (Localized) - Product Price (Tier) - Product Description
Pricing Tier
Pricing Tier
Live/Sandbox App Store Live Sandbox BeeFlight IAP Apple Review Real
AppleID, Real $$ Test AppleID, No $$
Request for SKProduct Add SKProduct to Payment Queue Finish Transaction
ProductID (NSString) 1 2 3 4
Request for SKProduct ProductID (NSString) 1 2 typedef void(^PaymentBlock)(BOOL success);
- (void)buyProductID:(NSString *)productID onCompletion:(PaymentBlock)onCompletion; { NSSet *identifiers = [NSSet setWithObject:productID]; SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:identifiers]; request.delegate = self; [request start]; self.paymentBlock = onCompletion; }
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { SKProduct *product =
[response.products firstObject]; SKPayment *payment = [SKPayment paymentWithProduct:product]; [[SKPaymentQueue defaultQueue] addPayment:payment]; } Add SKProduct to Payment Queue 3
- (void)paymentCompleted:(SKPaymentTransaction *)transaction { [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; } Finish Transaction
4
IAP Crackable
IAP Crackable
Request for SKProduct Add SKProduct to Payment Queue Verify Transaction
Finish Transaction ProductID (NSString) 1 2 3 4 5
Receive Receipt Our Server Apple Server Verification
Receive Receipt Our Server Apple Server Encrypted receipt Verification
Receive Receipt Our Server Apple Server Encrypted receipt Encrypted receipt
Verification
Receive Receipt Our Server Apple Server Encrypted receipt Encrypted receipt
Decrypted receipt Verification
iOS Client, receive receipt Our Server Apple Server Encrypted receipt
Encrypted receipt Decrypted receipt OK/Not OK Verification
Verification { "receipt": { "original_purchase_date_pst": "2015-05-20 03:26:29 America/Los_Angeles" "unique_identifier": "c1b17ca2d3ceb9b77797fc2c4826ba4aece18370",
"original_transaction_id": "340000068545339", "bvrs": "1.1", "app_item_id": "530942747", "transaction_id": "340000068545339", "quantity": "1", "unique_vendor_identifier": "D39AC063-4817-4DCE-B061-EB5EEE073A5B", "product_id": "com.singjie.btt.full.package", "item_id": "532592602", "version_external_identifier": "11626777", "bid": "com.singjie.BTT", "purchase_date_ms": "1432117589538", "purchase_date": "2015-05-20 10:26:29 Etc/GMT", "purchase_date_pst": "2015-05-20 03:26:29 America/Los_Angeles", "original_purchase_date": "2015-05-20 10:26:29 Etc/GMT", "original_purchase_date_ms": "1432117589538" }, "status": 0 }
Verification { "receipt": { "original_purchase_date_pst": "2012-07-12 05:54:35 America/Los_Angeles" "purchase_date_ms": "1342097675882",
"original_transaction_id": "170000029449420", "original_purchase_date_ms": "1342097675882", "app_item_id": "450542233", "transaction_id": "170000029449420", "quantity": "1", "bvrs": "1.4", "version_external_identifier": "9051236", "bid": "com.zeptolab.ctrexperiments", "product_id": "com.zeptolab.ctrbonus.superpower1", "purchase_date": "2012-07-12 12:54:35 Etc/GMT", "purchase_date_pst": "2012-07-12 05:54:35 America/Los_Angeles", "original_purchase_date": "2012-07-12 12:54:35 Etc/GMT", "item_id": "534185042" }, "status": 0 }
Verification { "receipt": { "original_purchase_date_pst": "2015-05-20 03:26:29 America/Los_Angeles" "unique_identifier": "c1b17ca2d3ceb9b77797fc2c4826ba4aece18370",
"original_transaction_id": "340000068545339", "bvrs": "1.1", "app_item_id": "530942747", "transaction_id": "340000068545339", "quantity": "1", "unique_vendor_identifier": "D39AC063-4817-4DCE-B061-EB5EEE073A5B", "product_id": "com.singjie.btt.full.package", "item_id": "532592602", "version_external_identifier": "11626777", "bid": "com.singjie.BTT", "purchase_date_ms": "1432117589538", "purchase_date": "2015-05-20 10:26:29 Etc/GMT", "purchase_date_pst": "2015-05-20 03:26:29 America/Los_Angeles", "original_purchase_date": "2015-05-20 10:26:29 Etc/GMT", "original_purchase_date_ms": "1432117589538" }, "status": 0 }
Demo
iTunesConnect • Create Products • Create Test Account
Q&A