内购模块

作者: 光明程辉 | 来源:发表于2016-05-10 18:01 被阅读736次

https://wilddylan.github.io/2016/09/23/IAP/
文档:
京东支付

微信支付

ios 内购1
ios 内购2
ios 内购3
ios 内购4

官方文档源码 ----- 点击传送

  • 官方文档:
    使在应用程序购买(IOS,tvos,MAC)

在应用程序购买商店直接嵌入到你的应用程序,允许你连接到存储和安全的支付流程从用户。你可以使用内置购买收集支付功能增强或增加内容的可用的应用程序。在你的Xcode项目配置这种技术后,您将其配置在iTunes Connect。你也可以使用iTunes Connect来创建你的应用程序内购买。

**在应用程序购买使
**
在应用程序内购买功能窗格中,如果没有启用,请在应用程序内购买部分开关。
https://developer.apple.com/library/ios/technotes/tn2259/_index.html
[图片上传失败...(image-fb1e0b-1511268395331)]

Xcode自动规定你的应用程序使用应用程序内购买并添加storekit框架到你的项目,你。

如何写你的应用程序内购买代码,读
购买程序指南
。创建一个应用程序记录在iTunes进入明确的App ID连接,读取
添加新的应用程序
进入
iTunes Connect开发者指南
。创建和上传应用内购买、阅读
应用程序内购买的iTunes Connect配置指南
.

  • 自己曾经做过内购的一些截图:
1.png 沙箱测试.png 沙箱注册.png

Snip20160617_1.png

官方文档 --- 对应的截图

Snip20160617_2.png

Snip20160617_3.png

Snip20160617_4.png

Snip20160617_5.png

在准备提交里的点击:

11.png
  • 然后,往下滚动,会发现一个购买 ,接着点击 “+” 号,然后,就出现你创建的内购商品。最后,保存,就可以了。

测试我们的工程了:

需要注意:你在开发者账号的创建id 号和你的 Bundle Identifiler 要一致。否则测试不成功。
1、


Snip20160702_2.png

2、

Snip20160702_3.png

3、

Snip20160702_4.png

需注意:

注意:沙盒账号支付时,连接到苹果接口是不同的,对比一下:
苹果的接口官网
// 官网原文
Submit this JSON object as the payload of an HTTP POST request. In the test environment, usehttps://sandbox.itunes.apple.com/verifyReceiptas the URL. In production, usehttps://buy.itunes.apple.com/verifyReceiptas the URL.
--- 翻译:
在测试环境中,使用https://sandbox.itunes.apple.com/verifyreceipt 作为URL。
在生产中,使用https://buy.itunes.apple.com/verifyreceipt 作为URL。

--- 白话:
https://sandbox.itunes.apple.com/verifyReceipt 沙盒订单验证接口
https://buy.itunes.apple.com/verifyReceipt 正式订单验证接口

经常遇到的常见问题:

0、为啥我的代码是对的,也没报错?打印的数据也有了,就是没有弹出对话框?

答:把你的设备上的账号注销掉就可以了。

1、app 里已经可以拿到IAP数据了,如上图,但在真机里测试时,老是提示 :“找不到您输入的Apple ID,或者您的密码不正确,请再试一次” 之类的提示!

答:需要使用 测试账号的,由于你都没上线, 正式的账号没法购买的。(另外一种就是密码不对,几乎不是这个错。)

2、“无法连接到 iTunes Store”。!

这个错误一般是由以下2个原因引起的:
(1)购买商品时,Product ID写错了。
(2)App ID中,一定要打开IAP的Development配置一致。(上面已有截图)
(3)如果你使用沙盒测试的账号(不存在的邮箱,假的)。在真机里的 iTunes Store 与 App Store 把之前的账号注销掉,然后,使用沙盒测试的账号,这是你会发现,“无法连接到 iTunes Store”。---- 这说明我们的沙盒账号是不存在的嘛!但是可以测试哦!

  • 你也许有疑惑?----》为什么要使用假的?(个人理解,不足之处请多多请教)
  • 因为,使用不存在的邮箱的话,也就是假的邮箱,你可以在开发测试阶段就可以使用真机测试了。
  • 如果使用的是真实的,也就是可以在AppStore 里登陆的账号的话。意味着2点:
    a、要求APP 上线才能测试。
    b、如果不设置成 沙盒测试的话,那真的是扣你钱的。

** 小结:在开发阶段,建议创建一个假的沙盒账号。

3、如果上面2步骤,确保是对的话,那么,你在沙河测试项里添加一个或多个测试账号随便写,可以是假的,最好是假的:例如:testPay@qq.com ,然后,把真机里的原来的账号注销掉!(一定要注销),紧接着,执行我们的工程,此时!恭喜你,是不是弹出了你喜欢的输入框了?然后 把沙河测试账号 testPay@qq.com 填入,就OK了。测试成功!

PS: 也许你的测试还不成功的话,嗯!这个 锦囊 一定可以帮得上忙的。

下面让我们来认识几个重要的类:

SKProduct: --------------》需导入 @import StoreKit;

objects are returned as part of anSKProductsResponse
object. Each product object provides information about a product you previously registered in iTunes Connect.

-Getting Product Attributes 属性

@property(nonatomic, readonly) NSString *localizedDescription NS_AVAILABLE_IOS(3_0);

@property(nonatomic, readonly) NSString *localizedTitle NS_AVAILABLE_IOS(3_0);

@property(nonatomic, readonly) NSDecimalNumber *price NS_AVAILABLE_IOS(3_0);

@property(nonatomic, readonly) NSLocale *priceLocale NS_AVAILABLE_IOS(3_0);

@property(nonatomic, readonly) NSString *productIdentifier NS_AVAILABLE_IOS(3_0);

  // YES if this product has content downloadable using SKDownload
  @property(nonatomic, readonly, getter=isDownloadable) BOOL downloadable NS_AVAILABLE_IOS(6_0);

// Sizes in bytes (NSNumber [long long]) of the downloads available for this product
@property(nonatomic, readonly) NSArray<NSNumber *> *downloadContentLengths NS_AVAILABLE_IOS(6_0);

// Version of the downloadable content
@property(nonatomic, readonly) NSString *downloadContentVersion NS_AVAILABLE_IOS(6_0);

SKPayment 付款

这个skpayment类定义了苹果App Store的应用程序提供附加功能处理支付请求。付款将字符串,标识一个特定的产品,这些物品的用户愿意购买的数量。

  • 下面的是苹果推荐的最佳内购代码逻辑(我是从苹果文档里copy过来的):

    -(void)fetchProductInformation
    
    {
        NSSet *productID = [NSSet setWithObject:@"product_identifier"];
    
      // Create a product request(创建内购商品请求)
      SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:productID];
    
      request.delegate = self;
    
        // Send the product request to the App Store,向AppStore发送购买请求
        [request start];
    
    }
    
    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
    
    {
    
    // 在获取商品的内容之前,要确保产品数组不是空的
    
      if ([response.products count] > 0) {
    
      // product is an instance of SKProduct(就是实例化)
    
      self.product = [response.products firstObject];
    
      NSLog(@"Name: %@", self.product.localizedTitle);
    
        }
    
      }
    
    // 点击购买
    - (IBAction)purchase:(id)sender
    
    {
    
        if (self.product != nil) {
    
        SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:self.product];
    
        [[SKPaymentQueue defaultQueue] addPayment:payment];
    
        }
    
    }
    

或许你会遇到这样的问题: iOS_iTunesConnect协议更新导致无法构建新版本(协议、税务和银行业务)

-- 由于时间关系没能把Demo 存放到GitHub 上。如果你喜欢本篇文章,请给个赞!谢谢!

相关文章

  • 内购模块

    https://wilddylan.github.io/2016/09/23/IAP/文档:京东支付 微信支付 点...

  • Unity 接入IAP(上)Android篇

    很多项目都会遇到内购和订阅相关模块,这里我总结一下内购接入的时候遇到的各种坑,以及内购测试的时候,有什么比较好的方...

  • iOS内购掉单处理教程

    1.前言 最近公司的项目需要接入苹果内购支付。看了下项目里面,内购这个模块的功能之前就已经写好了,然后就跟后台调试...

  • 面试整理

    1.为什么要使用内购 因为要上线直播APP (内部有打赏主播的模块的话)必须要走内购,才能上线。 2.视频解码 软...

  • iOS内购(IAP)流程记录(业务篇)

    三大模块(协议、测试账号、内购产品) 1.协议签署: 前期登陆APP管理后台https://appstorecon...

  • 内购流程

    内购流程 1.构建内购的设置,需要设置内购商品,填写银行卡信息 进入苹果官方后台配置需要内购商品的信息(包括内购的...

  • Django图书荐购云平台开发与实践 - 4图书荐购模块

    首先回顾一下图书荐购模块要实现的内容。图书荐购模块包括荐购图书、已荐购图书的展示、取消荐购、荐购反馈。 荐购图书,...

  • 内购和广告

    内购和广告 1. 什么是内购? 2. 为什么做内购? 3. 内购的产品类型? 非消耗品(Nonconsumable...

  • 内购

    关于内购的资金流程:1.用户点击内购按钮, 付款成功给苹果公司, 成为我们的付费用户。2.当出现什么问题的时候,用...

  • 内购

    内购__应用内购买__storeKit AppleStore有三种主要赚钱的方式: - 直接 收费 - 广告 ...

网友评论

本文标题:内购模块

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