iOS開(kāi)發(fā):2017蘋果內(nèi)購(gòu)最新教程

公司項(xiàng)目中有虛擬產(chǎn)品,所以要使用蘋果內(nèi)購(gòu).自此記錄一下蘋果內(nèi)購(gòu)的流程.前提是已有開(kāi)發(fā)者賬號(hào)

協(xié)議,稅務(wù)和銀行業(yè)務(wù)

協(xié)議,稅務(wù)和銀行業(yè)務(wù)

協(xié)議,稅務(wù)和銀行業(yè)務(wù)

申請(qǐng)合同

這里提示地址太長(zhǎng),按照要求重新填寫一下就可以

添加聯(lián)系人

同意協(xié)議并提交

設(shè)置相關(guān)信息

聯(lián)系人信息

添加相關(guān)聯(lián)系人信息之后,注意在role(角色)中,為聯(lián)系人選擇身份(高級(jí)管理人員 ,金融,技術(shù),法律,營(yíng)銷),點(diǎn)擊Done保存

聯(lián)系人

銀行信息

添加銀行信息

添加銀行

2.選擇國(guó)家

選擇國(guó)家

3.填寫CNAPS

CNAPS 銀行網(wǎng)點(diǎn)聯(lián)行號(hào).我們可以直接到銀行客服電話查詢 CNAPS, 快速便捷.還可以通過(guò)下圖的Look up CNAPS Code 查詢. 不過(guò)有的查詢不到

CNAPS

Look up CNAPS Code

4.確認(rèn)銀行信息

銀行信息

5.填寫公司銀行賬號(hào)信息

公司銀行信息

稅務(wù)信息

稅務(wù)信息有三個(gè)選項(xiàng):美國(guó)稅務(wù)、澳大利亞稅務(wù)笛坦、加拿大稅務(wù)塞茅。我們?cè)谶@里選擇美國(guó)稅務(wù)就可以

稅務(wù)信息

這里有兩個(gè)問(wèn)題:如下圖.我選擇的都是NO

填寫稅務(wù)相關(guān)信息

9b.Foreign TIN 是填寫公司稅務(wù)識(shí)別碼.公司營(yíng)業(yè)執(zhí)照上同意社會(huì)信用代碼去掉前兩位和最后一位就是公司稅務(wù)識(shí)別碼(15位)

點(diǎn)擊提交之后會(huì)讓你確認(rèn)信息,確認(rèn)無(wú)誤后再次點(diǎn)擊提交(提交后無(wú)法修改)

創(chuàng)建測(cè)試APP

新建APP在這里就不詳細(xì)描述了

添加內(nèi)購(gòu)

選擇功能党晋,我們添加一個(gè)app內(nèi)購(gòu)項(xiàng)目

添加內(nèi)購(gòu)

根據(jù)項(xiàng)目需求,選擇內(nèi)購(gòu)項(xiàng)目

消耗性項(xiàng)目

填寫內(nèi)購(gòu)項(xiàng)目的相關(guān)信息

商品名稱根據(jù)你的消費(fèi)道具的實(shí)際意義來(lái)說(shuō)明

產(chǎn)品ID是比較重要的,只要唯一即可踢星,在實(shí)際應(yīng)用中蒸绩,一定要認(rèn)真填寫喷市。

選擇價(jià)格

本地化版本

將在 App Store 上可見(jiàn)的 App 內(nèi)購(gòu)買項(xiàng)目名稱剔氏÷饩。可以參考App Store中其他應(yīng)用的內(nèi)購(gòu)項(xiàng)目描述

描述不得少于10個(gè)字符.沒(méi)有重新截圖

本地化

審核信息

1.只會(huì)在審核中使用屏幕快照遣妥,不會(huì)將其顯示在 App Store 上。屏幕快照必須具有適合您 App 平臺(tái)的有效尺寸攀细。

2.能夠有助于我們進(jìn)行審核的關(guān)于您的 App 內(nèi)購(gòu)買項(xiàng)目的其他信息箫踩,如測(cè)試帳戶(包括用戶名、密碼等)谭贪。審核備注不得超過(guò) 4000 個(gè)字符境钟。

審核信息

內(nèi)購(gòu)項(xiàng)目則添加完成

申請(qǐng)沙盒測(cè)試賬號(hào)(用來(lái)測(cè)試購(gòu)買項(xiàng)目)

我們不必用真實(shí)的人民幣測(cè)試購(gòu)買內(nèi)購(gòu)項(xiàng)目

首先我們回到iTunes Connect中,在這里我們選擇用戶和職能。

添加沙箱技術(shù)測(cè)試員

測(cè)試人員

添加測(cè)試員詳細(xì)信息

所有信息都可以隨意填寫俭识,不用管是否真實(shí)慨削。但是App Store地區(qū)必須對(duì)應(yīng)

注意: 郵件地址不能填寫與 Apple ID 關(guān)聯(lián)的, 密碼保護(hù)問(wèn)題必須在 6 到 35 個(gè)字符之間。密碼必須包含至少一個(gè)大寫字母套媚。

信息

所有準(zhǔn)備工作都已完成.打開(kāi)項(xiàng)目開(kāi)始擼代碼

在項(xiàng)目中實(shí)現(xiàn)購(gòu)買

首先在項(xiàng)目工程中加入storekit.framework缚态,加入頭文件#import

遵守代理SKPaymentTransactionObserver,SKProductsRequestDelegate

//添加一個(gè)交易隊(duì)列觀察者[[SKPaymentQueuedefaultQueue]addTransactionObserver:self];//self.productIds是在開(kāi)發(fā)者平臺(tái)填寫的產(chǎn)品idself.productId=@"701";if([SKPaymentQueuecanMakePayments]){[selfrequestProductData:self.productId];}else{DLog(@"不允許程序內(nèi)付費(fèi)");}

去蘋果服務(wù)器請(qǐng)求產(chǎn)品信息

// 去蘋果服務(wù)器請(qǐng)求產(chǎn)品信息-(void)requestProductData:(NSString*)productId{[SVProgressHUDshow];NSArray*productArr=[[NSArrayalloc]initWithObjects:productId,nil];NSSet*productSet=[NSSetsetWithArray:productArr];SKProductsRequest*request=[[SKProductsRequestalloc]initWithProductIdentifiers:productSet];request.delegate=self;[request start];}

SKProductsRequestDelegate

// 收到產(chǎn)品返回信息-(void)productsRequest:(SKProductsRequest*)request didReceiveResponse:(SKProductsResponse*)response{NSArray*productArr=response.products;if([productArr count]==0){[SVProgressHUDdismiss];DLog(@"沒(méi)有該商品");return;}DLog(@"productId = %@",response.invalidProductIdentifiers);DLog(@"產(chǎn)品付費(fèi)數(shù)量 = %zd",productArr.count);SKProduct*p=nil;for(SKProduct*proinproductArr){DLog(@"description:%@",[pro description]);DLog(@"localizedTitle:%@",[pro localizedTitle]);DLog(@"localizedDescription:%@",[pro localizedDescription]);DLog(@"price:%@",[pro price]);DLog(@"productIdentifier:%@",[pro productIdentifier]);if([pro.productIdentifier isEqualToString:self.productId]){p=pro;}}SKPayment*payment=[SKPaymentpaymentWithProduct:p];//發(fā)送內(nèi)購(gòu)請(qǐng)求[[SKPaymentQueuedefaultQueue]addPayment:payment];}

SKRequestDelegate

-(void)requestDidFinish:(SKRequest*)request{[SVProgressHUDdismiss];}-(void)request:(SKRequest*)requestdidFailWithError:(NSError*)error{[SVProgressHUDshowErrorWithStatus:@"支付失敗"];}

SKPaymentTransactionObserver監(jiān)聽(tīng)購(gòu)買結(jié)果

// 監(jiān)聽(tīng)購(gòu)買結(jié)果-(void)paymentQueue:(SKPaymentQueue*)queue updatedTransactions:(NSArray*)transactions{for(SKPaymentTransaction*tranintransactions){switch(tran.transactionState){caseSKPaymentTransactionStatePurchased://交易完成// 發(fā)送到蘋果服務(wù)器驗(yàn)證憑證[selfverifyPurchaseWithPaymentTrasaction];[[SKPaymentQueuedefaultQueue]finishTransaction:tran];break;caseSKPaymentTransactionStatePurchasing://商品添加進(jìn)列表break;caseSKPaymentTransactionStateRestored://購(gòu)買過(guò)// 發(fā)送到蘋果服務(wù)器驗(yàn)證憑證[[SKPaymentQueuedefaultQueue]finishTransaction:tran];break;caseSKPaymentTransactionStateFailed://交易失敗[[SKPaymentQueuedefaultQueue]finishTransaction:tran];[SVProgressHUDshowErrorWithStatus:@"購(gòu)買失敗"];break;default:break;}}}

發(fā)送到蘋果服務(wù)器驗(yàn)證憑證

//沙盒測(cè)試環(huán)境驗(yàn)證#defineSANDBOX@"https://sandbox.itunes.apple.com/verifyReceipt"http://正式環(huán)境驗(yàn)證#defineAppStore@"https://buy.itunes.apple.com/verifyReceipt"http:// 驗(yàn)證購(gòu)買-(void)verifyPurchaseWithPaymentTrasaction{// 驗(yàn)證憑據(jù),獲取到蘋果返回的交易憑據(jù)// appStoreReceiptURL iOS7.0增加的堤瘤,購(gòu)買交易完成后玫芦,會(huì)將憑據(jù)存放在該地址NSURL*receiptURL=[[NSBundlemainBundle]appStoreReceiptURL];// 從沙盒中獲取到購(gòu)買憑據(jù)NSData*receiptData=[NSDatadataWithContentsOfURL:receiptURL];// 發(fā)送網(wǎng)絡(luò)POST請(qǐng)求,對(duì)購(gòu)買憑據(jù)進(jìn)行驗(yàn)證//測(cè)試驗(yàn)證地址:https://sandbox.itunes.apple.com/verifyReceipt//正式驗(yàn)證地址:https://buy.itunes.apple.com/verifyReceiptNSURL*url=[NSURLURLWithString:SANDBOX];NSMutableURLRequest*urlRequest=[NSMutableURLRequestrequestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:10.0f];urlRequest.HTTPMethod=@"POST";NSString*encodeStr=[receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];NSString*payload=[NSStringstringWithFormat:@"{\"receipt-data\" : \"%@\"}",encodeStr];NSData*payloadData=[payload dataUsingEncoding:NSUTF8StringEncoding];urlRequest.HTTPBody=payloadData;// 提交驗(yàn)證請(qǐng)求宙橱,并獲得官方的驗(yàn)證JSON結(jié)果 iOS9后更改了另外的一個(gè)方法NSData*result=[NSURLConnectionsendSynchronousRequest:urlRequest returningResponse:nilerror:nil];// 官方驗(yàn)證結(jié)果為空if(result==nil){NSLog(@"驗(yàn)證失敗");return;}NSDictionary*dict=[NSJSONSerializationJSONObjectWithData:result options:NSJSONReadingAllowFragmentserror:nil];if(dict!=nil){// 比對(duì)字典中以下信息基本上可以保證數(shù)據(jù)安全// bundle_id , application_version , product_id , transaction_idNSLog(@"驗(yàn)證成功姨俩!購(gòu)買的商品是:%@",@"_productName");}}

移動(dòng)觀察者

-(void)dealloc{[[SKPaymentQueuedefaultQueue]removeTransactionObserver:self];}

測(cè)試內(nèi)購(gòu)

必須是沒(méi)有越獄的真機(jī)

測(cè)試之前現(xiàn)在iPhone上的Apple id 注銷

使用現(xiàn)有Apple id

使用在沙箱測(cè)試員中添加的賬號(hào)即可

賬號(hào)

購(gòu)買

購(gòu)買

完成購(gòu)買

完成



原文:http://www.qingpingshan.com/rjbc/ios/211620.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市师郑,隨后出現(xiàn)的幾起案子环葵,更是在濱河造成了極大的恐慌,老刑警劉巖宝冕,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件张遭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡地梨,警方通過(guò)查閱死者的電腦和手機(jī)菊卷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宝剖,“玉大人洁闰,你說(shuō)我怎么就攤上這事⊥蛳福” “怎么了扑眉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我腰素,道長(zhǎng)聘裁,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任弓千,我火速辦了婚禮衡便,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘洋访。我一直安慰自己镣陕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布捌显。 她就那樣靜靜地躺著茁彭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扶歪。 梳的紋絲不亂的頭發(fā)上理肺,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音善镰,去河邊找鬼妹萨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炫欺,可吹牛的內(nèi)容都是我干的乎完。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼品洛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼树姨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起桥状,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤帽揪,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后辅斟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體转晰,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年士飒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了查邢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡酵幕,死狀恐怖扰藕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芳撒,我是刑警寧澤实胸,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布他嫡,位于F島的核電站番官,受9級(jí)特大地震影響庐完,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜徘熔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一门躯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酷师,春花似錦讶凉、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至台颠,卻和暖如春褐望,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背串前。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工瘫里, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荡碾。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓谨读,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親坛吁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子劳殖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容