IAP實現之一內建模式 cocos2dx

2021-08-11 09:17:44 字數 3342 閱讀 2570

paymentcontroller.h檔案:

/*

* paymentcontroller.h

** created by chiu on 15-06-16.

*/#import #import @inte***ce paymentcontroller : nsobject@property nsstring *productid;

- (void)initproductid:(nsstring*) productidstr;

- (void)purchasefunc;

@end

paymentcontroller.mm檔案:

/*

author: chiu

project: bygame

date: 2016/08/22

*/#import "paymentcontroller.h"

#import "cchelp.h"

@inte***ce paymentcontroller ()

@end

@implementation paymentcontroller

static bool hasaddobersver = no;

- (id)initwithpayconstructor:(nsstring *) productidstr

}return self;

}- (void)initproductid:(nsstring*) productidstr

- (void)purchasefuncelse

}//請求商品

- (void)requestproductdata:(nsstring *)type

//收到產品返回資訊

- (void)productsrequest:(skproductsrequest *)request didreceiveresponse:(skproductsresponse *)response

nslog(@"productid:%@", response.invalidproductidentifiers);

nslog(@"產品付費數量:%d",[product count]);

skproduct *payinfoporduct = nil;

for (skproduct *pro in product)

}if(!payinfoporduct)

nslog(@"傳送購買請求");

if (floor(nsfoundationversionnumber) < nsfoundationversionnumber_ios_5_0)

else

[request autorelease];

}- (void)requestproupgradeproductdata

//請求失敗

- (void)request:(skrequest *)request didfailwitherror:(nserror *)error

- (void)requestdidfinish:(skrequest *)request

-(void) purchasedtransaction: (skpaymenttransaction *)transaction

//監聽購買結果

- (void)paymentqueue:(skpaymentqueue *)queue updatedtransactions:(nsarray *)transaction

break;

case skpaymenttransactionstatepurchasing:

break;

case skpaymenttransactionstaterestored:

break;

case skpaymenttransactionstatefailed:

break;

default:

break;}}

}//交易結束

- (void)completetransaction:(skpaymenttransaction *)transaction

- (void) failedtransaction: (skpaymenttransaction *)transaction

switch (transaction.error.code)

[[skpaymentqueue defaultqueue] finishtransaction: transaction];

}- (void) restoretransaction: (skpaymenttransaction *)transaction

#pragma mark connection delegate

- (void)connection:(nsurlconnection *)connection didreceivedata:(nsdata *)data

- (void)connectiondidfinishloading:(nsurlconnection *)connection

- (void)connection:(nsurlconnection *)connection didreceiveresponse:(nsurlresponse *)response

}- (void)connection:(nsurlconnection *)connection didfailwitherror:(nserror *)error

- (void)dealloc

@end

呼叫例子:

/* ios iap entrance */

int payprice = pnotify->getsubtype();

std::string productidstr;

switch (payprice)

nslog(@"----------當前商品id: %s", productidstr.c_str());

nsstring* ocproductidstr = [nsstring stringwithformat:@"%s",

productidstr.c_str()];

paymentcontroller* ppaycontroller = [[paymentcontroller alloc] initwithpayconstructor:ocproductidstr];

[ppaycontroller purchasefunc];

ps:內建模式並沒有做訂單憑證後台驗證,整個流程看起來都非常簡單,所以是很不安全的方式,容易被破解內購產品刷單,下篇blog處理伺服器模式

實現模式之一種程式設計理論

這篇文章講述的是,我們在程式設計的過程中以一種什麼樣的價值觀作為導向,遵守一些什麼樣的規則。就能編寫出比較優秀的 先說一下三個概念 模式 也就是我們通常所說的解決方案,比如要寫乙個迴圈遍歷有很多實現方案。模式表達的是我們要做什麼和怎麼做出來。價值觀 也就是我們程式設計應該實現的目的,統一支配我們程式...

設計模式之一(Iterator模式)

表 1 1 類和介面的一覽表 名字說明 aggregate 表示集合的介面 iterator 遍歷集合的介面 book 表示書的類 bookshelf 表示書架的類 bookshelfiterator 遍歷書架的類 main 測試程式行為的類 aggregate介面 public inte ce a...

通過跳線方式實現STM32 的IAP模式

iap,即在應用程式設計。很多微控制器都支援這個功能,stm32也不例外。在之前的flash模擬eeprom實驗裡面,我們學習了stm32的flash自程式設計,本章我們將結合flash自程式設計的知識,通過stm32的串列埠實現乙個簡單的iap功能。48.1 iap簡介 第乙個專案程式不執行正常的...