前段時間因為公司添加了支付業務,于是集成了支付寶和內購。悲劇的是,??,因為寶寶被拒了。拿句應景的話說,寶寶生氣了,寶寶不說話,結果寶寶一說話就收費了。
好吧,扯完了。步入正題,怎么樣綁定銀行卡,申請內購我就不在這里長篇大論了,也沒有讓我來做,這個是公司的財務或者法務來做的。我們只是添加product,添加完product之后,就可以在沙盒環境下進行測試了。
在這里只是總結一下遇到的坑,如果說的不對或者想討論的,歡迎指正和指教。
1.在Appdelegate 函數的入口處記得注冊觀察者,這樣可以讓你將已經支付成功而沒有向自己服務器校驗的內購商品校驗。
[[SKPaymentQueue defaultQueue] addTransactionObserver:[CargoBay sharedManager]];
2.支付類型的選擇,消耗型,非消耗型,訂閱型,非消耗型需要添加恢復購買,不知道在哪兒看的博客說中國區沒有非續費訂閱型,太坑爹了,會員業務都是非續費訂閱型的,一般來說為了公司的業務靈活,我們往往會使用消耗型達到其他類型的目的,就是引入中間虛擬幣,在審核的時候要注意,類型一定要匹配,無法匹配了,要靈活,找到折中方案。
3.上線的時候,記得把你的內購商品勾選上,不然上線之后就請求不到商品,我司的哥們兒就犯了這個錯誤。
4.服務端在向蘋果服務器校驗的時候,記得處理返回的code碼的異常,不要出現線上服務器去沙盒環境校驗的低級問題。
5.上線顯示價格的時候,可以記得進行轉換,不收手動寫上‘¥’,‘$’,這樣的貨幣符號,在不同的地區的話價格上會有爭議。
SKProduct *product = self.dataArray[indexPath.row];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]
init];
[numberFormatter
setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter
setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter
setLocale:product.priceLocale];
//顯示的價格
NSString*formattedPrice
= [numberFormatter stringFromNumber:product.price];
6.規避小技巧,加入自己的服務類型是消耗型的業務,但是卻需要日期提示的,可以及對應的日期設置為其他的名詞替代。例如 1個月 --- 初級 ?,3個月 --- 中級 等等 ,否則可能蘋果會以服務類型不匹配的理由reject 。
7.在測試的時候,在你的測試賬號下,如果有多個人登錄同一個賬號,并且在不同設備上購買了服務,而恰好這個時候其他的設備沒有校驗成功,這個時候向Apple服務器校驗的時候,receipt data 數組里或有多個結果,不要奇怪,這是正?,F象,看其他的設備有沒有向服務器驗證完畢。一定要在向服務器驗證成功之后,再移除本地的購買任務。
ok.啰里啰嗦就講到這里了,有什么問題歡迎大家討論。
歡迎交流! ?聯系方式在簡介.