在(一)中坑已經(jīng)說(shuō)的很多了,但只埋了一半.現(xiàn)在我把我意識(shí)到的坑都埋完.
沒(méi)看過(guò)(一)的出門(mén)左轉(zhuǎn),這倆要一起看..抱歉篇幅問(wèn)題
↓防懵逼必看
↑防懵逼必看
回去看了看貌似(一)已經(jīng)可以解決所有問(wèn)題了...額
1.還有訂單沒(méi)結(jié)束的坑
所以要把開(kāi)始監(jiān)聽(tīng)寫(xiě)在程序入口,在程序掛起時(shí)移除監(jiān)聽(tīng).
如果有未完成的訂單他就會(huì)直接走
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions
一般情況下都是購(gòu)買成功后沒(méi)有結(jié)束訂單的坑,所以他會(huì)走驗(yàn)證方法
if (self.cash != nil)這句話在這就起作用了,所以他會(huì)走[self checkUnTestReceipt];//從本地取憑證驗(yàn)證去 }
2.為什么要存到數(shù)組??
因?yàn)槟憧赡艹霈F(xiàn)不止一個(gè)未驗(yàn)證的訂單,擦,好慘
- (void)checkUnTestReceipt
{
NSArray *payAry =從本地去取存憑證的數(shù)組,我就不告訴你怎么取,咬我
if (!payAry || payAry.count == 0) {
return;
}
for (NSDictionary *dic in payAry) {
[self untestReceiptByTime:dic];//把本地(漏單)的dic(驗(yàn)證信息)都去驗(yàn)證了
}
}
untestReceiptByTime:這方法只是多了個(gè)失敗后的回傳,和驗(yàn)證方法有一點(diǎn)不同
- (void)untestReceiptByTime:(NSDictionary *)dic//第一次訪問(wèn)服務(wù)器失敗了又一次請(qǐng)求,多了個(gè)定時(shí)的請(qǐng)求
{
WEAKSELF;
[[YLBNetWorkManager sharedInstance]postJsonData:dic url: e successBlock:^(id responseBody) {
[weakSelf removeDicFromPayAry:dic];//移除,不懂得看一
} failureBlock:^(NSString *error) {
DLog(@"%@和自己服務(wù)器失敗22",error);
[self untestReceiptByTime:dic];//最好一段時(shí)間后再驗(yàn)證,用GCD
}
程序入口監(jiān)聽(tīng)開(kāi)始
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
DLog(@"我一進(jìn)來(lái)就看看本地漏單");
[[IAPManager sharedInstance]checkUnTestReceipt];//一進(jìn)程序看看有沒(méi)有漏單
雙管齊下,你慢慢漏吧
當(dāng)然還得在程序入口新建本地?cái)?shù)組(只建一次),用NSUserDefaults ,刪除添加都是他,這我就不寫(xiě)了,你全部都復(fù)制粘貼也沒(méi)啥成就感..
程序出口移除監(jiān)聽(tīng)
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
.
3.為什么必須存到本地
為了不往本地存我是沒(méi)少費(fèi)勁,但是我太年輕,還是錯(cuò)了.
雖然只要不結(jié)束訂單憑證就不會(huì)消失,但是驗(yàn)證時(shí)還需要其他(用戶Aid,不然你怎么知道誰(shuí)買的.或者下次登錄換用戶B了,你只用了本地的憑證和B,擦,充錯(cuò)人)所以必須存本地.
突然有個(gè)疑問(wèn),這個(gè)憑證是怎么和訂單一一對(duì)應(yīng)的?誰(shuí)知道說(shuō)下,我沒(méi)事也研究下
4.總結(jié)
貌似無(wú)法解決用戶購(gòu)買后未驗(yàn)證但是換手機(jī)了的丟單問(wèn)題,額,你找客服吧.好煩..技術(shù)有限,以后再說(shuō)吧.仔細(xì)想想好像還不是很完美.以后再補(bǔ)充吧.也請(qǐng)大神們多指教吧
最后我要感謝所有幫助我的人謝謝你們五四的奉獻(xiàn)
...
寫(xiě)到這里,算是把內(nèi)購(gòu)給寫(xiě)的略微明白點(diǎn)了.我現(xiàn)在也就能理解到這個(gè)水平了,以后有什么會(huì)再補(bǔ)充.
記得剛拿到任務(wù)一臉懵逼頭大.貌似大部分內(nèi)購(gòu)文章里都有我瀏覽的身影吧.我針扎
我在想要不要加密本地的東西,還有唐巧說(shuō)要禁止越獄的用戶內(nèi)購(gòu)(他們問(wèn)題太多,比如被黑客挾持)
5 更新11.1(驗(yàn)證)
先去蘋(píng)果的正式服務(wù)器驗(yàn)證,返回21007的話再去測(cè)試驗(yàn)證.因?yàn)樘O(píng)果測(cè)試用的是測(cè)試服務(wù)器