# payment

Payment模块管理支付功能，用于提供网页安全支付能力，支持通过Web接口进行支付操作。通过plus.payment可获取支付管理对象。

## 方法：

- getChannels: 获取支付通道
- request: 请求支付操作

## 对象：

- PaymentChannel: 支付通道对象
- OrderStatementIAP: IAP订单数据对象
- PaymentResult: 支付操作结果对象
- IAPProduct: IAP商品对象
- IAPProductInfo: 购买IAP商品对象
- IAPTransaction: 购买IAP商品交易信息对象

## 回调方法：

- ChannelsSuccessCallback: 获取支付通道成功回调
- IapRequestOrderSuccessCallback: 请求支付商品列表回调方法
- IapRestoreComplateRequestCallback: 请求已经购买的非消耗性商品和订阅商品回调方法
- PaymentSuccessCallback: 支付操作成功回调
- PaymentErrorCallback: 支付操作失败回调

## 权限：

permissions

    {
    // ...
    "permissions":{
    	// ...
    	"Payment": {
    		"description": "支付"
    	}
    }
    }

# PaymentChannel

支付通道对象

    interface plus.payment.PaymentChannel{
    	attribute String id;
    	attribute String description;
    	attribute Boolean serviceReady;
    	function void installService();

    	// iOS iAP
    	function void requestOrder(ids, successCB, errorCB);
    	function void restoreComplateRequest(options, successCB);
    }

## 说明：

PaymentChannel对象表示特定的支付通道，用于向系统请求支付操作。

## 属性：

- id: 支付通道标识
- description: 支付通道描述
- serviceReady: 支付通道服务是否安装

## 方法：

- installService: 安装支付通道依赖的服务
- requestOrder: 向IAP服务器请求支付订单
- restoreComplateRequest: 向IAP服务器请求已经购买的非消耗性商品和订阅商品

# OrderStatementIAP

IAP订单数据对象

    interface plus.payment.OrderStatementIAP {
    	attribute String productid;
    	attribute String username;
    	attribute String quantity;
    }

## 说明：

描述IAP商品订单信息，如标识、数量等。

## 属性：

- productid: (String 类型 )商品的标识
- username: (String 类型 )购买用户名称
- quantity: (String 类型 )商品数量

# PaymentResult

支付操作结果对象

    interface plus.payment.PaymentResult {
    	attribute PaymentChannel channel;
    	attribute String tradeno;
    	attribute String description;
    	attribute String url;
    	attribute String signature;
    	attribute String rawdata;
    }

## 说明：

PaymentResult对象表示支付操作返回结果，用于确认支付操作成功。

## 属性：

- channel: (PaymentChannel 类型 )支付通道对象

  用于发起支付操作的支付通道对象。

- tradeno: (String 类型 )交易编号信息

  如果支付平台不支持此数据则返回undefined。

- description: (Boolean 类型 )交易描述信息

  如果支付平台不支持此数据则返回undefined。

- url: (Boolean 类型 )查找支付交易信息地址

  用于向支付平台查询交易信息，如果支付平台不支持此数据则返回undefined。

- signature: (String 类型 )支付操作指纹信息

  用于向支付平台查询支付订单信息，如果支付平台不支持此数据则返回undefined。

- rawdata: (String 类型 )支付平台返回的原始数据

  如果支付平台返回key-value类型字符串，则组合成符合JSON格式的字符串。

# IAPProduct

IAP商品对象

    interface plus.payment.IAPProduct {
    	attribute String productid;
    	attribute String price;
    	attribute String title;
    	attribute String description;
    }

## 说明：

描述IAP商品详细信息，如标识、价格、标题、描述信息等。

## 属性：

- productid: (String 类型 )商品的标识
- price: (String 类型 )商品的价格
- title: (String 类型 )商品标题
- description: (String 类型 )商品的描述信息

# IAPProductInfo

购买IAP商品对象

    interface plus.payment.IAPProductInfo {
    	attribute String productIdentifier;
    	attribute String quantity;
    }

## 说明：

描述购买的IAP商品详细信息，如标识、数量等。

## 属性：

- productIdentifier: (String 类型 )商品的标识
- quantity: (String 类型 )商品的数量

# IAPTransaction

购买IAP商品交易信息对象

    interface plus.payment.IAPTransaction {
        attribute IAPProductInfo payment;
        attribute String transactionDate;
        attribute String transactionIdentifier;
        attribute String transactionReceipt;
        attribute String transactionState;
    }

## 说明：

描述购买的IAP商品交易详细信息，如购买商品信息、交易日期、订单标识等。

## 属性：

- payment: (String 类型 )购买商品的信息
- transactionDate: (String 类型 )购买商品的交易日期
- transactionIdentifier: (String 类型 )购买商品的交易订单标识
- transactionReceipt: (String 类型 )购买商品的交易收据

  base64编码格式字符串数据。

- transactionState: (String 类型 )购买商品的交易状态

  可取值："1"为支付成功；"2"为支付失败；"3"为支付已恢复。

# ChannelsSuccessCallback

获取支付通道成功回调

    void ChannelsSuccessCallback( channels ) {
    	// Get payment channels success code
    }

## 说明：

当获取支付通道列表成功时的回调函数，用于返回终端支持的支付通道列表。

## 参数：

- channels: ( Array ) 必选 数组，系统支持的支付通道PaymentChannel列表

## 返回值：

void : 无

# IapRequestOrderSuccessCallback

请求支付商品列表回调方法

    void onsuccess( results ) {
    	// Payment success code
    }

## 说明：

获取IAP商品列表信息成功时的回调函数，返回商品详细信息。

## 参数：

- results: ( Array[ IAPProduct ] ) 必选 商品信息数据

## 返回值：

void : 无

# IapRestoreComplateRequestCallback

请求已经购买的非消耗性商品和订阅商品回调方法

    void onsuccess( results ) {
    	// Payment success code
    }

## 说明：

获取IAP商品列表信息成功时的回调函数，返回商品详细信息。

## 参数：

- results: ( Array[ IAPTransaction ] ) 必选 已购买的非消耗性商品和订阅商品交易信息

## 返回值：

void : 无

# PaymentSuccessCallback

支付操作成功回调

    void PaymentSuccessCallback ( result ) {
    	// Payment success code
    }

## 说明：

当支付操作成功时的回调函数，用于返回支付操作的成功信息。

## 参数：

- result : ( PaymentResult | IAPTransaction ) 必选 支付操作成功的信息
  iOS平台使用IAP支付返回的数据类型为IAPTransaction。

## 返回值：

void : 无

# PaymentErrorCallback

支付操作失败回调

    void PaymentErrorCallback(error){
    	// Payment error code
    }

## 说明：

当支付操作失败时的回调函数，用于返回支付操作失败的错误信息。

## 参数：

- error: ( DOMException ) 必选 支付操作失败错误信息，可通过error.code获取错误代码，具体错误码有各支付通道定义
  支付宝支付错误代码如下： 62000，客户端未安装支付通道依赖的服务； 62001，用户取消支付操作； 62002，此设备不支持支付； 62003，数据格式错误； 62004，支付账号状态错误； 62005，订单信息错误； 62006，支付操作内部错误； 62007，支付服务器错误； 62008，网络问题引起的错误； 62009，其它未定义的错误。 微信支付错误代码如下： -1，一般错误； -2，用户取消； -3，发送失败； -4，认证被否决； -5，不支持错误。

## 返回值：

void : 无