payment
Payment模块管理支付功能,用于提供网页安全支付能力,支持通过Web接口进行支付操作。通过plus.payment可获取支付管理对象。
方法:
- getChannels: 获取支付通道
- request: 请求支付操作
对象:
- PaymentChannel: 支付通道对象
- OrderStatementIAP: IAP订单数据对象
- PaymentResult: 支付操作结果对象
- IAPProduct: IAP商品对象
- IAPProductInfo: 购买IAP商品对象
- IAPTransaction: 购买IAP商品交易信息对象
回调方法:
- ChannelsSuccessCallback: 获取支付通道成功回调
- IapRequestOrderSuccessCallback: 请求支付商品列表回调方法
- IapRestoreComplateRequestCallback: 请求已经购买的非消耗性商品和订阅商品回调方法
- PaymentSuccessCallback: 支付操作成功回调
- PaymentErrorCallback: 支付操作失败回调
模块:
permissions
{
// ...
"permissions":{
// ...
"Payment": {
"description": "支付"
}
}
}
getChannels
获取支付通道
void plus.payment.getChannels(successCB, errorCB);
说明:
在进行支付操作前需获取终端支持的支付通道列表,用于提示用户进行选择。 获取支付通道成功后通过successCB回调返回支持的所有通道列表,获取支付通道列表失败则通过errorCB回调返回。
参数:
- successCB:
(
ChannelsSuccessCallback
)
必选 获取支付通道成功回调函数
获取支付通道列表成功时的回调函数,用于返回终端支持的支付通道列表。 - errorCB:
(
PaymentErrorCallback
)
可选 获取支付通道失败回调函数
获取支付通道列表失败时的回调函数,用于返回错误信息。
返回值:
void : 无平台支持:
- Android - 2.2+ (支持)
- iOS - 5.0+ (支持)
- 360生活助手 (支持)
示例:
<!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
)
必选 支付通道
指定支付操作的通道,通过getChannels接口获取。 - statement:
(
String
|
JSON
|
OrderStatementIAP
)
必选 支付订单信息
支付订单信息,由支付通道定义的数据格式,通常是由业务服务器生成或向支付服务器获取,是经过加密的字符串信息。 - successCB:
(
PaymentSuccessCallback
)
必选 获取支付通道成功回调函数
获取支付通道列表成功时的回调函数,用于返回终端支持的支付通道列表。 - errorCB:
(
PaymentErrorCallback
)
可选 获取支付通道失败回调函数
获取支付通道列表失败时的回调函数,用于返回错误信息。
返回值:
void : 无平台支持:
- Android - 2.2+ (支持)
- iOS - 5.0+ (支持)
- 360生活助手 (支持)
示例:
<!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 String id;
attribute String description;
attribute Boolean serviceReady;
function void installService();
// iOS iAP
function void requestOrder(ids, successCB, errorCB);
function void restoreComplateRequest(options, successCB);
}
说明:
PaymentChannel对象表示特定的支付通道,用于向系统请求支付操作。
属性:
- id: 支付通道标识
- description: 支付通道描述
- serviceReady: 支付通道服务是否安装
方法:
- installService: 安装支付通道依赖的服务
- requestOrder: 向IAP服务器请求支付订单
- restoreComplateRequest: 向IAP服务器请求已经购买的非消耗性商品和订阅商品
id
支付通道标识
说明:
String 类型 只读属性
用于标识支付通道: "alipay" - 表示支付宝; "wxpay" - 表示微信支付; "appleiap" - 表示苹果应用内支付; "qhpay" - 表示360聚合支付(仅360手助流应用环境下支持)。
平台支持:
- Android - 2.2+ (支持)
- iOS - 5.0+ (支持)
- 360生活助手 (支持)
description
支付通道描述
说明:
String 类型 只读属性
支付通道的描述信息,如“支付宝”、“微信”、“In-App Purchase”、“360聚合支付”。
平台支持:
- Android - 2.2+ (支持)
- iOS - 5.0+ (支持)
- 360生活助手 (支持)
serviceReady
支付通道服务是否安装
说明:
Boolean 类型 只读属性
通常特定的支付通道依赖系统安装相关的服务,此属性用于标识其服务是否安装,如果没有安装则为false,否则为true。 若系统环境中没有安装相关的服务,则可能导致调用支付操作失败,这时可以调用installService方法进行安装。 注意:如果支付通道不需要依赖系统安装服务,则永远返回true。例如支付宝,如果设备上未安装支付宝客户端则调用Wap页面进行支付,因此值固定返回true; 而微信支付则依赖微信客户端,如果设备上未安装微信客户端则serviceReady值为false,此时应该提示用户安装微信客户端才能进行支付操作。
平台支持:
- Android - 2.2+ (支持)
- iOS - 5.0+ (支持)
- 360生活助手 (支持)
installService
安装支付通道依赖的服务
void pay.installService();
说明:
对于某些支付通道,通常特定的支付通道依赖系统安装相关的服务,调用此方法将安装其依赖的支付服务。 如支付宝,则在系统中安装支付宝客户端程序。
参数:
无
返回值:
void : 无平台支持:
- Android - 2.2+ (支持): 支付宝:支付操作可不依赖系统环境服务,此方法不做任何操作。 当调用plus.payment.request请求支付操作时如果系统环境中已经安装“支付宝钱包”则会调用支付宝钱包进行支付,否则调用Webview窗口进行支付。
- iOS - 5.0+ (支持): 支付宝:支付操作可不依赖系统环境服务,此方法不做任何操作。 当调用plus.payment.request请求支付操作时如果系统环境中已经安装“支付宝钱包”则会调用支付宝钱包进行支付,否则调用Webview窗口进行支付。
示例:
<!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>
requestOrder
向IAP服务器请求支付订单
void pay.requestOrder(ids, successCB, errorCB);
说明:
IAP支付在调用plus.payment.request方法支付前须先向服务器请求获取商品的详细信息,否则会支付失败。
参数:
- ids:
(
Array[
String
]
)
必选 请求商品的标识
- successCB:
(
IapRequestOrderSuccessCallback
)
必选 请求成功回调
- errorCB:
(
PaymentErrorCallback
)
必选 请求失败回调
返回值:
void : 无平台支持:
- Android - 2.2+ (不支持)
- iOS - 5.0+ (支持): 仅苹果应用内支付(IAP)支持:需在itunesconnect上添加商品并配置好才能请求成功。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="HandheldFriendly" content="true"/>
<meta name="MobileOptimized" content="320"/>
<title>In-App Purchase</title>
<script type="text/javascript" src="../js/common.js"></script>
<script type="text/javascript">
var iap=null;
var ids=['donation','donation6'];//应用内购项目
function plusReady(){
// 获取支付通道
plus.payment.getChannels(function(channels){
for(var i in channels){
var channel=channels[i];
if(channel.id==='appleiap'){
iap=channel;
}
}
requestOrder();
},function(e){
console.log("获取支付通道失败:"+e.message);
});
}
document.addEventListener('plusready',plusReady,false);
// 获取订单
function requestOrder(){
plus.nativeUI.showWaiting('检测支付环境...');
iap.requestOrder(ids,function(e){
plus.nativeUI.closeWaiting();
console.log('requestOrder success: '+JSON.stringify(e));
},function(e){
console.log('requestOrder failed: '+JSON.stringify(e));
plus.nativeUI.closeWaiting();
plus.nativeUI.confirm("错误信息:"+JSON.stringify(e), function(e){
if(e.index==0){
requestOrder();
}else{
back();
}
}, '重新请求支付',['确定','取消']);
});
}
// 支付
function pay(id){
plus.nativeUI.showWaiting('', {style:"black",background:"rgba(0,0,0,0)"});
plus.payment.request(iap, {productid:id}, function(result){
plus.nativeUI.closeWaiting();
plus.nativeUI.alert("支付成功:感谢你的支持,我们会继续努力完善产品。", function(){
back();
}, "捐赠");
},function(e){
plus.nativeUI.closeWaiting();
plus.nativeUI.alert("错误信息:"+e.message,null,"支付失败:"+e.code);
});
}
</script>
<link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8"/>
</head>
<body>
<header id="header">
<div class="nvbt iback" onclick="back()"></div>
<div class="nvtt">In-App Purchase</div>
</header>
<div id="content" class="content">
<br/><br/>
<p class="des" style="font-size:16px;line-height:30px;margin: 0px .5em;">
DCloud 是W3C会员、中国HTML5产业联盟发起单位,致力于推进HTML5发展,构建HTML5生态。
</p>
<br/>
<strong>
支持HTML5开发工具HBuilder
</strong>
<div class="button" onclick="pay(ids[0])">
捐赠1元
</div>
<div class="button" onclick="pay(ids[1])">
捐赠6元
</div>
</div>
</body>
<script type="text/javascript" src="../js/immersed.js" ></script>
</html>
restoreComplateRequest
向IAP服务器请求已经购买的非消耗性商品和订阅商品
void pay.restoreComplateRequest(options, successCB);
说明:
注意:不能获取已购买的消耗性商品。
参数:
- options:
(
json
)
必选 请求参数
支持属性:"username"用户名称,可选项,请求支付时设置的username值。 - successCB:
(
IapRestoreComplateRequestCallback
)
必选 请求成功回调
返回值:
void : 无平台支持:
- Android - 2.2+ (不支持)
- iOS - 5.0+ (支持): 仅苹果应用内支付(IAP)支持。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<meta name="HandheldFriendly" content="true"/>
<meta name="MobileOptimized" content="320"/>
<title>In-App Purchase</title>
<script type="text/javascript">
var iap=null;
function plusReady(){
// 获取支付通道
plus.payment.getChannels(function(channels){
for(var i in channels){
var channel=channels[i];
if(channel.id==='appleiap'){
iap=channel;
}
}
},function(e){
console.log("获取支付通道失败:"+e.message);
});
}
document.addEventListener('plusready',plusReady,false);
// 获取已购买商品(非消耗性商品和订阅商品)
function restoreComplateRequest(){
plus.nativeUI.showWaiting('',{style:"black",background:"rgba(0,0,0,0)"});
iap.restoreComplateRequest({},function(results){
plus.nativeUI.closeWaiting();
for(var i in results){
alert('restoreComplateRequest['+i+']: '+JSON.stringify(results[i]));
}
});
}
</script>
</head>
<body>
<button onclick="restoreComplateRequest()">获取已购买商品</button>
</body>
</html>
OrderStatementIAP
IAP订单数据对象
interface plus.payment.OrderStatementIAP {
attribute String productid;
attribute String username;
attribute String quantity;
}
说明:
描述IAP商品订单信息,如标识、数量等。
属性:
- productid: (String
类型
)商品的标识
- username: (String
类型
)购买用户名称
- quantity: (String
类型
)商品数量
PaymentResult
支付操作结果对象
interface plus.payment.PaymentResult {
attribute PaymentChannel channel;
attribute String tradeno;
attribute String description;
attribute String url;
attribute String signature;
attribute String rawdata;
}
说明:
PaymentResult对象表示支付操作返回结果,用于确认支付操作成功。
属性:
- channel: (PaymentChannel
类型
)支付通道对象
用于发起支付操作的支付通道对象。
平台支持
- Android - 2.2+ (支持)
- iOS - 5.0+ (支持)
- 360-Light - ALL (支持)
- tradeno: (String
类型
)交易编号信息
如果支付平台不支持此数据则返回undefined。
- description: (Boolean
类型
)交易描述信息
如果支付平台不支持此数据则返回undefined。
- url: (Boolean
类型
)查找支付交易信息地址
用于向支付平台查询交易信息,如果支付平台不支持此数据则返回undefined。
- signature: (String
类型
)支付操作指纹信息
用于向支付平台查询支付订单信息,如果支付平台不支持此数据则返回undefined。
- rawdata: (String
类型
)支付平台返回的原始数据
如果支付平台返回key-value类型字符串,则组合成符合JSON格式的字符串。
IAPProduct
IAP商品对象
interface plus.payment.IAPProduct {
attribute String productid;
attribute String price;
attribute String title;
attribute String description;
}
说明:
描述IAP商品详细信息,如标识、价格、标题、描述信息等。
属性:
- productid: (String
类型
)商品的标识
- price: (String
类型
)商品的价格
- title: (String
类型
)商品标题
- description: (String
类型
)商品的描述信息
IAPProductInfo
购买IAP商品对象
interface plus.payment.IAPProductInfo {
attribute String productIdentifier;
attribute String quantity;
}
说明:
描述购买的IAP商品详细信息,如标识、数量等。
属性:
- productIdentifier: (String
类型
)商品的标识
- quantity: (String
类型
)商品的数量
IAPTransaction
购买IAP商品交易信息对象
interface plus.payment.IAPTransaction {
attribute IAPProductInfo payment;
attribute String transactionDate;
attribute String transactionIdentifier;
attribute String transactionReceipt;
attribute String transactionState;
}
说明:
描述购买的IAP商品交易详细信息,如购买商品信息、交易日期、订单标识等。
属性:
- payment: (String
类型
)购买商品的信息
- transactionDate: (String
类型
)购买商品的交易日期
- transactionIdentifier: (String
类型
)购买商品的交易订单标识
- transactionReceipt: (String
类型
)购买商品的交易收据
base64编码格式字符串数据。
- transactionState: (String
类型
)购买商品的交易状态
可取值:"1"为支付成功;"2"为支付失败;"3"为支付已恢复。
ChannelsSuccessCallback
获取支付通道成功回调
void ChannelsSuccessCallback( channels ) {
// Get payment channels success code
}
说明:
当获取支付通道列表成功时的回调函数,用于返回终端支持的支付通道列表。
参数:
- channels:
(
Array
)
必选 数组,系统支持的支付通道PaymentChannel列表
返回值:
void : 无平台支持:
- Android - 2.2+ (支持)
- iOS - 5.0+ (支持)
- 360生活助手 (支持)
IapRequestOrderSuccessCallback
请求支付商品列表回调方法
void onsuccess( results ) {
// Payment success code
}
说明:
获取IAP商品列表信息成功时的回调函数,返回商品详细信息。
参数:
- results:
(
Array[
IAPProduct
]
)
必选 商品信息数据
返回值:
void : 无平台支持:
- Android - 2.2+ (不支持)
- iOS - 5.0+ (支持)
IapRestoreComplateRequestCallback
请求已经购买的非消耗性商品和订阅商品回调方法
void onsuccess( results ) {
// Payment success code
}
说明:
获取IAP商品列表信息成功时的回调函数,返回商品详细信息。
参数:
- results:
(
Array[
IAPTransaction
]
)
必选 已购买的非消耗性商品和订阅商品交易信息
返回值:
void : 无平台支持:
- Android - 2.2+ (不支持)
- iOS - 5.0+ (支持)
PaymentSuccessCallback
支付操作成功回调
void PaymentSuccessCallback ( result ) {
// Payment success code
}
说明:
当支付操作成功时的回调函数,用于返回支付操作的成功信息。
参数:
- result :
(
PaymentResult
|
IAPTransaction
)
必选 支付操作成功的信息
iOS平台使用IAP支付返回的数据类型为IAPTransaction。
返回值:
void : 无平台支持:
- Android - 2.2+ (支持)
- iOS - 5.0+ (支持)
- 360生活助手 (支持)
PaymentErrorCallback
支付操作失败回调
void PaymentErrorCallback(error){
// Payment error code
}
说明:
当支付操作失败时的回调函数,用于返回支付操作失败的错误信息。
参数:
- error:
(
DOMException
)
必选 支付操作失败错误信息,可通过error.code获取错误代码,具体错误码有各支付通道定义
支付宝支付错误代码如下: 62000,客户端未安装支付通道依赖的服务; 62001,用户取消支付操作; 62002,此设备不支持支付; 62003,数据格式错误; 62004,支付账号状态错误; 62005,订单信息错误; 62006,支付操作内部错误; 62007,支付服务器错误; 62008,网络问题引起的错误; 62009,其它未定义的错误。 微信支付错误代码如下: -1,一般错误; -2,用户取消; -3,发送失败; -4,认证被否决; -5,不支持错误。
返回值:
void : 无平台支持:
- Android - 2.2+ (支持)
- iOS - 5.0+ (支持)
- 360生活助手 (支持)