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