Apple Pay-----应用内购物支付
本人也是在开发时才知道,针对于虚拟金币,游戏币,等一些不是实物的商品除了一些第三方支付外,可以使用苹果应用内的支付。这种支付方式无论是消费者,还是开发者都很方便,与其他的付款方式相比之下,这种内购方式消费的是绑定iTunes帐号的银行卡,并且卖出商品的收益将会与苹果做一个三七分成!下面是开发步骤:
1,首先需要在开发者中心创建一个应用:(如果不需要上线的话,随便创建一个就行)

完善协议,税务,和银行业务,填写内容大致为:
姓名,邮箱,标题,电话号码,传真(可选)
CNAPS Code,这个号有的地方说是联行号,可以理解为每个银行支行的唯一ID吧,这个可以打电话问你银行卡开户行,就是他们那的一个唯一12位的标示号码,也可以通过苹果的Look up Transit Number去搜索。
银行账户号码 帐户持有人姓名
银行账户的货币,人命币是CNY
个人或组织名字
注册地-中国
完成之后如下图显示

2,在上一个步骤完成的基础上,进入到我的APP

在创建的APP上面进入到我的『功能』

在选择类型上面,一般选择消耗性,用户需要在每次消费完都可以购买(用户每次下载时都必须进行购买。一次性服务通常属于消耗型项目,例如钓鱼 App 中的鱼饵),总共有一下几种消费类型,


这里就是我们可以通过内购支付的虚拟商品。
3,测试需要在用户与职能中添加沙盒测试人员,如下图所示


完成以上在开发者中心的配置,我们就可以直接写程序了。
(1)引入#import<StoreKit/StoreKit.h>框架,遵循SKPaymentTransactionObserver,SKProductsRequestDelegate这两个代理
(2)首先要监听购买的结果,[[SKPaymentQueue defaultQueue] addTransactionObserver:self];并且查询是否允许内付费
//查询是否允许内付费
if ([SKPaymentQueue canMakePayments]) {
// 执行下面提到的第5步:
[self getProductInfowithprotectId:self.pro_id];
} else {
NSLog(@"失败,用户禁止应用内付费购买.");
}
(3)

SKProductsRequest * request = [[SKProductsRequest alloc] initWithProductIdentifiers:set];向苹果商店发送请求,查询我们在商店里配置的内购商品
(4)

response.products里面存的就是我们在商店配置的内购商品,是一个存放商品信息的数组,我们可以根据myProduct的元素个数判断是否获取到了商品信息,SKPayment * payment = [SKPayment paymentWithProduct:myProduct[0]];发送商品支付请求
[[SKPaymentQueue defaultQueue] addPayment:payment];
(5)代理方法---判断交易状态

(6)如果交易完成,需要向自己的服务器进行验证,这是苹果为了保证产品支付过程的安全,我们可以自己向苹果进行验证,也可以自己的后台与服务器进行配置,与自己的服务器进行验证,如果验证成功,后台进行虚拟商品数量增加操作。否则虚拟商品交易失败。

(7)这里是跟自己的服务器进行购买验证,[self reloadAcount];刷新界面虚拟商品的数量。

