i OS 应用内置付费功能 整理
如果做过 i OS 应用内置[付费][1] 功能,感觉很简单,但是对于初次做会感觉疑惑,不敢确定是否对,以下是我整理的一些有关流程,希望可以帮助大家。
- 填写相关的税务,银行,联系人信息
- 创建App,设置付费道具
- 申请测试账号
目录
步骤一:
iOS 应用内付费IAP开发步骤一: 填写相关的税务,银行,联系人信息
2.1 填写Legal Entity的基本信息。
点击“Request”,填写一下Legal Entity的基本信息。
完成之后同意一个协议并提交,之后页面中会出现Contracts In Process.
2.2 设置Contact Info、Tax Info和Bank Info
2.2.1 Contact
点击Contact Info下的“Set Up”,进入Contact Information页面,并点击“Add New Contact”来增加新的contact。
然后回到Contact Information页面,刚增加的Contact就会出现在下拉框中,将对应的Role设置对应的Contact然后点Done完成
2.2.2 Bank
回到Contracts, Tax, and Banking主页面,选择Bank Info下面的”Set Up“,进入Bank Information 页面。选择“Add Bank Account”来增加一个银行信息
选择你银行卡开户所在哪个国家
下一步设置银行的CNAPS Code,这个号有的地方说是联行号,可以理解为每个银行支行的唯一ID吧,这个可以打电话问你银行卡开户行,就是他们那的一个唯一12位的标示号码,也可以通过苹果的Look up Transit Number去搜索。
不过,我觉得苹果的搜索全英文的,如果不知道国内银行的英文名叫什么,支行的英文叫什么。好吧,那就只能用下面这个网站去查询也是可以的https://e.czbank.com/CORPORBANK/WebBank?&tranFlag=0&dse_operationName=wgQueryUnionBankSrvOp
复制获取的现代化支付系统行号,粘帖到上面苹果页面中的CNAPS Code项。点击下一步,苹果会根据你写的那个代码读出对应的银行信息,这在你可以验证一下你写的银行号是否正确。
再下一步就设置你的卡号,账户名以及币种(人民币是CNY,当初还以为是RMB呢,找了半天,纳闷。当然,如果你的卡支持美元什么的也可以选择别的币种
这步设置完后就是显示你设置的所有信息,这在你可以核对一下是否有误,问没题的话点“Save”保存,保存后就回到前面的Choose Bank页面,选择刚才设置的这个银行“Save”完成银行设置
2.2.3 Tex
回到Contracts, Tax, and Banking主页面,选择Tex Info下面的”Set Up“,进入Tex Information 页面。如果上面有你所在的国家就选,没有的都选择U.S. Tax Forms。下面就来设置一下在天朝的情况:
a. 选择第一个U.S Tax Forms,点击下面的“Set Up”
b. 是否美国公民、或美国公司什么的,这个选择“No”就可以了,不然后面要你设置税号的,这个,真心木有。
c. 有没有美国商业活动.这个也用“No”吧。
d. 设置Tax Infomation。设置一下基本的信息
设置好后点“Confirm”就完成了。
同样的,把World也设置一下。设置完成后会需要一个处理时间,理论上是会在24小时内完成。
步骤二: 创建App,设置付费道具
打开iTunesConnect网站:https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa
![]()
大概说下重要的一些项:我的App:管理应用程序的,你所有发布的应用和每个应用的
iAd:苹果新推iAd Workbench广告服务
管理用户 :管理用户的,比如主账号以及开发账号、测试账号。
新建一个App项目
选择 我的App 选项,然后点击 “+” 号:【新建App】,如下图
然后进入以下界面
(注意:这里的套装 ID一定要跟你的项目中的info.plist中的Bundle ID以及开发者证书 的id 保证一致!)根据流程走即可。
设置app 内置购买
点击新建的app ,选中功能选项卡 。这里可以管理内置购买的项目 以及是否嵌入GameCenter等,如图:
这里你将看到自己创建的App,点击你创建的App项目,进入如下界面:
点击 + 设置购买。根据流程走即可。
步骤三 编码实现
简单的实现大概代码:
#import "ViewController.h"
#import <StoreKit/StoreKit.h>
@interface ViewController ()<SKProductsRequestDelegate,SKPaymentTransactionObserver>
@end
@implementation ViewController
- (void)dealloc {
[[SKPaymentQueue defaultQueue]removeTransactionObserver:self];
}
- (void)viewDidLoad {
[super viewDidLoad];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
NSLog(@"点击屏幕获取产品列表信息");
}
// 下面的ProductId应该是事先在itunesConnect中添加好的,已存在的付费项目。否则查询会失败。
- (void)getProductInfo {
//这里根据创建的名字,填你产品id,
//ProductIdofvip
//ProductId
NSSet * set = [NSSet setWithArray:@[@"ProductId"]];
SKProductsRequest * request = [[SKProductsRequest alloc] initWithProductIdentifiers:set];
request.delegate = self;
[request start];
NSLog(@"请求开始请等待...");
}
#pragma mark - 以上查询的回调函数-------
// 以上查询的回调函数
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
//
NSArray *myProduct = response.products;
NSLog(@"%@",myProduct);
if (myProduct.count == 0) {
NSLog(@"无法获取产品信息,购买失败。");
return;
}
SKPayment * payment = [SKPayment paymentWithProduct:myProduct[0]];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}