精华内容
下载资源
问答
  • iOS苹果内购流程(Apple Pay)

    千次阅读 2016-02-29 11:29:47
    苹果内购流程 字数631 阅读133 评论1 喜欢6 1.登录开发者中心[开发者中心链接](https://developer.apple.com) 2.点击iTunes Connect-->协议、税务和银行业务 3.进入之后我们首先需要申请iOS Paid ...

    好文:https://github.com/lintide/ApplePayDemo

    苹果内购流程

    字数631  阅读133  评论1 

    1.登录开发者中心[开发者中心链接](https://developer.apple.com)
    2.点击iTunes Connect-->协议、税务和银行业务



    3.进入之后我们首先需要申请iOS Paid Application合同,苹果要我们添加一个联系人信息。因为已经做过所以我的界面上并没有这样的提示。盗图一张:



    4.同意协议之后进到这个界面:



    5.这里我们要填写的有:联系人信息(Contact Info)、银行信息(Bank Info)、税务信息(Tax Info)。



    6.进入联系人信息,增加一个联系人信息。



    7.填写银行信息:
    (1)选择所在国家



    (2)填写CNAPS Code信息,如果你不清楚的情况下你可以点击Look up CNAPS Code



    (3)查询CNAPS Code并填写



    (4)确认银行卡信息



    (5)填写银行帐号信息,next确认所有信息。



    8.填写税务信息。
    (1)税务信息有三个选项:美国税务、澳大利亚税务、加拿大税务。



    (2)这里我们选择美国税务



    (3)这里有两个问题(1)询问你是否是美国居民?(2)询问你有没有美国商业活动?
    (4)然后填写你的税务信息,等待审核结果。
    9.银行、税收/协议我们就结束了,下边我们就进入到我们的app里去。



    10.选择功能,我们添加一个app内购项目。



    11.添加内购项目
    (1)选择类型



    (2)产品名称:是你商品的描述。比如10颗心。产品ID:是一个比较重要的标识,项目通过ID找到商品获取商品信息。价格:可以参考价格表。



    (3)添加语言



    (4)提交一个屏幕快照(按照要求来)。
    (5)添加好之后



    12.商品添加好之后我们做最后一步的准备工作--添加沙盒测试帐号。
    (1)点击进入用户和职能界面



    (2)选择沙盒技术测试员



    (3)填写测试员信息(必须使用真实的Apple ID 而且这个ID不能被其他开发者添加)



    12.这样我们完成了最后一步的准备工作,下边就是代码实现。为了你们的方便这里我写了一个demo,你们可以下载下来参考一下,当然其中的一些参数需要修改成你们自己的(app内购讲解结束,记得好评哈)。
    苹果内购demo地址

    转自:http://www.jianshu.com/p/1e6b1152afc6

    另附文:http://www.jianshu.com/p/690a7c68664e

    iOS内购(iap)

    字数945  阅读397  评论4 
    通过苹果应用程序商店有三种主要赚钱的方式:

    1.直接收费(我想天朝的大多数人是不会购买的)
    2.广告 iAd Framework
    3.内购:应用程序本身的增值产品,(比如什么欢乐豆之类的)
    一般式37开, 苹果3,开发商7

    内购的产品分类:

    1>非消耗品(Nonconsumable)一旦购买,终身拥有(终身会员)
    2>消费品(Consumable),买了就用,用了就没有了(欢乐豆)
    剩下三种不常用:(中国用不上 iBooks)
    3>免费订阅
    4>自动续费订阅
    5>非自动续费订阅

    内购流程, 苹果官方说明:


    Snip20151006_3.png

    Snip20151006_4.png

    添加StoreKit框架,进行内购流程的书写:

    #import "ViewController.h"
    #import <StoreKit/StoreKit.h>
    
    @interface ViewController () <SKProductsRequestDelegate, SKPaymentTransactionObserver>
    
    /** 所有的产品 */
    @property (nonatomic, strong) NSArray *products;
    
    @end
    
    @implementation ViewController
    
    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
    
        // 通过观察者监听交易状态
        [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    }
    
    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
    
        [[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        // 向苹果服务器请求可卖的商品
        [self requestProducts];
    
        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"恢复" style:UIBarButtonItemStyleDone target:self action:@selector(restore)];
    }
    
    /**
     *  请求可卖商品
     */
    - (void)requestProducts
    {
        // 1.请求所有的商品
        NSString *productFilePath = [[NSBundle mainBundle] pathForResource:@"iapdemo.plist" ofType:nil];
        NSArray *products = [NSArray arrayWithContentsOfFile:productFilePath];
    
        // 2.获取所有的productid
        NSArray *productIds = [products valueForKeyPath:@"productId"];
    
        // 3.获取productid的set(集合中)
        NSSet *set = [NSSet setWithArray:productIds];
    
        // 4.向苹果发送请求,请求可卖商品
        SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:set];
        request.delegate = self;
        [request start];
    }
    
    /**
     *  当请求到可卖商品的结果会执行该方法
     *
     *  @param response response中存储了可卖商品的结果
     */
    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
    {
        /*
        for (SKProduct *product in response.products) {
            NSLog(@"价格:%@", product.price);
            NSLog(@"标题:%@", product.localizedTitle);
            NSLog(@"秒速:%@", product.localizedDescription);
            NSLog(@"productid:%@", product.productIdentifier);
        }
         */
        // 1.存储所有的数据
        self.products = response.products;
        self.products = [self.products sortedArrayWithOptions:NSSortConcurrent usingComparator:^NSComparisonResult(SKProduct *obj1, SKProduct *obj2) {
            return [obj1.price compare:obj2.price];
        }];
    
        // 2.刷新表格
        [self.tableView reloadData];
    }
    
    #pragma mark - tableView的数据源和代理方法
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return self.products.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *ID = @"ProductCell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
        }
    
        // 1.取出模型
        SKProduct *product = self.products[indexPath.row];
    
        // 2.给cell设置数据
        cell.textLabel.text = product.localizedTitle;
        cell.detailTextLabel.text = [NSString stringWithFormat:@"价格:%@", product.price];
    
        return cell;
    }
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // 1.取出模型
        SKProduct *product = self.products[indexPath.row];
    
        // 2.购买商品
        [self buyProduct:product];
    }
    
    #pragma mark - 购买商品
    - (void)buyProduct:(SKProduct *)product
    {
        // 1.创建票据
        SKPayment *payment = [SKPayment paymentWithProduct:product];
    
        // 2.将票据加入到交易队列中
        [[SKPaymentQueue defaultQueue] addPayment:payment];
    }
    
    #pragma mark - 实现观察者回调的方法
    /**
     *  当交易队列中的交易状态发生改变的时候会执行该方法
     *
     *  @param transactions 数组中存放了所有的交易
     */
    - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
    {
        /*
         SKPaymentTransactionStatePurchasing, 正在购买
         SKPaymentTransactionStatePurchased, 购买完成(销毁交易)
         SKPaymentTransactionStateFailed, 购买失败(销毁交易)
         SKPaymentTransactionStateRestored, 恢复购买(销毁交易)
         SKPaymentTransactionStateDeferred 最终状态未确定
         */
        for (SKPaymentTransaction *transaction in transactions) {
            switch (transaction.transactionState) {
                case SKPaymentTransactionStatePurchasing:
                    NSLog(@"用户正在购买");
                    break;
    
                case SKPaymentTransactionStatePurchased:
                    NSLog(@"购买成功");
                    [queue finishTransaction:transaction];
                    break;
    
                case SKPaymentTransactionStateFailed:
                    NSLog(@"购买失败");
                    [queue finishTransaction:transaction];
                    break;
    
                case SKPaymentTransactionStateRestored:
                    NSLog(@"恢复购买");
                    [queue finishTransaction:transaction];
                    break;
    
                case SKPaymentTransactionStateDeferred:
                    NSLog(@"最终状态未确定");
                    break;
    
                default:
                    break;
            }
        }
    }
    // 恢复购买
    - (void)restore
    {
        [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
    }
    广告: 苹果自己搞的内容

    1.添加iAd.framework
    2.添加ADBannerView视图,并设置代理方法
    3.广告条加载完成之前最好隐藏

    -
    (void)bannerViewDidLoadAd:(ADBannerView
    *)banner {
    
        self.bannerBottomConstraint.constant
    = 20.0;    
    
        [UIView
    animateWithDuration:0.5
    animations:^{
    
            [self.view
    layoutIfNeeded];
    
        }];   
    
        NSLog(@"加载广告成功");
    
    }
    
    -
    (void)bannerView:(ADBannerView
    *)banner didFailToReceiveAdWithError:(NSError
    *)error {
    
        NSLog(@"加载广告失败
    %@",
    error);
    
    }

    展开全文
  • 苹果内购流程详解

    2016-09-20 23:50:00
    苹果内购主要分为两部分 itunnes 相关配置 一.在itunnes 上配置相关信息资料 首先需要配置一些前提条件,详细步骤如下 1.进入itunnes选择协议,税务银行业务 2.完善资料信息,主要有3项(联系人,银行信息,...

     

    https://weikeyan.github.io/2016/10/17/iOS内购支付详解/

    苹果内购主要分为两部分

    itunnes 相关配置

    一.在itunnes 上配置相关信息资料

    首先需要配置一些前提条件,详细步骤如下

    1.进入itunnes选择协议,税务银行业务

     

    2.完善资料信息,主要有3项(联系人,银行信息,税务信息)

     

     4.完善联系人信息,一般填申请开发者账号人员的信息,可以修改

     

     

     

     

     

     5.完善银行信息 需要银行支付号(就是开户银行的一个标识),银行卡持有人名字

     

     

     

     

    6.完善税务信息 
    7.以下默认选择no

    16

    17

     

    8.确认界面,下图可能不太对,当时我是上下2个界面,第四项要上下一致才行 

    二.上面资料完善后换需要配置相关虚拟物品
    1.选择应用
     

     


    2.选择功能,我们添加一个app内购项目。


     

     


    3.选择类型

    a.可消费的产品  使用一次,之后就会耗尽,必须再次购买

    b.非消耗品   一次购买的产品,不会到期,这种物品一般来说要使用恢复购买的功能

    c.自动订阅类内购  这种物品会在一段时间内自动订阅
    d.非自动订阅   如一次订阅一年的服务会员

     


     


     


    4.提交一个屏幕快照(注意尺寸大小一般是用到内购的界面),然后保存。
    三.接下来需要添加沙箱测试账号,此账号是在测试环境测试内购流程的

    1.点击进入用户和职能界面


     2.选择沙盒技术测试员

    3.填写测试员信息(填写未被其他开发者使用的邮箱)


    内购实现流程
     
    一实现流程
    主要有两种情况
    本地处理
    1. 程序通过bundle存储的plist文件得到产品标识符的列表。
    2. 程序向App Store发送请求,得到产品的信息。
    3. App Store返回产品信息。
    4. 程序把返回的产品信息显示给用户(App的store界面)
    5. 用户选择某个产品
    6. 程序向App Store发送支付请求
    7. App Store处理支付请求并返回交易完成信息。
    8. App获取信息并提供内容给用户。
     
    依靠服务器处理 (一般需要一个订单号对应相应的凭证信息)
    1. 程序向服务器发送请求,获得一份产品列表。
    2. 服务器返回包含产品标识符的列表。
    3. 程序向App Store发送请求,得到产品的信息。
    4. App Store返回产品信息。
    5. 程序把返回的产品信息显示给用户(App的store界面)
    6. 用户选择某个产品 生成订单号
    7. 程序向App Store发送支付请求
    8. App Store处理支付请求并返回交易完成信息。
    9. 程序从信息中获得数据,(目前是订单号和凭证)并发送至服务器。
    10. 服务器将数据发给App Store来验证该交易的有效性。(主要是凭证的验证)具体可以查看https://developer.apple.com/library/content/releasenotes/General/ValidateAppStoreReceipt/Introduction.html#//apple_ref/doc/uid/TP40010573
    11. App Store对收到的数据进行解析,返回该数据和说明其是否有效的标识。
    12. 服务器读取返回的数据,确定用户购买的内容。
    13. 服务器确认成功后告诉客户端。
     
    blob.png
     
    漏单问题
    需要注意的是因为订单是和服务器保持同步的,但是购买流程在客户端,所有因为网络等问题会出现,漏单的问题,所以每次购买成功后需要本地保存一份凭证,只有当服务端验证通过后才从本地删掉,另外换需要在程序启动后在合适的时机检测是否有未处理的凭证,如果有需要给服务端验证。
    官方demo
    https://developer.apple.com/library/content/samplecode/sc1991/Introduction/Intro.html#//apple_ref/doc/uid/DTS40014726
     
    参考  http://allluckly.cn/ios支付/iOS开发2015年最新内购教程
     

     

    转载于:https://www.cnblogs.com/keyan1102/p/5891093.html

    展开全文
  • iOS 苹果内购详细步骤

    万次阅读 2018-04-02 15:13:36
    一、设置协议等相关 ... ...5.选择联系人,因为我是独立开发,所以填写的自己的,如果你是多人开发,你可以添加多个...1.内购必须用真机测试 2.测试时必须退出App Store自己的Apple ID,登录沙盒的测试Apple ID

    一、设置协议等相关

    1.点击协议、税务和银行业务。
    这里写图片描述

    2.点击 Request Contracts 下面的 Request,一直点击直到主协议界面。
    这里写图片描述

    主协议界面
    这里写图片描述
    Contact info :联系人信息
    Bank info :银行信息
    Tax info :税务信息

    3.点击 Contact Info 下面的Set Up,设置联系人信息,然后点击 Add New Contract,添加新的联系信息。
    这里写图片描述

    4.填写完整并保存。
    这里写图片描述

    5.选择联系人,因为我是独立开发,所以填写的自己的,如果你是多人开发,你可以添加多个联系人。

    Senior Management:高级管理人员
    Financial :财务
    Technical :技术支持
    Legal :法务
    Marketing :市场推广

    添加完成之后,对应选择好就行。
    这里写图片描述

    6.点击 Bank Info 下的 Set Up,然后点击 Add Bank Account 添加银行账号。
    这里写图片描述

    点击 Select One,选择 China ,点击 next。
    这里写图片描述

    填写 CNAPS Code,点击 next。
    这里写图片描述

    CNAPS Code:中国现代化支付系统代码,又叫做联行号。可以从网上查询,也可以直接点击Look up CNAPS Code进行查询,再不济,也可以直接打电话咨询相应银行客服。

    点击 next,核对一下,继续 next。

    填写银行卡相关信息,点击 next。(持卡人姓名,如张三(Zhang San))
    这里写图片描述

    确认一下,点击 save 保存。
    这里写图片描述

    选择对应的银行卡,点击 save。
    这里写图片描述

    7.点击 Tax Info 下面的 Set Up,设置税务信息。

    税务分三种:
    U.S Tax Forms : 美国税务
    Australia Tax Forms:澳大利亚税务
    Canada Tax Forms : 加拿大税务

    我们选择美国税务,点击 Done。
    这里写图片描述

    如果没有就选择 NO,点击 Submit。
    这里写图片描述

    如果没有就选择 NO。
    这里写图片描述

    填写完整,点击 Submit。
    这里写图片描述

    这里写图片描述

    核对信息无误后提交,状态显示 Processing 表示成功。
    这里写图片描述

    二、创建项目的内购条目

    1.进入 APP,点击功能。
    这里写图片描述

    根据情况选择,我选择的第一个。
    这里写图片描述

    填写内购项目信息,点击存储。
    这里写图片描述

    下面这些信息也要填完整,否则会提示元数据丢失(坑)。
    这里写图片描述

    注意:你 App 有几个内购级别就需要依次创建几个条目。
    这里写图片描述

    三、添加沙盒测试账号

    1.点击用户和职能
    这里写图片描述

    2.点击沙盒技术测试员
    这里写图片描述

    3.点击 “+” 添加测试员,邮箱和密码用于支付的时候登陆 Apple ID。
    这里写图片描述

    四、代码集成

    #import "ApplePayVC.h"
    //导入
    #import <StoreKit/StoreKit.h>
    
    //遵循代理
    @interface ApplePayVC ()
    <
    SKPaymentTransactionObserver,
    SKProductsRequestDelegate
    >
    
    //支付按钮
    @property (nonatomic, strong) UIButton *payBtn;
    
    @end
    
    @implementation ApplePayVC
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        [self setupPayBtn];
    
        //设置支付服务
        [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    }
    
    #pragma mark - UI
    - (void)setupPayBtn
    {
        _payBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        _payBtn.frame = CGRectMake(100, 100, 100, 100);
        _payBtn.backgroundColor = [UIColor redColor];
        [_payBtn setTitle:@"支付" forState:UIControlStateNormal];
        [_payBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        _payBtn.titleLabel.font = [UIFont systemFontOfSize:15.0];
        [_payBtn addTarget:self action:@selector(payBtnAction) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:_payBtn];
    }
    
    #pragma mark - BtnAction
    - (void)payBtnAction
    {
        //是否允许内购
        if ([SKPaymentQueue canMakePayments]) {
            NSLog(@"用户允许内购");
    
            //bundleid+xxx 就是你添加内购条目设置的产品ID
            NSArray *product = [[NSArray alloc] initWithObjects:@"bundleid+xxx",nil];
            NSSet *nsset = [NSSet setWithArray:product];
    
            //初始化请求
            SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:nsset];
            request.delegate = self;
    
            //开始请求
            [request start];
    
        }else{
            NSLog(@"用户不允许内购");
        }
    
    }
    
    #pragma mark - SKProductsRequestDelegate
    //接收到产品的返回信息,然后用返回的商品信息进行发起购买请求
    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response NS_AVAILABLE_IOS(3_0)
    {
        NSArray *product = response.products;
    
        //如果服务器没有产品
        if([product count] == 0){
            NSLog(@"没有该商品");
            return;
        }
    
        SKProduct *requestProduct = nil;
        for (SKProduct *pro in product) {
    
            NSLog(@"%@", [pro description]);
            NSLog(@"%@", [pro localizedTitle]);
            NSLog(@"%@", [pro localizedDescription]);
            NSLog(@"%@", [pro price]);
            NSLog(@"%@", [pro productIdentifier]);
    
            //如果后台消费条目的ID与我这里需要请求的一样(用于确保订单的正确性)
            if([pro.productIdentifier isEqualToString:@"bundleid+xxx"]){
                requestProduct = pro;
            }
        }
    
        //发送购买请求
        SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:requestProduct];
            payment.applicationUsername = userId;//可以是userId,也可以是订单id,跟你自己需要而定
        [[SKPaymentQueue defaultQueue] addPayment:payment];
    }
    
    #pragma mark - SKRequestDelegate
    //请求失败
    - (void)request:(SKRequest *)request didFailWithError:(NSError *)error
    {
        NSLog(@"error:%@", error);
    }
    
    //请求结束
    - (void)requestDidFinish:(SKRequest *)request
    {
        NSLog(@"请求结束");
    }
    
    #pragma mark - SKPaymentTransactionObserver
    //监听购买结果
    - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
    {
        for(SKPaymentTransaction *tran in transactions){
            switch (tran.transactionState) {
                case SKPaymentTransactionStatePurchased:
                    NSLog(@"交易完成");
                    [self completeTransaction:tran];
    
                    break;
                case SKPaymentTransactionStatePurchasing:
                    NSLog(@"商品添加进列表");
    
                    break;
                case SKPaymentTransactionStateRestored:
                    NSLog(@"已经购买过商品");
    //                [[SKPaymentQueue defaultQueue] finishTransaction:tran]; 消耗型商品不用写
    
                    break;
                case SKPaymentTransactionStateFailed:
                    NSLog(@"交易失败");
                    [[SKPaymentQueue defaultQueue] finishTransaction:tran];
    
                    break;
                default:
                    break;
            }
        }
    }
    
    //交易结束,当交易结束后还要去appstore上验证支付信息是否都正确,只有所有都正确后,我们就可以给用户方法我们的虚拟物品了。
    - (void)completeTransaction:(SKPaymentTransaction *)transaction
    {
        // 验证凭据,获取到苹果返回的交易凭据
        // appStoreReceiptURL iOS7.0增加的,购买交易完成后,会将凭据存放在该地址
        NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
        // 从沙盒中获取到购买凭据
        NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];
        //发送POST请求,对购买凭据进行验证
        //测试验证地址:https://sandbox.itunes.apple.com/verifyReceipt
        //正式验证地址:https://buy.itunes.apple.com/verifyReceipt
        NSURL *url = [NSURL URLWithString:AppStore_URL];
        NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0f];
        urlRequest.HTTPMethod = @"POST";
        NSString *encodeStr = [receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
        _receipt = encodeStr;
        NSString *payload = [NSString stringWithFormat:@"{\"receipt-data\" : \"%@\"}", encodeStr];
        NSData *payloadData = [payload dataUsingEncoding:NSUTF8StringEncoding];
        urlRequest.HTTPBody = payloadData;
    
        NSData *result = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil];
    
        if (result == nil) {
            NSLog(@"验证失败");
            return;
        }
    
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:result options:NSJSONReadingAllowFragments error:nil];
        NSLog(@"请求成功后的数据:%@",dic);
        //这里可以通过判断 state == 0 验证凭据成功,然后进入自己服务器二次验证,,也可以直接进行服务器逻辑的判断。
        //本地服务器验证成功之后别忘了 [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
    
        NSString *productId = transaction.payment.productIdentifier;
        NSString *applicationUsername = transaction.payment.applicationUsername;
    
        NSLog(@"applicationUsername++++%@",applicationUsername);
        NSLog(@"payment.productIdentifier++++%@",productId);
    
        if (dic != nil) {
            userId = applicationUsername;
            //服务器二次验证
            [self vertifyApplePayRequestWith:transaction];
        }
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }


    注意:
    1.内购必须用真机测试
    2.测试时必须退出App Store自己的Apple ID,登录沙盒的测试Apple ID

    展开全文
  • 苹果内购(IPA)如何沙盒测试

    千次阅读 2019-10-31 17:14:20
    苹果提供了沙盒账号,这个账号也就是个虚拟的AppleID,在开发者账号后台可创建配置(可让开发提供),有了沙盒账号,就能进行内购测试。 沙盒账号使用步骤: 在iPhone上安装测试包 退出iPhone的App Store...

    iOS应用里面用到了苹果应用内付费IPA功能,在项目上线前一定要进行内购功测试。 苹果提供了沙盒账号,这个账号也就是个虚拟的AppleID,在开发者账号后台可创建配置(可让开发提供),有了沙盒账号,就能进行内购测试。

    沙盒账号使用步骤:
    1. 在iPhone上安装测试包
    2. 退出iPhone的App Store账号
    3. 在测试包里购买商品,系统会让你进行登录,输入创建好的沙盒测试账号进行登录。如果该设备之前登录过其他沙盒账号,需退出,具体操作步骤,见博客文末注意事项。
    1. 输入密码
    1. 点击购买之后,成功的话会出现相应的提示

    注意事项:

    • 真实的AppleID不能在测试包里进行沙盒储值测试,所以在沙盒测试之前,需要退出真实的AppleID账号
    • 如何退出已有的沙盒账号

    操作方法:

    设置--iTunes Store与App Store--选中AppleID--注销, 注销后:登录要使用的沙盒账号即可:

    展开全文
  • 苹果内购IAP流程

    2020-04-03 16:40:28
    需要在APP里消耗的虚拟物品,都需要使用苹果内购,比如游戏钻石,VIP充值。如果是玩家与平台之间进行实体交易,则不需要通过内购,比如在淘宝买商品,转账等等。 想要使用苹果内购,首先你需要在appstoreconnect....
  • iOS开发 内购流程

    千次阅读 2018-06-28 14:58:05
    然后回到上一个页面第八步第九步第十步第十一步第十二步进行十二步的时候可能有些银行通过苹果这个方法查不到,就需要借助百度了,一定要准确查询,否则会有问题。我这里推荐一个地址...
  • iOS-iOS内购流程(手把手图文教程)

    千次阅读 2020-01-05 21:54:55
    前言 一直觉得苹果生态圈很安全,iOS操作系统也很流畅,而且软件有严格的审核机制,软件来源唯一(当然是你不越狱),但是这...这里我就来说说苹果内购流程,附上图文教程,希望大家喜欢! 一、提交资料 1.填写协...
  • 苹果内购流程

    2016-06-27 17:03:58
    简    注册 登录   添加关注 作者 许漠颜 2016.02.23 ...苹果内购流程 字数631 阅读932 评论5 喜欢26 1.登录开发者中心[开发者中心链接](https://developer.apple.com) 2.点击iTun
  • Unity iOS内购 思路: Unity调用iOS内购代码实现 效果图: 重要提示: 测试一定要用沙盒账号,否则无效! 流程 这里就不重复写了,直接上截图  OC代码: IAPInterface(主要是实现Unity跟OC的IAP代码的...
  • 今天我用几个小时时间来写一个对大家有用的东西,大家一定要认真看完,不然你冲游戏的钱一分都退...苹果iOS内购退款2018年4月份开始相信大家都感觉得到他的退款金额和时间都被减少压缩了,因为很多游戏开发商对苹果...
  • 1.前言 本博客是经历过多个项目检验的, 绝对真实, 适应于对苹果iap内购稍微有些了解的JAVA开发人员, 认真看, 定能完美解决苹果内购问题. 苹果IAP内购支付实际上是"将客户端支付后的一些信息传给后台, 后台拿...
  • 苹果内购退款问题

    千次阅读 2019-03-22 14:18:35
    苹果内购还是有不少问题的,还是需要和后台多多配合,例如,购买的时候默认的是当前登录的苹果id付款,如果想切换到别的id就会出现问题。。原来也没有退款流程,现在可以退款了, 简书链接:...
  • ios 内购流程

    千次阅读 2016-11-28 01:13:25
    苹果制定的游戏规则中,所有在App提供的服务需要付费时,都应当使用IAP,比如软件功能、游戏道具;所有在App外提供的服务需要付费时,都应使用其他支付方式,比如Uber的信用卡,淘宝、快的打车的
  • swift5 接入内购流程

    2021-07-05 13:12:57
    公司需要对接内购,顺便记录一下过程。 填写苹果协议 app store connect 协议 填写其中的付费 App,填写点公司名称、公司简介、公司帐号、公司之类的。 由于已经填写过了无法截图,可以去搜搜其他人的分享。 银行...
  • uni app ios 苹果内购

    2021-03-26 16:44:43
    app ios 苹果内购 的步骤 1,准备工作先要熟悉uni 开发ios 内购需要准备的沙盒 测试账号,然后在设置自定义调试基座,然后在 app store connect配置好 苹果内购商品id 2,开始写 内购的代码 <template> <...
  • 苹果内购那些事儿(一)

    万次阅读 2018-06-22 13:17:54
     苹果内购是指Apple Store的应用内购买,是苹果为App内购买虚拟商品或服务提供的一套交易系统。 其他章节:苹果内购那些事儿(二) 1.1内购商品类型 1.1.1消耗类型商品  该类型适用于可多次购买的消耗型项目,如...
  • iOS 内购开发流程(简洁版)

    千次阅读 2020-03-18 16:18:09
    内购开发流程 一、在开发者账号里面设置协议、税务和银行信息 二、在开发者账号里面创建内购的项目 三、代码集成 注意事项 必须用真机测试测试的时候必须退出自己的apple ID,弹出页面后登陆沙盒的测试apple id...
  • iOS 苹果内购

    2021-07-23 11:17:39
    内购简介 IAP 全称:In-App Purchase,是指苹果 App Store 的应用内购买,是苹果为 App 内购买虚拟商品或服务提供的一套交易系统。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J6tFW6C...
  • 最近公司的app,提交appstore审核时,被拒了,理由是:必须使用IAP接口支付,除了apple pay的用户使用门槛要比第三方支付要高很多,而且iap接口,要跟apple公司三七分成,也就是用户支付10元,苹果要分掉你3元(服务...
  • 苹果内购IAP流程(转载)

    千次阅读 2016-07-21 16:01:04
    你应该测试整个环境来避免威胁。《Secure Coding Guide》文档中有相关的提示说明。 虽然非消耗性商品可以用内置模式来恢复,订阅类商品必须通过服务器来恢复。你要负责纪录订阅信息、恢复数据。  消耗类...
  • 苹果内购支付和我们平时接入支付宝或者微信支付有很大的差别。 苹果内购支付的价格只能选择,不能直接设置。如图: 第一次配置好一个项目后,需要重新提一个版本后才能生效的。所以,第一次只能通过沙盒测试了。 ...
  • 苹果内购流程: iOS App上次苹果商店审核对于虚拟金币类必须要用苹果支付,不能使用第三方支付,苹果支付还要3/7分成,呵呵... 1、前六步有IOS端处理,最终获取购买凭证 2、POST请求,发送购买凭证receipt-...
  • 苹果内购和微信、支付宝支付流程有所不同,微信和支付宝都是通过各自的统一下单接口,拿到客户端所要的参数,之后返回给客户端,客户端支付完成进行回调并进行业务操作,而苹果内购是客户端直接支付完成之后通过...
  • 新版iOS内购(IAP)完整流程

    千次阅读 2017-06-19 15:41:37
    iOS内购 IAP
  • 中文网络上关于苹果内购简直是怨声载道,除了它那严格的审核政策及坑爹坑爹坑爹的30%提成,还有各种简单粗暴的体验以及致命漏洞。我研究了相关资料,做了点总结。 我们通过百度搜索“Apple store订阅黑陷阱” 得到1...
  • 重点说明:此文针对fiddler工具,使用charles抓包测试购买无此问题,只要SSL Proxying Settings设置时不要设置为代理所有(即不要设置为*:*),仅仅代理所测试应用的域名即可(即需要抓取那个域名代理那个域名下的...
  • 苹果内购: 只要你在苹果系统购买APP中虚拟物品(虚拟货币,VIP充值等),必须通过内购方式进行支付,苹果和商家进行三七开 验证模式有两种: Validating Receipts With the App Store 通过访问苹果接口进行验证...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,012
精华内容 2,404
关键字:

苹果内购流程流程测试