iOS內(nèi)購(gòu)人走的心酸路(下)

現(xiàn)在先了解哈內(nèi)購(gòu)的流程

好的思路我們都了解了 現(xiàn)在我們開(kāi)始動(dòng)工

我寫(xiě)的比較簡(jiǎn)單沒(méi)有封裝就是在那個(gè)地方用到了然后就直接調(diào)支付的方法

這個(gè)就是在我們要用的時(shí)候調(diào)后臺(tái)的接口然后后臺(tái)給我們返回訂單號(hào)

-(void)buttonActionTequan{

? ? [SVProgressHUD showWithStatus:@"正在支付"];

? ? NSMutableDictionary *dictParameters = [[NSMutableDictionary alloc]init];

? ? [dictParameterssetObject:@""forKey:@""];

? ? NSString*payType =@"";

? ? if ([currentPayType isEqualToString:@"產(chǎn)品id"]) {

? ? ? ? payType =@"";

? ? }

? ? [dictParameterssetObject:payTypeforKey:@"type"];

?? ?[HttpManagerpostWithAction:@""andParams:dictParameterssuccess:^(NSDictionary*dict,BOOLsuccess) {

? ? ? ? intcode = [[dictobjectForKey:@"code"]intValue];

? ? ? ? NSString *message = [NSString stringWithFormat:@"%@",[dict objectForKey:@"msg"]];

? ? ? ? if(code ==1) {

? ? ? ? ? ? NSDictionary*dictData = [dictobjectForKey:@"data"];

? ? ? ? ? ? currentOrderNo = [NSString stringWithFormat:@"%@",[dictData objectForKey:@"order_num"]];

? ? ? ? ? ? [[SKPaymentQueue defaultQueue] addTransactionObserver:self];

?? ? ? ? ? ? ? ? ? ? ? if([SKPaymentQueuecanMakePayments]){

? ? ? ? ? ? ? ? ? ? ? ? ? ? // 這里發(fā)起支付

?? ? ? ? ? ? ? ? ? ? ? ? ? [selfrequestProductData:currentPayType];

?? ? ? ? ? ? ? ? ? ? ? }else{

?? ? ? ? ? ? ? ? ? ? ? ? ? NSLog(@"不允許程序內(nèi)付費(fèi)");

?? ? ? ? ? ? ? ? ? ? ? }

?? ? ? ?}else{

? ? ? ? ? ? [SVProgressHUD dismissWithError:message];

?}

? ? }fail:^(NSError*error) {

? ? ? ? [SVProgressHUD dismissWithError:@"請(qǐng)求失敗,請(qǐng)檢查網(wǎng)絡(luò)"];

? ? }];}


//收到產(chǎn)品返回信息

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{

? ? NSLog(@"--------------收到產(chǎn)品反饋消息---------------------");

? ? NSArray*product = response.products;

? ? NSLog(@"productID:%@", response.invalidProductIdentifiers);

? ? if(product.count==0){

? ? ? ? [SVProgressHUD dismissWithError:@"查詢不到對(duì)應(yīng)消息"];

? ? ? ? return;

? ? }

? ? [SVProgressHUD showWithStatus:@"支付中"];

? ? SKProduct*p =nil;

? ? for(SKProduct*proinproduct) {

? ? ? ? if([pro.productIdentifier isEqualToString: currentPayType]){

? ? ? ? ? ? p = pro;

? ? ? ? }

? ? }

? ? SKPayment *payment = [SKPayment paymentWithProduct:p];

? ? NSLog(@"發(fā)送購(gòu)買(mǎi)請(qǐng)求");

? ? [[SKPaymentQueue defaultQueue] addPayment:payment];

}

//請(qǐng)求失敗

- (void)request:(SKRequest*)requestdidFailWithError:(NSError*)error{

? ? [SVProgressHUD dismissWithError:@"支付失敗"];

}

- (void)requestDidFinish:(SKRequest*)request{

? ? //[SVProgressHUD dismiss];

}


//監(jiān)聽(tīng)購(gòu)買(mǎi)結(jié)果

- (void)paymentQueue:(SKPaymentQueue*)queueupdatedTransactions:(NSArray*)transaction{

? ? for(SKPaymentTransaction*tranintransaction){


? ? ? ? switch(tran.transactionState) {

? ? ? ? ? ? case SKPaymentTransactionStatePurchased:{

? ? ? ? ? ? //購(gòu)買(mǎi)完成向自己的服務(wù)器驗(yàn)證

? ? ? ? ? ? ? ? [self verifyPurchaseWithPaymentTransaction:[NSNumber numberWithInt:tran.transactionState]];

? ? ? ? ? ? ? ? [[SKPaymentQueue defaultQueue] finishTransaction:tran];

? ? ? ? ? ? }

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case SKPaymentTransactionStatePurchasing:

? ? ? ? ? ? ? ? [SVProgressHUD showWithStatus:@"支付中"];

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case SKPaymentTransactionStateRestored:{

? ? ? ? ? ? ? ? [[SKPaymentQueue defaultQueue] finishTransaction:tran];

? ? ? ? ? ? }

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case SKPaymentTransactionStateFailed:{

? ? ? ? ? ? ? ? [[SKPaymentQueue defaultQueue] finishTransaction:tran];

? ? ? ? ? ? ? ? [SVProgressHUD dismissWithError:@"購(gòu)買(mǎi)失敗"];

? ? ? ? ? ? }

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? default:

? ? ? ? ? ? ? ? break;

? ? ? ? }

? ? }

}

//交易結(jié)束

- (void)completeTransaction:(SKPaymentTransaction*)transaction{

? ? NSLog(@"交易結(jié)束");

? ? [[SKPaymentQueue defaultQueue] finishTransaction:transaction];


}


-(void)verifyPurchaseWithPaymentTransaction:(NSNumber*)resultState{

? ? //從沙盒中獲取交易憑證并且拼接成請(qǐng)求體數(shù)據(jù)

? ? NSURL *receiptUrl=[[NSBundle mainBundle] appStoreReceiptURL];

? ? NSData*receiptData=[NSDatadataWithContentsOfURL:receiptUrl];

? ? NSString * base64String = [receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

? ? NSLog(@"receiptData = %@",base64String); ? ?NSMutableDictionary *dictParameters = [[NSMutableDictionary alloc]init];

? ? [dictParameterssetObject:currentOrderNoforKey:@"order_no"];

? ? [dictParameterssetObject:base64StringforKey:@"trade_no"];

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容