Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Apple In App Purchase
Search
Sing Jie Lee
May 22, 2015
Technology
26
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
62
Sprite Kit
singjie
0
66
SiriKit
singjie
0
210
React Native
singjie
1
97
Arduino
singjie
0
48
Software Engineering
singjie
0
63
Advanced Core Data
singjie
0
47
Amazon Echo and Home Integration
singjie
0
120
CS3216 Garena Project X
singjie
0
59
Other Decks in Technology
See All in Technology
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
2
490
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
410
『GOエコノミー 』(相乗りサービス) におけるスペック駆動開発
mot_techtalk
1
170
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
260
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
170
IR Today: Theory, Practice, and Agents
dtunkelang
0
320
個別開発で終わらせない。 現場の課題をプロダクトの強さに変える StockmarkのFDE
ktkrhr
0
530
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
110
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
190
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
700
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
2k
サーバーフルコンピューティング?AWS Lambda
iwatatomoya
0
120
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
BBQ
matthewcrist
89
10k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Six Lessons from altMBA
skipperchong
29
4.5k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
300
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