美文网首页
iOS APP内支付

iOS APP内支付

作者: 一步步漫漫走 | 来源:发表于2017-10-27 12:12 被阅读0次

一、证书配置(在此暂时不赘述了)

developer.apple.com/account/ios/identifier/bundle

二、苹果内支付需要的产品ID

创建内支付ID

1、创建一个新的APP(此APP的)  -> 看下图

创建APP

                   选择新建APP<根据自己所需,此处已APP为例>

添加APPID

  到此一个APP创建好了,当然如果需要上线的话,就需要详细填写内容,再次不多说了。此处仅作为内支付测试所以不需要填写,直接下一步>>>>>>>>>>>

选择支付样式
>>>>>>>>>>>>>> 添加一个测试账号 储存、完工~

到此,一个产品ID创建完成,下面走一趟项目配置

三、项目配置

1、不废话,图片走起

到这里就差不多了,下面就是最想看到也是最简单的代码部分了。代码很简单、只是前期工作有点繁琐

四、代码 

1、头文件不会忘了吧

#import <StoreKit/StoreKit.h>             // pay支付

2、协议还记得吧

<SKProductsRequestDelegate,SKPaymentTransactionObserver>

3、复制代码的地方

#pragma mark ---- 苹果Pay支付

/** 苹果Pay支付 */

- (void)doApplePayWithData:(NSDictionary *)orderDic {

// 设置代理

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

//判断是否可进行支付

if ([SKPaymentQueue canMakePayments])

{

NSLog(@"许程序内付费购买");

//根据商品ID查找商品信息

NSArray *product = [[NSArray alloc] initWithObjects:@"申请到的产品ID", nil];

NSSet *nsset = [NSSet setWithArray:product];

//创建SKProductsRequest对象,用想要出售的商品的标识来初始化, 然后附加上对应的委托对象。

//该请求的响应包含了可用商品的本地化信息。

SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:nsset];

request.delegate = self;

[request start];

}

else

{

[SVProgressHUD showErrorWithStatus:@"不允许程序内付费"];

}

}

#pragma mark ---- SKProductsRequestDelegate

// 以上查询的回调函数

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

NSLog(@"----%lu---",(unsigned long)response.invalidProductIdentifiers.count);

NSLog(@"goods info back");

NSArray *myProduct = response.products;

if(myProduct.count == 0){

NSLog(@"无法获取产品信息,购买失败。");

return;

}

for(SKProduct *pro in myProduct){

NSLog(@"%@", [pro description]);

NSLog(@"%@", [pro localizedTitle]);

NSLog(@"%@", [pro localizedDescription]);

NSLog(@"%@", [pro price]);

NSLog(@"%@", [pro productIdentifier]);

NSLog(@"%@", [pro.priceLocale objectForKey:NSLocaleCurrencySymbol]);

NSLog(@"%@", [pro.priceLocale objectForKey:NSLocaleCurrencyCode]);

if([pro.productIdentifier isEqualToString:@"申请到的产品ID"]){

// 下面代码看需要

_currentProduct  = pro;

_appPayGoodsPrice = [NSString stringWithFormat:@"%@", [pro price]];

_appPayGoodsCurrency = [NSString stringWithFormat:@"%@",[pro.priceLocale objectForKey:NSLocaleCurrencyCode]];

break;

}

}

NSLog(@"start pay");

//创建一个支付对象,并放到队列中

SKPayment *payment = [SKPayment paymentWithProduct:_currentProduct];

NSLog(@"---------发送购买请求------------");

[[SKPaymentQueue defaultQueue] addPayment:payment];

}

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

NSLog(@"请求商品失败%@",error);

}

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

[SVProgressHUD dismiss];

NSLog(@"反馈信息结束调用");

}

#pragma mark ---- SKPaymentTransactionObserver

// 监听购买结果

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{

NSLog(@"pay result");

for(SKPaymentTransaction *transaction in transactions){

switch (transaction.transactionState)

{

case SKPaymentTransactionStatePurchased:

{

//交易完成

NSLog(@"transactionIdentifier = %@", transaction.transactionIdentifier);

NSLog(@"---苹果Pay支付-交易完成---");

kSucPrompt(@"---苹果Pay支付-交易完成---");

}

break;

case SKPaymentTransactionStateFailed:

{

//交易失败

NSLog(@"---苹果Pay支付-交易失败---");

kFailPrompt(@"---苹果Pay支付-交易失败---");

}

break;

case SKPaymentTransactionStateRestored:

{

//已经购买过该商品

NSLog(@"---苹果Pay支付-已经购买过该商品---");

kFailPrompt(@"---苹果Pay支付-已经购买过该商品---");

}

break;

case SKPaymentTransactionStatePurchasing:

{

//商品添加进列表

NSLog(@"---苹果Pay支付-商品添加进列表---");

kSucPrompt(@"---苹果Pay支付-商品添加进列表---");

}

break;

default:

break;

}

}

}

//交易结束

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

NSLog(@"交易结束");

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

}

//- (void)dealloc{

//    [[SKPaymentQueue defaultQueue] removeTransactionObserver:self];

//    [[NSNotificationCenter defaultCenter] removeObserver:self];

//}

五、补充

1、支付测试前需要把测试机上面已登录的苹果账号注销掉;

2、沙箱测试员的邮箱需是未注册过苹果账号的邮箱;

ps:粗略整理,不完善之处望见谅~

相关文章

  • iOS支付

    iOS支付分为两类,第三方支付和应用内支付(内购)。 应用内支付(In-App Purchase):在应用程序内购...

  • iOS APP内支付

    一、证书配置(在此暂时不赘述了) developer.apple.com/account/ios/identifi...

  • ios-内购(IAP)

    StoreKit 框架内购:在ios中专指苹果内购,在app内购买商品时使用苹果的支付方式进行购买;如果在app内...

  • 收录 : iOS支付开发

    iOS 银联支付开发流程iOS 微信支付开发流程iOS 支付宝支付开发流程iOS Apple Pay开发流程App...

  • SDK接入(3)之iOS内支付(In-App Purchase)

    SDK接入(3)之iOS内支付(In-App Purchase)接入 继整理了Android平台的SDK接入过程。...

  • iOS支付的配置

    iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...

  • iOS之支付

    iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...

  • ios支付

    iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...

  • 云服务平台

    iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...

  • 支付

    iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...

网友评论

      本文标题:iOS APP内支付

      本文链接:https://www.haomeiwen.com/subject/tdsrpxtx.html