我根据productID从itunes获取商品信息,可我在button上点击支付的时候消息框提示支付金额都是一样的,cell重用又没问题,请高手帮忙看看。以下是一些关键代码:
方法一:
#pragma -
#pragma SKProductsRequestDelegate Methods// Store Kit returns a response from an SKProductsRequest. --- store响应方法
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
// Parse the received product info.
// NSArray *myProduct = response.products;
self.validProduct = nil;
int count = [response.products count]; int i;
// Grab the first product in the array.
for(i=0;i<count;i++)
{
self.validProduct = [response.products objectAtIndex:i];
if (self.validProduct) {
// Yes, product is available, so return values.
//次方法跳到下面方法二。
[delegate requestedProduct:self identifier:self.validProduct.productIdentifier name:self.validProduct.localizedTitle price:[self.validProduct.price stringValue] description:self.validProduct.localizedDescription];
} else {
// No, product is NOT available, so return nil values.
NSLog(@"available validProduct!!!");
[delegate requestedProduct:self identifier:nil name:nil price:nil description:nil];
}
}
}
方法二:
//购买请求,显示在iphone上的界面信息 四
#pragma -
#pragma EBPurchaseDelegate Methods-(void) requestedProduct:(EBPurchase*)ebp identifier:(NSString*)productId name:(NSString*)productName price:(NSString*)productPrice description:(NSString*)productDescription
{
NSLog(@"ViewController requestedProduct");
if (productPrice != nil)
{
//显示在cell中的商品名
[_listData addObject:productName];
//显示在cell中的价格<是一个button>
[_listButton addObject:productPrice];
NSLog(@"418 _listButton is:%@",_listButton);
NSLog(@"productId is:%@,productPrice is:%@,productName is:%@,productDescription is:%@",productId,productPrice,productName,productDescription);
// Product is available, so update button title with price.
} else {
[self showAlertViewShow:@"充值列表获取失败!"];
}
if([_listData count]>=6)
{
[_productlist reloadData];
}
if([_listButton count] >= 6)
{
[_productlist reloadData];
}
}
方法三:
//处理TableViewCell中每一行
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *TableSampleIdentifier = @"CMainCell";
cell = [tableView dequeueReusableCellWithIdentifier:
TableSampleIdentifier];
// 没有重用则手动创建对象
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:TableSampleIdentifier] autorelease]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.tag = [indexPath row];
button.frame = CGRectMake(200, 5, 80, 35);
[button setBackgroundColor:[UIColor redColor]];
[button setTitle:[_listButton objectAtIndex:[indexPath row]] forState:UIControlStateNormal];
//_listButton 是一个全局的动态数组,此处是用于现在在button上面的值,值打印和itunes上面的一样。
NSLog(@"285 _listButton value is:%@",_listButton);
//dataRequest:方法是我客户端向服务器请求订单号的函数
[button addTarget:self action:@selector(dataRequest:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button]; }
UIButton *btn = nil;
for (UIView *v in cell.contentView.subviews) {
if ([v isKindOfClass:[UIButton class]]) {
btn = v;
break;
}
}
cell.textLabel.text = [_listData objectAtIndex:[indexPath row]];
return cell;
}
方法四://获取订单号
- (void)dataRequest:(UIButton *)sender
{
************ 这里应该怎么处理 ???
// SKProduct *product = [_listButton objectAtIndex:sender.tag];
//注释的这段我点击button提示打印价格是对的,所以从这里说明我cell重用没问题 但是apple那边提示的支付消息框总是提示支付198元
// NSString *stringInt = [NSString stringWithFormat:@"%@",[_listButton objectAtIndex:sender.tag]];
// UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
// message:stringInt
// delegate:self
// cancelButtonTitle:@"确定"
// otherButtonTitles:nil];
// [alert show];
NSLog(@"dataRequest!!! 获取订单号");
NSString *postAddress = [NSString stringWithFormat:@"%@",@"http://pay.show.hua.com/ajax/Recharge.ashx"];
[_request setPostValue:@"CREATE" forKey:@"OPTION"];
..... _request.tag = 22222;
[_request setDelegate:self];
[_request startAsynchronous];
}
IAP支付UITableViewCellUIButton
方法一:
#pragma -
#pragma SKProductsRequestDelegate Methods// Store Kit returns a response from an SKProductsRequest. --- store响应方法
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
// Parse the received product info.
// NSArray *myProduct = response.products;
self.validProduct = nil;
int count = [response.products count]; int i;
// Grab the first product in the array.
for(i=0;i<count;i++)
{
self.validProduct = [response.products objectAtIndex:i];
if (self.validProduct) {
// Yes, product is available, so return values.
//次方法跳到下面方法二。
[delegate requestedProduct:self identifier:self.validProduct.productIdentifier name:self.validProduct.localizedTitle price:[self.validProduct.price stringValue] description:self.validProduct.localizedDescription];
} else {
// No, product is NOT available, so return nil values.
NSLog(@"available validProduct!!!");
[delegate requestedProduct:self identifier:nil name:nil price:nil description:nil];
}
}
}
方法二:
//购买请求,显示在iphone上的界面信息 四
#pragma -
#pragma EBPurchaseDelegate Methods-(void) requestedProduct:(EBPurchase*)ebp identifier:(NSString*)productId name:(NSString*)productName price:(NSString*)productPrice description:(NSString*)productDescription
{
NSLog(@"ViewController requestedProduct");
if (productPrice != nil)
{
//显示在cell中的商品名
[_listData addObject:productName];
//显示在cell中的价格<是一个button>
[_listButton addObject:productPrice];
NSLog(@"418 _listButton is:%@",_listButton);
NSLog(@"productId is:%@,productPrice is:%@,productName is:%@,productDescription is:%@",productId,productPrice,productName,productDescription);
// Product is available, so update button title with price.
} else {
[self showAlertViewShow:@"充值列表获取失败!"];
}
if([_listData count]>=6)
{
[_productlist reloadData];
}
if([_listButton count] >= 6)
{
[_productlist reloadData];
}
}
方法三:
//处理TableViewCell中每一行
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *TableSampleIdentifier = @"CMainCell";
cell = [tableView dequeueReusableCellWithIdentifier:
TableSampleIdentifier];
// 没有重用则手动创建对象
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:TableSampleIdentifier] autorelease]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.tag = [indexPath row];
button.frame = CGRectMake(200, 5, 80, 35);
[button setBackgroundColor:[UIColor redColor]];
[button setTitle:[_listButton objectAtIndex:[indexPath row]] forState:UIControlStateNormal];
//_listButton 是一个全局的动态数组,此处是用于现在在button上面的值,值打印和itunes上面的一样。
NSLog(@"285 _listButton value is:%@",_listButton);
//dataRequest:方法是我客户端向服务器请求订单号的函数
[button addTarget:self action:@selector(dataRequest:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button]; }
UIButton *btn = nil;
for (UIView *v in cell.contentView.subviews) {
if ([v isKindOfClass:[UIButton class]]) {
btn = v;
break;
}
}
cell.textLabel.text = [_listData objectAtIndex:[indexPath row]];
return cell;
}
方法四://获取订单号
- (void)dataRequest:(UIButton *)sender
{
************ 这里应该怎么处理 ???
// SKProduct *product = [_listButton objectAtIndex:sender.tag];
//注释的这段我点击button提示打印价格是对的,所以从这里说明我cell重用没问题 但是apple那边提示的支付消息框总是提示支付198元
// NSString *stringInt = [NSString stringWithFormat:@"%@",[_listButton objectAtIndex:sender.tag]];
// UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
// message:stringInt
// delegate:self
// cancelButtonTitle:@"确定"
// otherButtonTitles:nil];
// [alert show];
NSLog(@"dataRequest!!! 获取订单号");
NSString *postAddress = [NSString stringWithFormat:@"%@",@"http://pay.show.hua.com/ajax/Recharge.ashx"];
[_request setPostValue:@"CREATE" forKey:@"OPTION"];
..... _request.tag = 22222;
[_request setDelegate:self];
[_request startAsynchronous];
}
IAP支付UITableViewCellUIButton
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货