支付接口可使得网页开发人员能获取浏览器支持的支付渠道进行支付操作,而不需要安装额外的浏览器支付插件。 规范不定义支付渠道安全认证及支付操作通讯协议,由运行环境的支付模块根据支付服务器接入规范实现。

方法:

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

对象:

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

回调方法:

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

权限:

permissions

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#ffffff">{</span>
<span style="color:#87ceeb">// ...</span>
<span style="color:#ffa0a0">"permissions"</span><span style="color:#ffffff">:{</span><span style="color:#87ceeb">// ...</span><span style="color:#ffa0a0">"Payment"</span><span style="color:#ffffff">:</span> <span style="color:#ffffff">{</span><span style="color:#ffa0a0">"description"</span><span style="color:#ffffff">:</span> <span style="color:#ffa0a0">"支付"</span><span style="color:#ffffff">}</span>
<span style="color:#ffffff">}</span>
<span style="color:#ffffff">}</span></code></span></span>

getChannels

获取支付通道

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#ffffff">getChannels</span><span style="color:#ffffff">(</span><span style="color:#ffffff">successCB</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> errorCB</span><span style="color:#ffffff">);</span></code></span></span>

说明:

在进行支付操作前需获取终端支持的支付通道列表,用于提示用户进行选择。 获取支付通道成功后通过successCB回调返回支持的所有通道列表,获取支付通道列表失败则通过errorCB回调返回。

参数:

  • successCB: ( ChannelsSuccessCallback ) 必选 获取支付通道成功回调函数

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

  • errorCB: ( PaymentErrorCallback ) 可选 获取支付通道失败回调函数

    获取支付通道列表失败时的回调函数,用于返回错误信息。

返回值:

void : 无

平台支持:

  • Android - 2.2+ (支持)
  • iOS - 5.0+ (支持)

示例:

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span><span style="color:#f0e68c"><strong><head></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>name</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"viewport"</span> <span style="color:#bdb76b"><strong>content</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"initial-scale=1.0, maximum-scale=1.0, user-scalable=no"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">Payment Example</span><span style="color:#f0e68c"><strong></title></strong></span><span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> channels</span><span style="color:#ffffff">=</span><span style="color:#f0e68c"><strong>null</strong></span><span style="color:#ffffff">;</span>
<span style="color:#87ceeb">// 监听plusready事件  </span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(){</span><span style="color:#87ceeb">// 扩展API加载完毕,现在可以正常调用扩展API</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#ffffff">getChannels</span><span style="color:#ffffff">(</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">s</span><span style="color:#ffffff">){</span><span style="color:#ffffff">channels </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> s</span><span style="color:#ffffff">;</span><span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">alert</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"获取支付通道列表失败:"</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message </span><span style="color:#ffffff">);</span><span style="color:#ffffff">});</span>
<span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>false</strong></span> <span style="color:#ffffff">);</span><span style="color:#f0e68c"><strong></script></strong></span><span style="color:#f0e68c"><strong></head></strong></span><span style="color:#f0e68c"><strong><body></strong></span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span></code></span></span>

uni-app使用plus注意事项

request

请求支付操作

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#ffffff">request</span><span style="color:#ffffff">(</span><span style="color:#ffffff">channel</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> statement</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> successCB</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> errorCB</span><span style="color:#ffffff">);</span></code></span></span>

说明:

调用指定的支付通道进行支付操作,其中statement包含支付操作的相关信息,支付模块将弹出支付界面供用户进行支付信息的输入确认操作。 用户支付操作成功后通过successCB回调返回支付操作结果,支付操作失败则通过errorCB回调返回。

参数:

  • channel: ( PaymentChannel ) 必选 支付通道

    指定支付操作的通道,通过getChannels接口获取。

  • statement: ( String | JSON | OrderStatementIAP ) 必选 支付订单信息

    支付订单信息,由支付通道定义的数据格式,通常是由业务服务器生成或向支付服务器获取,是经过加密的字符串信息。

  • successCB: ( PaymentSuccessCallback | IapPaymentSuccessCallback ) 可选 请求支付成功回调函数

    请求支付成功时触发,用于返回支付结果。

  • errorCB: ( PaymentErrorCallback ) 可选 请求支付失败回调函数

    请求支付失败时触发,用于返回错误信息。

返回值:

void : 无

平台支持:

  • Android - 2.2+ (支持)
  • iOS - 5.0+ (支持)

示例:

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span><span style="color:#f0e68c"><strong><head></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>name</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"viewport"</span> <span style="color:#bdb76b"><strong>content</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"initial-scale=1.0, maximum-scale=1.0, user-scalable=no"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">Payment Example</span><span style="color:#f0e68c"><strong></title></strong></span><span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> channels</span><span style="color:#ffffff">=</span><span style="color:#f0e68c"><strong>null</strong></span><span style="color:#ffffff">;</span>
<span style="color:#87ceeb">// 监听plusready事件  </span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(){</span><span style="color:#87ceeb">// 扩展API加载完毕,现在可以正常调用扩展API</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#ffffff">getChannels</span><span style="color:#ffffff">(</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">s</span><span style="color:#ffffff">){</span><span style="color:#ffffff">channels </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> s</span><span style="color:#ffffff">;</span><span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"获取支付通道列表失败:"</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message</span><span style="color:#ffffff">);</span><span style="color:#ffffff">});</span>
<span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>false</strong></span> <span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 请求支付操作</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> requestPay</span><span style="color:#ffffff">(</span><span style="color:#ffffff">c</span><span style="color:#ffffff">){</span><span style="color:#87ceeb">// 必须从业务服务器获取支付信息</span><span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> statement </span><span style="color:#ffffff">=</span> <span style="color:#ffa0a0">"..."</span><span style="color:#ffffff">;</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#ffffff">request</span><span style="color:#ffffff">(</span><span style="color:#ffffff">c</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> statement</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(){</span><span style="color:#ffffff">alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"支付操作成功!"</span><span style="color:#ffffff">);</span><span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"支付失败:"</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message</span><span style="color:#ffffff">);</span><span style="color:#ffffff">}</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span><span style="color:#f0e68c"><strong></script></strong></span><span style="color:#f0e68c"><strong></head></strong></span><span style="color:#f0e68c"><strong><body></strong></span><span style="color:#f0e68c"><strong><button</strong></span> <span style="color:#bdb76b"><strong>onclick</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">requestPay</span><span style="color:#ffffff">(</span><span style="color:#ffffff">channels</span><span style="color:#ffffff">)</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">请求支付</span><span style="color:#f0e68c"><strong></button></strong></span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span></code></span></span>

uni-app使用plus注意事项

PaymentChannel

支付通道对象

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>interface</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#98fb98">PaymentChannel</span><span style="color:#ffffff">{</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> id</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> description</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">Boolean</span><span style="color:#ffffff"> serviceReady</span><span style="color:#ffffff">;</span><span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> installService</span><span style="color:#ffffff">();</span><span style="color:#87ceeb">// iOS iAP</span><span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> requestOrder</span><span style="color:#ffffff">(</span><span style="color:#ffffff">ids</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> successCB</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> errorCB</span><span style="color:#ffffff">);</span><span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> restoreComplateRequest</span><span style="color:#ffffff">(</span><span style="color:#ffffff">options</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> successCB</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

属性:

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

方法:

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

id

支付通道标识

说明:

String 类型 只读属性

用于标识支付通道: "alipay" - 表示支付宝; "wxpay" - 表示微信支付; "appleiap" - 表示苹果应用内支付; "qhpay" - 表示360聚合支付(仅360手助流应用环境下支持)。

平台支持:

  • Android - 2.2+ (支持)
  • iOS - 5.0+ (支持)

description

支付通道描述

说明:

String 类型 只读属性

支付通道的描述信息,如“支付宝”、“微信”、“In-App Purchase”。

平台支持:

  • Android - 2.2+ (支持)
  • iOS - 5.0+ (支持)

serviceReady

支付通道服务是否安装

说明:

Boolean 类型 只读属性

通常特定的支付通道依赖系统安装相关的服务,此属性用于标识其服务是否安装,如果没有安装则为false,否则为true。 若系统环境中没有安装相关的服务,则可能导致调用支付操作失败,这时可以调用installService方法进行安装。 注意:如果支付通道不需要依赖系统安装服务,则永远返回true。例如支付宝,如果设备上未安装支付宝客户端则调用Wap页面进行支付,因此值固定返回true; 而微信支付则依赖微信客户端,如果设备上未安装微信客户端则serviceReady值为false,此时应该提示用户安装微信客户端才能进行支付操作。

平台支持:

  • Android - 2.2+ (支持)
  • iOS - 5.0+ (支持)

installService

安装支付通道依赖的服务

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> pay</span><span style="color:#ffffff">.</span><span style="color:#ffffff">installService</span><span style="color:#ffffff">();</span></code></span></span>

说明:

对于某些支付通道,通常特定的支付通道依赖系统安装相关的服务,调用此方法将安装其依赖的支付服务。 如支付宝,则在系统中安装支付宝客户端程序。

参数:

返回值:

void : 无

平台支持:

  • Android - 2.2+ (支持) :

    支付宝:支付操作可不依赖系统环境服务,此方法不做任何操作。 当调用plus.payment.request请求支付操作时如果系统环境中已经安装“支付宝钱包”则会调用支付宝钱包进行支付,否则调用Webview窗口进行支付。

  • iOS - 5.0+ (支持) :

    支付宝:支付操作可不依赖系统环境服务,此方法不做任何操作。 当调用plus.payment.request请求支付操作时如果系统环境中已经安装“支付宝钱包”则会调用支付宝钱包进行支付,否则调用Webview窗口进行支付。

示例:

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span><span style="color:#f0e68c"><strong><head></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>name</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"viewport"</span> <span style="color:#bdb76b"><strong>content</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"initial-scale=1.0, maximum-scale=1.0, user-scalable=no"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">Payment Example</span><span style="color:#f0e68c"><strong></title></strong></span><span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> channels</span><span style="color:#ffffff">=</span><span style="color:#f0e68c"><strong>null</strong></span><span style="color:#ffffff">;</span>
<span style="color:#87ceeb">// 监听plusready事件  </span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(){</span><span style="color:#87ceeb">// 扩展API加载完毕,现在可以正常调用扩展API</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#ffffff">getChannels</span><span style="color:#ffffff">(</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">s</span><span style="color:#ffffff">){</span><span style="color:#ffffff">channels </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> s</span><span style="color:#ffffff">;</span><span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"获取支付通道列表失败:"</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message</span><span style="color:#ffffff">);</span><span style="color:#ffffff">});</span>
<span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>false</strong></span><span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 请求支付操作</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> requestPay</span><span style="color:#ffffff">(</span><span style="color:#ffffff">c</span><span style="color:#ffffff">){</span><span style="color:#87ceeb">// 必须从业务服务器获取支付信息</span><span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> statement </span><span style="color:#ffffff">=</span> <span style="color:#ffa0a0">"..."</span><span style="color:#ffffff">;</span><span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(!</span><span style="color:#ffffff">c</span><span style="color:#ffffff">.</span><span style="color:#ffffff">serviceReady</span><span style="color:#ffffff">){</span><span style="color:#ffffff">c</span><span style="color:#ffffff">.</span><span style="color:#ffffff">installService</span><span style="color:#ffffff">();</span><span style="color:#ffffff">}</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#ffffff">request</span><span style="color:#ffffff">(</span><span style="color:#ffffff">c</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> statement</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(){</span><span style="color:#ffffff">alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"支付操作成功!"</span><span style="color:#ffffff">);</span><span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"支付失败:"</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message</span><span style="color:#ffffff">);</span><span style="color:#ffffff">}</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span><span style="color:#f0e68c"><strong></script></strong></span><span style="color:#f0e68c"><strong></head></strong></span><span style="color:#f0e68c"><strong><body></strong></span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span></code></span></span>

uni-app使用plus注意事项

requestOrder

向IAP服务器请求支付订单

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> pay</span><span style="color:#ffffff">.</span><span style="color:#ffffff">requestOrder</span><span style="color:#ffffff">(</span><span style="color:#ffffff">ids</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> successCB</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> errorCB</span><span style="color:#ffffff">);</span></code></span></span>

说明:

IAP支付在调用plus.payment.request方法支付前须先向服务器请求获取商品的详细信息,否则会支付失败。

参数:

  • ids: ( Array[String] ) 必选 请求商品的标识
  • successCB: ( IapRequestOrderSuccessCallback ) 必选 请求成功回调
  • errorCB: ( PaymentErrorCallback ) 必选 请求失败回调

返回值:

void : 无

平台支持:

  • Android - 2.2+ (不支持)
  • iOS - 5.0+ (支持) :

    仅苹果应用内支付(IAP)支持:需在itunesconnect上添加商品并配置好才能请求成功。

示例:

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span><span style="color:#f0e68c"><strong><head></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>name</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"viewport"</span> <span style="color:#bdb76b"><strong>content</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"initial-scale=1.0, maximum-scale=1.0, user-scalable=no"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>name</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"HandheldFriendly"</span> <span style="color:#bdb76b"><strong>content</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"true"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>name</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"MobileOptimized"</span> <span style="color:#bdb76b"><strong>content</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"320"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">In-App Purchase</span><span style="color:#f0e68c"><strong></title></strong></span><span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span> <span style="color:#bdb76b"><strong>src</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"../js/common.js"</span><span style="color:#f0e68c"><strong>></script></strong></span><span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> iap</span><span style="color:#ffffff">=</span><span style="color:#f0e68c"><strong>null</strong></span><span style="color:#ffffff">;</span>
<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> ids</span><span style="color:#ffffff">=[</span><span style="color:#ffa0a0">'donation'</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">'donation6'</span><span style="color:#ffffff">];</span><span style="color:#87ceeb">//应用内购项目</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> plusReady</span><span style="color:#ffffff">(){</span><span style="color:#87ceeb">// 获取支付通道</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#ffffff">getChannels</span><span style="color:#ffffff">(</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">channels</span><span style="color:#ffffff">){</span><span style="color:#f0e68c"><strong>for</strong></span><span style="color:#ffffff">(</span><span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> i in channels</span><span style="color:#ffffff">){</span><span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> channel</span><span style="color:#ffffff">=</span><span style="color:#ffffff">channels</span><span style="color:#ffffff">[</span><span style="color:#ffffff">i</span><span style="color:#ffffff">];</span><span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">channel</span><span style="color:#ffffff">.</span><span style="color:#ffffff">id</span><span style="color:#ffffff">===</span><span style="color:#ffa0a0">'appleiap'</span><span style="color:#ffffff">){</span><span style="color:#ffffff">iap</span><span style="color:#ffffff">=</span><span style="color:#ffffff">channel</span><span style="color:#ffffff">;</span><span style="color:#ffffff">}</span><span style="color:#ffffff">}</span><span style="color:#ffffff">requestOrder</span><span style="color:#ffffff">();</span><span style="color:#ffffff">},</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"获取支付通道失败:"</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message</span><span style="color:#ffffff">);</span><span style="color:#ffffff">});</span>
<span style="color:#ffffff">}</span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'plusready'</span><span style="color:#ffffff">,</span><span style="color:#ffffff">plusReady</span><span style="color:#ffffff">,</span><span style="color:#f0e68c"><strong>false</strong></span><span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 获取订单</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> requestOrder</span><span style="color:#ffffff">(){</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">showWaiting</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'检测支付环境...'</span><span style="color:#ffffff">);</span><span style="color:#ffffff">iap</span><span style="color:#ffffff">.</span><span style="color:#ffffff">requestOrder</span><span style="color:#ffffff">(</span><span style="color:#ffffff">ids</span><span style="color:#ffffff">,</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">closeWaiting</span><span style="color:#ffffff">();</span><span style="color:#ffffff">console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'requestOrder success: '</span><span style="color:#ffffff">+</span><span style="color:#ffffff">JSON</span><span style="color:#ffffff">.</span><span style="color:#ffffff">stringify</span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">));</span><span style="color:#ffffff">},</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'requestOrder failed: '</span><span style="color:#ffffff">+</span><span style="color:#ffffff">JSON</span><span style="color:#ffffff">.</span><span style="color:#ffffff">stringify</span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">));</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">closeWaiting</span><span style="color:#ffffff">();</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">confirm</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"错误信息:"</span><span style="color:#ffffff">+</span><span style="color:#ffffff">JSON</span><span style="color:#ffffff">.</span><span style="color:#ffffff">stringify</span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">),</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">index</span><span style="color:#ffffff">==</span><span style="color:#cd5c5c">0</span><span style="color:#ffffff">){</span><span style="color:#ffffff">requestOrder</span><span style="color:#ffffff">();</span><span style="color:#ffffff">}</span><span style="color:#f0e68c"><strong>else</strong></span><span style="color:#ffffff">{</span><span style="color:#ffffff">back</span><span style="color:#ffffff">();</span><span style="color:#ffffff">}</span><span style="color:#ffffff">},</span> <span style="color:#ffa0a0">'重新请求支付'</span><span style="color:#ffffff">,[</span><span style="color:#ffa0a0">'确定'</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">'取消'</span><span style="color:#ffffff">]);</span><span style="color:#ffffff">});</span>
<span style="color:#ffffff">}</span>
<span style="color:#87ceeb">// 支付</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> pay</span><span style="color:#ffffff">(</span><span style="color:#ffffff">id</span><span style="color:#ffffff">){</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">showWaiting</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">''</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">style</span><span style="color:#ffffff">:</span><span style="color:#ffa0a0">"black"</span><span style="color:#ffffff">,</span><span style="color:#ffffff">background</span><span style="color:#ffffff">:</span><span style="color:#ffa0a0">"rgba(0,0,0,0)"</span><span style="color:#ffffff">});</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#ffffff">request</span><span style="color:#ffffff">(</span><span style="color:#ffffff">iap</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">productid</span><span style="color:#ffffff">:</span><span style="color:#ffffff">id</span><span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">result</span><span style="color:#ffffff">){</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">closeWaiting</span><span style="color:#ffffff">();</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"支付成功:感谢你的支持,我们会继续努力完善产品。"</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(){</span><span style="color:#ffffff">back</span><span style="color:#ffffff">();</span><span style="color:#ffffff">},</span> <span style="color:#ffa0a0">"捐赠"</span><span style="color:#ffffff">);</span><span style="color:#ffffff">},</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">closeWaiting</span><span style="color:#ffffff">();</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"错误信息:"</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message</span><span style="color:#ffffff">,</span><span style="color:#f0e68c"><strong>null</strong></span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"支付失败:"</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">code</span><span style="color:#ffffff">);</span><span style="color:#ffffff">});</span>
<span style="color:#ffffff">}</span><span style="color:#f0e68c"><strong></script></strong></span><span style="color:#f0e68c"><strong><link</strong></span> <span style="color:#bdb76b"><strong>rel</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"stylesheet"</span> <span style="color:#bdb76b"><strong>href</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"../css/common.css"</span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/css"</span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong></head></strong></span><span style="color:#f0e68c"><strong><body></strong></span><span style="color:#f0e68c"><strong><header</strong></span> <span style="color:#bdb76b"><strong>id</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"header"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#f0e68c"><strong><div</strong></span> <span style="color:#bdb76b"><strong>class</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"nvbt iback"</span> <span style="color:#bdb76b"><strong>onclick</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">back</span><span style="color:#ffffff">()</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></div></strong></span><span style="color:#f0e68c"><strong><div</strong></span> <span style="color:#bdb76b"><strong>class</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"nvtt"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">In-App Purchase</span><span style="color:#f0e68c"><strong></div></strong></span><span style="color:#f0e68c"><strong></header></strong></span><span style="color:#f0e68c"><strong><div</strong></span> <span style="color:#bdb76b"><strong>id</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"content"</span> <span style="color:#bdb76b"><strong>class</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"content"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#f0e68c"><strong><br/><br/></strong></span><span style="color:#f0e68c"><strong><p</strong></span> <span style="color:#bdb76b"><strong>class</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"des"</span> <span style="color:#bdb76b"><strong>style</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">font</span><span style="color:#ffffff">-</span><span style="color:#ffffff">size</span><span style="color:#ffffff">:</span><span style="color:#cd5c5c">16px</span><span style="color:#ffffff">;</span><span style="color:#ffffff">line</span><span style="color:#ffffff">-</span><span style="color:#ffffff">height</span><span style="color:#ffffff">:</span><span style="color:#cd5c5c">30px</span><span style="color:#ffffff">;</span><span style="color:#ffffff">margin</span><span style="color:#ffffff">:</span> <span style="color:#cd5c5c">0px</span> <span style="color:#ffffff">.</span><span style="color:#cd5c5c">5em</span><span style="color:#ffffff">;</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">
DCloud 是W3C会员、中国HTML5产业联盟发起单位,致力于推进HTML5发展,构建HTML5生态。</span><span style="color:#f0e68c"><strong></p></strong></span><span style="color:#f0e68c"><strong><br/></strong></span><span style="color:#f0e68c"><strong><strong></strong></span><span style="color:#ffffff">
支持HTML5开发工具HBuilder</span><span style="color:#f0e68c"><strong></strong></strong></span><span style="color:#f0e68c"><strong><div</strong></span> <span style="color:#bdb76b"><strong>class</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"button"</span> <span style="color:#bdb76b"><strong>onclick</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">pay</span><span style="color:#ffffff">(</span><span style="color:#ffffff">ids</span><span style="color:#ffffff">[</span><span style="color:#cd5c5c">0</span><span style="color:#ffffff">])</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">捐赠1元</span><span style="color:#f0e68c"><strong></div></strong></span><span style="color:#f0e68c"><strong><div</strong></span> <span style="color:#bdb76b"><strong>class</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"button"</span> <span style="color:#bdb76b"><strong>onclick</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">pay</span><span style="color:#ffffff">(</span><span style="color:#ffffff">ids</span><span style="color:#ffffff">[</span><span style="color:#cd5c5c">1</span><span style="color:#ffffff">])</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">捐赠6元</span><span style="color:#f0e68c"><strong></div></strong></span><span style="color:#f0e68c"><strong></div></strong></span><span style="color:#f0e68c"><strong></body></strong></span><span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span> <span style="color:#bdb76b"><strong>src</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"../js/immersed.js"</span> <span style="color:#f0e68c"><strong>></script></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span></code></span></span>

uni-app使用plus注意事项

restoreComplateRequest

向IAP服务器请求已经购买的非消耗性商品和订阅商品

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> pay</span><span style="color:#ffffff">.</span><span style="color:#ffffff">restoreComplateRequest</span><span style="color:#ffffff">(</span><span style="color:#ffffff">options</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> successCB</span><span style="color:#ffffff">);</span></code></span></span>

说明:

注意:不能获取已购买的消耗性商品。

参数:

  • options: ( Object ) 必选 请求参数

    支持属性:"username"用户名称,可选项,请求支付时设置的username值。

  • successCB: ( IapRestoreComplateRequestCallback ) 必选 请求成功回调

返回值:

void : 无

平台支持:

  • Android - 2.2+ (不支持)
  • iOS - 5.0+ (支持) :

    仅苹果应用内支付(IAP)支持。

示例:

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span><span style="color:#f0e68c"><strong><head></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>name</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"viewport"</span> <span style="color:#bdb76b"><strong>content</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"initial-scale=1.0, maximum-scale=1.0, user-scalable=no"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>name</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"HandheldFriendly"</span> <span style="color:#bdb76b"><strong>content</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"true"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>name</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"MobileOptimized"</span> <span style="color:#bdb76b"><strong>content</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"320"</span><span style="color:#f0e68c"><strong>/></strong></span><span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">In-App Purchase</span><span style="color:#f0e68c"><strong></title></strong></span><span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> iap</span><span style="color:#ffffff">=</span><span style="color:#f0e68c"><strong>null</strong></span><span style="color:#ffffff">;</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> plusReady</span><span style="color:#ffffff">(){</span><span style="color:#87ceeb">// 获取支付通道</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#ffffff">getChannels</span><span style="color:#ffffff">(</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">channels</span><span style="color:#ffffff">){</span><span style="color:#f0e68c"><strong>for</strong></span><span style="color:#ffffff">(</span><span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> i in channels</span><span style="color:#ffffff">){</span><span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> channel</span><span style="color:#ffffff">=</span><span style="color:#ffffff">channels</span><span style="color:#ffffff">[</span><span style="color:#ffffff">i</span><span style="color:#ffffff">];</span><span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">channel</span><span style="color:#ffffff">.</span><span style="color:#ffffff">id</span><span style="color:#ffffff">===</span><span style="color:#ffa0a0">'appleiap'</span><span style="color:#ffffff">){</span><span style="color:#ffffff">iap</span><span style="color:#ffffff">=</span><span style="color:#ffffff">channel</span><span style="color:#ffffff">;</span><span style="color:#ffffff">}</span><span style="color:#ffffff">}</span><span style="color:#ffffff">},</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"获取支付通道失败:"</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message</span><span style="color:#ffffff">);</span><span style="color:#ffffff">});</span>
<span style="color:#ffffff">}</span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'plusready'</span><span style="color:#ffffff">,</span><span style="color:#ffffff">plusReady</span><span style="color:#ffffff">,</span><span style="color:#f0e68c"><strong>false</strong></span><span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 获取已购买商品(非消耗性商品和订阅商品)</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> restoreComplateRequest</span><span style="color:#ffffff">(){</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">showWaiting</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">''</span><span style="color:#ffffff">,{</span><span style="color:#ffffff">style</span><span style="color:#ffffff">:</span><span style="color:#ffa0a0">"black"</span><span style="color:#ffffff">,</span><span style="color:#ffffff">background</span><span style="color:#ffffff">:</span><span style="color:#ffa0a0">"rgba(0,0,0,0)"</span><span style="color:#ffffff">});</span><span style="color:#ffffff">iap</span><span style="color:#ffffff">.</span><span style="color:#ffffff">restoreComplateRequest</span><span style="color:#ffffff">({},</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">results</span><span style="color:#ffffff">){</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">nativeUI</span><span style="color:#ffffff">.</span><span style="color:#ffffff">closeWaiting</span><span style="color:#ffffff">();</span><span style="color:#f0e68c"><strong>for</strong></span><span style="color:#ffffff">(</span><span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> i in results</span><span style="color:#ffffff">){</span><span style="color:#ffffff">alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'restoreComplateRequest['</span><span style="color:#ffffff">+</span><span style="color:#ffffff">i</span><span style="color:#ffffff">+</span><span style="color:#ffa0a0">']: '</span><span style="color:#ffffff">+</span><span style="color:#ffffff">JSON</span><span style="color:#ffffff">.</span><span style="color:#ffffff">stringify</span><span style="color:#ffffff">(</span><span style="color:#ffffff">results</span><span style="color:#ffffff">[</span><span style="color:#ffffff">i</span><span style="color:#ffffff">]));</span><span style="color:#ffffff">}</span><span style="color:#ffffff">});</span>
<span style="color:#ffffff">}</span><span style="color:#f0e68c"><strong></script></strong></span><span style="color:#f0e68c"><strong></head></strong></span><span style="color:#f0e68c"><strong><body></strong></span><span style="color:#f0e68c"><strong><button</strong></span> <span style="color:#bdb76b"><strong>onclick</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"</span><span style="color:#ffffff">restoreComplateRequest</span><span style="color:#ffffff">()</span><span style="color:#ffa0a0">"</span><span style="color:#f0e68c"><strong>></strong></span><span style="color:#ffffff">获取已购买商品</span><span style="color:#f0e68c"><strong></button></strong></span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span></code></span></span>

uni-app使用plus注意事项

OrderStatementIAP

IAP订单数据对象

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>interface</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#98fb98">OrderStatementIAP</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> productid</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> username</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> quantity</span><span style="color:#ffffff">;</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

属性:

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

PaymentResult

支付操作结果对象

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>interface</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#98fb98">PaymentResult</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">PaymentChannel</span><span style="color:#ffffff"> channel</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> tradeno</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> description</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> url</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> signature</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> rawdata</span><span style="color:#ffffff">;</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

属性:

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

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

    平台支持

    • Android - 2.2+ (支持)
    • iOS - 5.0+ (支持)
  • tradeno: (String 类型 )交易编号信息

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

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

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

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

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

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

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

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

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

IAPProduct

IAP商品对象

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>interface</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#98fb98">IAPProduct</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> productid</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> price</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> title</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> description</span><span style="color:#ffffff">;</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

属性:

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

IAPProductInfo

购买IAP商品对象

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>interface</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#98fb98">IAPProductInfo</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> productIdentifier</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> quantity</span><span style="color:#ffffff">;</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

属性:

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

IAPTransaction

购买IAP商品交易信息对象

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>interface</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">payment</span><span style="color:#ffffff">.</span><span style="color:#98fb98">IAPTransaction</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">IAPProductInfo</span><span style="color:#ffffff"> payment</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> transactionDate</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> transactionIdentifier</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> transactionReceipt</span><span style="color:#ffffff">;</span><span style="color:#ffffff">attribute </span><span style="color:#98fb98">String</span><span style="color:#ffffff"> transactionState</span><span style="color:#ffffff">;</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

属性:

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

    base64编码格式字符串数据。

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

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

ChannelsSuccessCallback

获取支付通道成功回调

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span> <span style="color:#98fb98">ChannelsSuccessCallback</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> channels </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#87ceeb">// Get payment channels success code</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

参数:

  • channels: ( Array[PaymentChannel] ) 必选 数组,系统支持的支付通道PaymentChannel列表

返回值:

void : 无

平台支持:

  • Android - 2.2+ (支持)
  • iOS - 5.0+ (支持)

IapRequestOrderSuccessCallback

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

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> onsuccess</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> results </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#87ceeb">// Payment success code</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

参数:

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

返回值:

void : 无

平台支持:

  • Android - 2.2+ (不支持)
  • iOS - 5.0+ (支持)

IapRestoreComplateRequestCallback

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

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> onsuccess</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> results </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#87ceeb">// Payment success code</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

参数:

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

返回值:

void : 无

平台支持:

  • Android - 2.2+ (不支持)
  • iOS - 5.0+ (支持)

IapPaymentSuccessCallback

IAP支付操作成功回调

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span> <span style="color:#98fb98">PaymentSuccessCallback</span> <span style="color:#ffffff">(</span><span style="color:#ffffff"> result </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#87ceeb">// Payment success code</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

参数:

  • result : ( IAPTransaction ) 必选 支付操作成功的信息

    苹果IAP支付返回的数据,类型为IAPTransaction。

返回值:

void : 无

平台支持:

  • Android - 2.2+ (不支持)
  • iOS - 5.0+ (支持)

PaymentSuccessCallback

支付操作成功回调

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span> <span style="color:#98fb98">PaymentSuccessCallback</span> <span style="color:#ffffff">(</span><span style="color:#ffffff"> result </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#87ceeb">// Payment success code</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

参数:

  • result : ( PaymentResult ) 必选 支付操作成功的信息

    支付返回的数据,类型为PaymentResult。

返回值:

void : 无

平台支持:

  • Android - 2.2+ (支持)
  • iOS - 5.0+ (支持)

PaymentErrorCallback

支付操作失败回调

<span style="color:#474747"><span style="background-color:#333333"><code>
<span style="color:#f0e68c"><strong>void</strong></span> <span style="color:#98fb98">PaymentErrorCallback</span><span style="color:#ffffff">(</span><span style="color:#ffffff">error</span><span style="color:#ffffff">){</span><span style="color:#87ceeb">// Payment error code</span>
<span style="color:#ffffff">}</span></code></span></span>

说明:

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

参数:

  • error: ( Exception ) 必选 支付操作失败错误信息,可通过error.code获取错误代码,具体错误码有各支付通道定义

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

返回值:

void : 无

平台支持:

  • Android - 2.2+ (支持)
  • iOS - 5.0+ (支持)

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

  1. uni-app - 最详细 H5 网页接入微信支付功能,提供从详细的示例代码与注释(移动端网页实现微信支付能力,微信公众号前端支付 JSAPI / JS-SDK 详细示例源码)官方最新超级详细教程

    前言 关于 uni-app 项目中接入微信支付的文章鱼龙混杂,各种 JSAPI / JS-SDK 乱代码.过时.没注释.不讲流程原理,非常难用. 本文实现了 uni-app H5 移动端网页项目,实现 ...

  2. 微信公众号开发,微信支付功能开发(网页JSAPI调用)

    1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...

  3. 微信小程序如何实现支付功能?看官方文档头疼(使用云函数的方式操作)

    先来个效果图  ^_^ 微信支付功能,个人公众号是没有办法进行开发支付功能的,需要是使用非个人公众号进行注册(如:营业执照等,可以去淘宝购买一个也行 大概500左右) 公众平台的配置可以参考文档,这里 ...

  4. android nfc 支付功能,PayPal宣布新版Android APP将支持NFC支付功能

    据外媒报道,在巴塞罗那召开的世界移动通信大会(MWC)上,在线支付巨头宣布在即将到来的PayPal安卓新版本APP将支付NFC支付功能. 从2014年8月份开始,1800万的消费者都选择使用PayPa ...

  5. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增模块管理界面导出功能(可按条件导出)...

    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增模块管理界面导出功能(可按条件导出) 导出功能在很多应用场景中都需要,RDIFramework.NET V3 ...

  6. 微信服务号及支付功能接入详解

    本文同步至个人博客 微信服务号及支付功能接入详解,转载请注明出处 最近在实现微信服务号支付功能,这边对接入商户资料审核及接口接入相关内容进行梳理. 旨在理清相关帐号的申请流程.整理服务开通.开发数据的 ...

  7. Stripe 银行卡支付功能初步指南(Java)

    Stripe 国外银行卡支付功能指南(Java) 简介 编写这篇文章的目的就是~~没有什么目的.网上关于stripe银行卡支付代码很多,有写得很好的,但是太多太杂了,不系统.所以我就结合项目中实际应用 ...

  8. 微信小程序支付功能用服务器吗,微信小程序 支付功能 服务器端(TP5.1)实现...

    首先下载微信支付SDK ,将整个目录的文件放在 /application/extend/WxPay 目录下 在使用SDK之前我们需要对 WxPay.Config.php 进行配置 namespace ...

  9. 小程序商家如何开通云闪付支付功能

    近日,腾讯宣布微信支付支持全量商家小程序场景开通云闪付功能.微信支付实现与云闪付的在小程序支付场景的互联互通,无论是对于小程序商家还是用户而言,都让我们的体验变得更加便捷.那么云闪付支付功能可以满足哪 ...

最新文章

  1. Python 安装 xlsx模块
  2. 无数学不华为?人工智能时代的数学家还将走得更远
  3. mysql自增长2个增加_mysql – 添加第二个自动增量字段并允许重复
  4. KVM — Overview
  5. python简单代码编写-新手写Python,8招让你的代码更简洁更Pythonic!
  6. php 判断PC 还是 telphone 访问网站
  7. 福音!微信个人公众号可以改名了!
  8. 1024程序员节来啦!!.NET技术圈独家优惠劵,折后再折,赶紧来抢啊
  9. LeetCode MySQL刷题——day1
  10. TDengine C/C++ Connector
  11. Python基本语法(快速入门)
  12. win7装xp双系统_9102年还用XP是怎样的体验?告诉你XP凉得有多透
  13. Ognl表达式的一些用法
  14. fpga学习——zynq图像处理中的DVP流接口封装
  15. 【黑灰产犯罪研究】网络水军
  16. es routing 简介
  17. Pytorch学习记录(七):自定义模型 Auto-Encoders 使用numpy实现BP神经网络
  18. SSL,HTTPS,数字证书 是什么?
  19. 沙漠求生十五选五实验
  20. pycharm查找替换快捷键

热门文章

  1. 【天下贰】最新最全聊天色系百科表
  2. TCO 节省高达 40% ,新疆农信以天合翔宇实现生产级信创场景建设
  3. LINUX day3
  4. 网页文档的复制与下载
  5. type=text/javascript
  6. 如何快速开始bg-admin这套框架
  7. aws sqs java_AWS SQS Java.并非所有消息都从SQS队列中检索
  8. Less预处理——混合方法
  9. excel 成绩排名(相同的成绩,拥有相同的名次)
  10. 黑盒测试方法—因果图法