iap

来自于:官方立即使用

概述

iap模块封装了iOS系统应用内购买代码相关功能,使用模块之前需要先了解苹果应用内购买,并且在iTunes connect上面创建好商品。

getProducts

获取有效商品列表

getProducts({params}, callback(ret, err))

params

productIds:

  • 类型:字符串数组
  • 默认值:无
  • 描述:商品id列表

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    invalidProductIds:               //无效的商品id列表,字符串数组
    products:                       //有效商品列表,JSON数组
    [{
        productId:                   //商品id,字符串类型
        title:                       //商品标题,字符串类型
        description:               //商品描述,字符串类型
        price:                       //商品价格,数字类型
        formattedPrice:               //商品格式化后的价格,如¥6.00,字符串类型
        downloadable:               //是否有下载内容,布尔类型
        downloadContentLengths:       //下载内容长度,数字组成的数组
        downloadContentVersion:       //下载内容的版本,字符串类型
    }]
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg: ''    //错误描述
}

示例代码

var iap = api.require('iap');
iap.getProducts({
    productIds: [
        'com.apicloud.iap.free'
    ]
}, function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

补充说明

获取有效的商品

可用性

iOS系统

可提供的1.0.0及更高版本

purchase

购买商品

purchase({params}, callback(ret, err))

params

productId:

  • 类型:字符串
  • 默认值:无
  • 描述:有效的商品id

applicationUsername:

  • 类型:字符串
  • 默认值:无
  • 描述:(可选项)用户信息,购买的回调里面将会返回该字段。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    state:                      //交易状态,详见交易状态常量,数字类型
    productId:                  //商品id,字符串类型
    applicationUsername:      //用户信息,字符串类型
    transactionId:              //交易id,字符串类型
    originalTransactionId:      //原始交易id,只在state为恢复购买时有效,字符串类型
    receipt:                  //交易凭证,经过base64编码,用于验证交易是否合法和有效,避免因越狱破解内购后造成损失,只在state为购买成功时有效,字符串类型
    errorCode:                  //交易失败时的错误码,详见错误码常量,数字类型
    downloads:                  //有下载内容时的下载信息列表
    [{
        transactionId:          //下载内容所属交易id,字符串类型
        contentId:              //下载内容id,字符串类型
        downloadState:          //下载状态,详见下载状态常量,数字类型
        progress:              //下载进度,取值范围0~1,数字类型
        contentLength:          //文件内容大小,数字类型
        timeRemaining:          //下载剩余时间,-1时表示未知,数字类型
        contentVersion:          //下载内容的版本,字符串类型
        contentURL:              //下载成功后文件路径,字符串类型
        errorCode:              //下载失败时的错误码,数字类型
        errorMsg:              //下载失败时的错误描述,字符串类型
    }]
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg: ''         //其它错误,如参数错误、如当前用户不能使用应用内购买等
}

示例代码

var iap = api.require('iap');
iap.purchase({
    productId: 'com.company.app.productid'
}, function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

补充说明

可用性

iOS系统

可提供的1.0.0及更高版本

restoreTransactions

恢复用户以前购买过的所有商品交易

restoreTransactions(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    finished:                    //是否所有交易恢复完成,若未完成,则会有以下当前具体交易信息,布尔类型
    transaction:
    {
        state:                    //交易状态,详见交易状态常量,数字类型
        productId:                //商品id,字符串类型
        applicationUsername:    //用户信息,字符串类型
        transactionId:            //交易id,字符串类型
        originalTransactionId:    //原始交易id,只在state为恢复购买时有效,字符串类型
        receipt:                //交易凭证,经过base64编码,用于验证交易是否合法和有效,避免因越狱破解内购后造成损失,只在state为购买成功时有效,字符串类型
        downloads:                //有下载内容时的下载信息列表
        [{
            transactionId:        //下载内容所属交易id,字符串类型
            contentId:            //下载内容id,字符串类型
            downloadState:        //下载状态,详见下载状态常量,数字类型
            progress:            //下载进度,取值范围0~1,数字类型
            contentLength:        //文件内容大小,数字类型
            timeRemaining:        //下载剩余时间,-1时表示未知,数字类型
            contentVersion:        //下载内容的版本,字符串类型
            contentURL:            //下载成功后文件路径,字符串类型
            errorCode:            //下载失败时的错误码,数字类型
            errorMsg:            //下载失败时的错误描述,字符串类型
        }]
    }
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    errorCode:        //错误码,详见错误码常量
}

示例代码

var iap = api.require('iap');
iap.restoreTransactions(function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

补充说明

可用性

iOS系统

可提供的1.0.0及更高版本

setDownloadListener

设置下载监听,所有的下载进度通过此回调返回

setDownloadListener(callback(ret, err))

callBack(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    downloads:            //下载状态和进度变化的下载列表,JSON数组
    [{
        transactionId:    //下载内容所属交易id,字符串类型
        contentId:        //下载内容id,字符串类型
        downloadState:    //下载状态,详见下载状态常量,数字类型
        progress:        //下载进度,取值范围0~1,数字类型
        contentLength:    //文件内容大小,数字类型
        timeRemaining:    //下载剩余时间,-1时表示未知,数字类型
        contentVersion:    //下载内容的版本,字符串类型
        contentURL:        //下载成功后文件路径,字符串类型
        errorCode:        //下载失败时的错误码,数字类型
        errorMsg:        //下载失败时的错误描述,字符串类型
    }]
}

示例代码

var iap = api.require('iap');
iap.setDownloadListener(function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

补充说明

可用性

iOS系统

可提供的1.0.0及更高版本

startDownloads

开始下载

startDownloads({params})

params

contentIds:

  • 类型:字符串数组
  • 默认值:无
  • 描述:下载内容id组成的数组

示例代码

var iap = api.require('iap');
iap.startDownloads({
    contentIds: [
        '123'
    ]
});

补充说明

可用性

iOS系统

可提供的1.0.0及更高版本

pauseDownloads

暂停下载

pauseDownloads({params})

params

contentIds:

  • 类型:字符串数组
  • 默认值:无
  • 描述:下载内容id组成的数组

示例代码

var iap = api.require('iap');
iap.pauseDownloads({
    contentIds: [
        '123'
    ]
});

补充说明

可用性

iOS系统

可提供的1.0.0及更高版本

resumeDownloads

恢复下载

resumeDownloads({params})

params

contentIds:

  • 类型:字符串数组
  • 默认值:无
  • 描述:下载内容id组成的数组

示例代码

var iap = api.require('iap');
iap.resumeDownloads({
    contentIds: [
        '123'
    ]
});

补充说明

可用性

iOS系统

可提供的1.0.0及更高版本

cancelDownloads

取消下载

cancelDownloads({params})

params

contentIds:

  • 类型:字符串数组
  • 默认值:无
  • 描述:下载内容id组成的数组

示例代码

var iap = api.require('iap');
iap.cancelDownloads({
    contentIds: [
        '123'
    ]
});

补充说明

可用性

iOS系统

可提供的1.0.0及更高版本

错误码

应用内购买过程中的错误码。数字类型

取值范围:

  • 0 //未知错误
  • 1 //无效请求
  • 2 //用户取消购买
  • 3 //交易无效
  • 4 //设备不允许进行交易
  • 5 //不是有效商品

下载状态

下载状态。数字类型

取值范围:

  • 0 //等待下载
  • 1 //正在下载
  • 2 //暂停下载
  • 3 //下载完成
  • 4 //下载失败
  • 5 //取消下载

交易状态

交易状态。数字类型

取值范围:

  • 0 //已加入交易队列
  • 1 //交易完成
  • 2 //交易失败
  • 3 //恢复购买
  • 4 //交易等待被确认, iOS 8.0及以后有效