iOS内购

来源:互联网 发布:固定收益 经典知乎 编辑:程序博客网 时间:2024/04/20 11:34

此处只说代码思路

 1.调用后台接口创建订单传入productiduserid等,create order,返回orderid

 2.客户端通过productid去请求苹果服务器去查询此产品的详细信息,


NSSet *set=[NSSet setWithObject:self.productId];

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

    request.delegate=self;

    [request start];


产品详细信息的回调方法,

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


        SKMutablePayment *payment=nil;

       如果能查到此商品,将商品封装到SKMutablePayment中,添加监听者

        if (response.products.count>0) {

             payment= [SKMutablePayment paymentWithProduct:response.products[0]];       

            [[SKPaymentQueue defaultQueue] addTransactionObserver:self];

        }else

              productid错误

            return;

        }

        if (![SKPaymentQueue canMakePayments]) {

            DLog(@"设备不支持购买.");

            return;

        }

        开始发起内购请求

        [[SKPaymentQueue defaultQueue] addPayment:payment];

3.实现监听方法,去监听支付进展情况

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

{


    for (SKPaymentTransaction *transaction in transactions)

    {

        switch (transaction.transactionState)

        {

            case SKPaymentTransactionStatePurchasing:

                continue;

            case SKPaymentTransactionStatePurchased:

                [self finishTransaction:transaction wasSuccessful:YES];

                break;

            case SKPaymentTransactionStateFailed:

                [self finishTransaction:transaction wasSuccessful:NO];

                break;

            case SKPaymentTransactionStateRestored:       

               [self finishTransaction:transaction wasSuccessful:NO];

                break;

            default:

                break;

        }

    }

}

4.支付完成以后将transaction传给服务器,服务器请求苹果进行验证(为了安全起见最好验证,客户端验证不安全)

客户端拿到服务端返回的code值,支付完成。支付完成后要注销[[SKPaymentQueue defaultQueue] finishTransaction:transaction]

否则苹果不会认为此次支付完成。(验证成功与否,咱们都注销交易,否则会出现虚假凭证信息一直验证不通过..每次进程序都得输入苹果账号的情况

注:这是大概思路,内购坑多,后续填充。
0 0
原创粉丝点击