# [payment]() Payment模块管理支付功能,用于提供网页安全支付能力,支持通过Web接口进行支付操作。通过plus.payment可获取支付管理对象。 ### 方法: - [getChannels](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.getChannels): 获取支付通道 - [request](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.request): 请求支付操作 ### 对象: - [PaymentChannel](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentChannel): 支付通道对象 - [PaymentResult](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentResult): 支付操作结果对象 ### 回调方法: - [ChannelsSuccessCallback ](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.ChannelsSuccessCallback%20): 获取支付通道成功回调 - [PaymentSuccessCallback](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentSuccessCallback): 支付操作成功回调 - [PaymentErrorCallback](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentErrorCallback): 支付操作失败回调 ### 权限: permissions ~~~ "Payment": { "description": "访问支付插件" } ~~~ # [getChannels]() 获取支付通道 ~~~ void plus.payment.getChannels( successCB, errorCB ); ~~~ ### 说明: 在进行支付操作前需获取终端支持的支付通道列表,用于提示用户进行选择。获取支付通道成功后通过successCB回调返回支持的所有通道列表,获取支付通道列表失败则通过errorCB回调返回。 ### 参数: - successCB: *( [ChannelsSuccessCallback](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.ChannelsSuccessCallback) ) 必选 *获取支付通道成功回调函数 获取支付通道列表成功时的回调函数,用于返回终端支持的支付通道列表。 - errorCB: *( [PaymentErrorCallback](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentErrorCallback) ) 可选 *获取支付通道失败回调函数 获取支付通道列表失败时的回调函数,用于返回错误信息。 ### 返回值: void : 无 ### 示例: ~~~ <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>Payment Example</title> <script type="text/javascript"> var channels=null; // 监听plusready事件 document.addEventListener( "plusready", function(){ // 扩展API加载完毕,现在可以正常调用扩展API plus.payment.getChannels( function(s){ channels = s; }, function(e){ alert( "获取支付通道列表失败:"+e.message ); } ); }, false ); </script> </head> <body> </body> </html> ~~~ # [request]() 请求支付操作 ~~~ void plus.payment.request( channel, statement, successCB, errorCB ); ~~~ ### 说明:    调用指定的支付通道进行支付操作,其中statement包含支付操作的相关信息,支付模块将弹出支付界面供用户进行支付信息的输入确认操作。用户支付操作成功后通过successCB回调返回支付操作结果,支付操作失败则通过errorCB回调返回。 ### 参数: - channel: *( [PaymentChannel](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentChannel) ) 必选 *支付通道 指定支付操作的通道,通过getChannels接口获取。 - statement: *( DOMString | JSON ) 必选 *支付订单信息 支付订单信息,由支付通道定义的数据格式,通常是由业务服务器生成或向支付服务器获取,是经过加密的字符串信息。 - successCB: *( [PaymentSuccessCallback](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentSuccessCallback) ) 必选 *获取支付通道成功回调函数 获取支付通道列表成功时的回调函数,用于返回终端支持的支付通道列表。 - errorCB: *( [PaymentErrorCallback](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentErrorCallback) ) 可选 *获取支付通道失败回调函数 获取支付通道列表失败时的回调函数,用于返回错误信息。 ### 返回值: void : 无 ### 示例: ~~~ <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>Payment Example</title> <script type="text/javascript"> var channels=null; // 监听plusready事件 document.addEventListener( "plusready", function(){ // 扩展API加载完毕,现在可以正常调用扩展API plus.payment.getChannels( function(s){ channels = s; }, function(e){ alert( "获取支付通道列表失败:"+e.message ); } ); }, false ); // 请求支付操作 function requestPay( c ) { // 必须从业务服务器获取支付信息 var statement = "..."; plus.payment.request( c, statement, function(){ alert( "支付操作成功!" ); }, function(e){ alert( "支付失败:"+e.message ); } ); } </script> </head> <body> </body> </html> ~~~ # [PaymentChannel]() 支付通道对象 ~~~ interface plus.payment.PaymentChannel { attribute DOMString id; attribute DOMString description; attribute Boolean serviceReady; function void installService(); } ~~~ ### 说明: PaymentChannel对象表示特定的支付通道,用于向系统请求支付操作。 ### 属性: - [id](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentChannel.id): 支付通道标识 - [description](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentChannel.description): 支付通道描述 - [serviceReady](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentChannel.serviceReady): 支付通道服务是否安装 ### 方法: - [installService](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentChannel.installService): 安装支付通道依赖的服务 # [id]() 支付通道标识 ### 说明: DOMString 类型 只读属性 用于标识支付通道,如“alipay”表示支付宝、“tenpay”表示微信支付、“unionpay”表示银联支付。 # [description]() 支付通道描述 ### 说明: DOMString 类型 只读属性 支付通道的描述信息,如“支付宝”、“微信支付”、“银联”。 # [serviceReady]() 支付通道服务是否安装 ### 说明: Boolean 类型 只读属性 通常特定的支付通道依赖系统安装相关的服务,此属性用于标识其服务是否安装,如果没有安装则为false,否则为true。 如果系统没有安装相关的服务,则可能导致调用支付操作失败,这是需要调用installService方法进行安装。 ### 平台支持: - Android - 2.2+ (支持): 支付宝:如果已经安装“支付宝快捷支付服务”则返回true,否则返回false。 - iOS - 5.0+ (支持): 支付宝:无法判断是否安装“快捷支付”应用,固定返回true,在调用plus.payment.request请求支付操作时会自动提示。 # [installService]() 安装支付通道依赖的服务 ~~~ void pay.installService(); ~~~ ### 说明: 对于某些支付通道,通常特定的支付通道依赖系统安装相关的服务,调用此方法将安装其依赖的支付服务。如支付宝,则在系统中安装支付宝客户端程序。 ### 参数: 无 ### 返回值: void : 无 ### 平台支持: - Android - 2.2+ (支持): 支付宝:调用系统程序安装“支付宝快捷支付服务”。 - iOS - 5.0+ (支持): 支付宝:打开Appstore的“快捷支付”应用页面。 ### 示例: ~~~ <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>Payment Example</title> <script type="text/javascript"> var channels=null; // 监听plusready事件 document.addEventListener( "plusready", function(){ // 扩展API加载完毕,现在可以正常调用扩展API plus.payment.getChannels( function(s){ channels = s; }, function(e){ alert( "获取支付通道列表失败:"+e.message ); } ); }, false ); // 请求支付操作 function requestPay( c ) { // 必须从业务服务器获取支付信息 var statement = "..."; if ( !c.serviceReady ) { c.installService(); } plus.payment.request( c, statement, function(){ alert( "支付操作成功!" ); }, function(e){ alert( "支付失败:"+e.message ); } ); } </script> </head> <body> </body> </html> ~~~ # [PaymentResult]() 支付操作结果对象 ~~~ interface plus.payment.PaymentResult { attribute PaymentChannel channel; attribute DOMString tradeno; attribute DOMString description; attribute DOMString url; attribute DOMString signature; } ~~~ ### 说明: PaymentResult对象表示支付操作返回结果,用于确认支付操作成功。 ### 属性: - [channel](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentResult.channel): 支付通道对象 - [tradeno](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentResult.tradeno): 支付交易编号信息 - [description](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentResult.description): 交易描述信息 - [url](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentResult.url): 查找支付交易信息地址 - [signature](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentResult.signature): 支付操作指纹信息 # [channel]() 支付通道对象 ### 说明: [PaymentChannel](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentChannel) 类型 只读属性 用于发起支付操作的支付通道对象。 # [tradeno]() 支付交易编号信息 ### 说明: String 类型 只读属性 # [description]() 交易描述信息 ### 说明: Boolean 类型 只读属性 # [url]() 查找支付交易信息地址 ### 说明: Boolean 类型 只读属性 # [signature]() 支付操作指纹信息 ### 说明: String 类型 只读属性 用于向支付服务器查询支付订单信息。 # [ChannelsSuccessCallback ]() 获取支付通道成功回调 ~~~ void ChannelsSuccessCallback ( channels ) { // Get payment channels success code } ~~~ ### 说明: 当获取支付通道列表成功时的回调函数,用于返回终端支持的支付通道列表。 ### 参数: - channels: *( Array ) 必选 *数组,系统支持的支付通道PaymentChannel列表 ### 返回值: void : 无 # [PaymentSuccessCallback]() 支付操作成功回调 ~~~ void PaymentSuccessCallback ( result ) { // Payment success code } ~~~ ### 说明: 当支付操作成功时的回调函数,用于返回支付操作的成功信息。 ### 参数: - result : *( [PaymentResult](http://www.dcloud.io/docs/api/zh_cn/payment.shtml#plus.payment.PaymentResult) ) 必选 *支付操作成功的信息 ### 返回值: void : 无 # [PaymentErrorCallback]() 支付操作失败回调 ~~~ void PaymentErrorCallback( error ) { // Payment error code } ~~~ ### 说明: 当支付操作失败时的回调函数,用于返回支付操作失败的错误信息。 ### 参数: - error: *( DOMException ) 必选 *支付操作失败错误信息,可通过error.code获取错误代码 支付错误代码如下: 62000,客户端未安装支付通道依赖的服务; 62001,用户取消支付操作; 62002,此设备不支持支付; 62003,数据格式错误; 62004,支付账号状态错误; 62005,订单信息错误; 62006,支付操作内部错误; 62007,支付服务器错误; 62008,网络问题引起的错误; 62009,其它未定义的错误。 ### 返回值: void : 无