// 调用此jsapi的时候,不要在当前页面有监听resume事件并在resume事件中强制刷新页面;
// 方法1为轻便模式,传入支付宝交易号等信息后,接口底层会补全默认内容,最终也会生成一个orderStr;
// 方法2为自定义模式,由业务方来指定拼接整个orderStr;
// 使用方法1 : 通过传入交易号唤起支付宝支付
// 适用范围 : 支付场景 + 已有支付宝交易号
AlipayJSBridge.call("tradePay", {
tradeNO: "201802282100100427058809844", // 必传,此使用方式下该字段必传
bizType:"xxx", // 非必传,默认为 “trade”
bizContext:"" // 非必传,默认为H5启动选项(safePayContext)
}, function(result) {
});
// 使用方法2 : 通过传入交易字符串唤起收银台相关服务(支付、渠道前置、独立绑卡等业务)
// 适用范围 : 支付(有无支付宝交易号都可以使用)、渠道前置、独立绑卡等业务
AlipayJSBridge.call("tradePay", {
orderStr: "xxxxxxxxxxxxxxxxxx" // 必传,此使用方式下该字段必传
}, function(result) {
});
<h1>点击以下按钮唤起收银台支付</h1>
<a href="javascript:void(0)" class="btn tradenoPay">支付宝交易号唤起支付</a>
<script>
function ready(callback) {
// 如果jsbridge已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function(){
document.querySelector('.tradeno').addEventListener('click', function() {
AlipayJSBridge.call("tradePay", {
tradeNO: "201802282100100427058809844"
}, function(result) {
alert(JSON.stringify(result));
});
});
});
</script>
注:外部商户类APP支付orderStr字串拼接方式可参考 这篇文档
<h1>点击以下按钮唤起收银台支付</h1>
<a href="javascript:void(0)" class="btn orderstrPay">订单串唤起支付</a>
<script>
function ready(callback) {
// 如果jsbridge已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function(){
document.querySelector('.orderstr').addEventListener('click', function() {
AlipayJSBridge.call("tradePay", {
orderStr: "timestamp=2016-12-27%2018%3A00%3A00&method=alipay.trade.app.pay&app_id=2014073000007292&sign_type=RSA&charset=utf-8&version=1.0&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22seller_id%22%3A%222088411964605312%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A0.01%2C%22subject%22%3A1%2C%22body%22%3A%22%E5%95%86%E5%93%81%E4%B8%AD%E6%96%87%E6%8F%8F%E8%BF%B0%E4%BF%A1%E6%81%AF%22%2C%22out_trade_no%22%3A%22ALIPAYTEST2016081622560194853%22%7D&sign=aueDw0PaUqVMvbiButPCmWy8VsNJIgNKRV4tDEz3mSgIpa5ODnZKVCd1GGCtu7hNzxnwLOiku%2BTRJUVM24aHkKWrdyBHECjkUBvrziWiZBESLCyJPwT1YHGnioRUhLvL1MqTTm85urPeqAUUir4UyxyWowHitjkxh3ru6nSLkLU%3D"
}, function(result) {
alert(JSON.stringify(result));
});
});
});
</script>
<h1>点击下面按钮唤起支付渠道选择</h1>
<a href="javascript:void(0)" class="btn tradestr">支付渠道</a>
<script>
function ready(callback) {
// 如果jsbridge已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function() {
document.querySelector('. orderstr').addEventListener('click', function(){
AlipayJSBridge.call('getUserInfo', function(info){
var userId= info.userId;
AlipayJSBridge.call("tradePay", {
orderStr: [
"&biz_type=\"switch_channel\"",
"&biz_identity=\"userassets10002\"",
"&trade_from=\"3008\"",
"&forbid_channel=\"credit\",
"&assigned_channel=\"xxx\",
"app_name=\"alipay\""
].join('')
}, function(result) {
alert(JSON.stringify(result));
});
});
});
});
</script>
<h1>点击下面按钮唤起添加银行卡</h1>
<a href="javascript:void(0)" class="btn tradestr">添加银行卡</a>
<script>
function ready(callback) {
// 如果jsbridge已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function() {
document.querySelector('.tradestr').addEventListener('click', function() {
AlipayJSBridge.call("tradePay", {
orderStr: [
"&biz_type=\"new_card\"",
"&biz_identity=\"userassets10002\"",
"&forbid_channel=\"credit\",
"app_name=\"alipay\""
].join('')
}, function(result) {
alert(JSON.stringify(result));
});
});
});
</script>
<h1>点击下面按钮唤起添加银行卡</h1>
<a href="javascript:void(0)" class="btn tradestr">添加银行卡</a>
<script>
function ready(callback) {
// 如果jsbridge已经注入则直接调用
if (window.AlipayJSBridge) {
callback && callback();
} else {
// 如果没有注入则监听注入的事件
document.addEventListener('AlipayJSBridgeReady', callback, false);
}
}
ready(function() {
document.querySelector('.tradestr').addEventListener('click', function() {
AlipayJSBridge.call("tradePay", {
orderStr: [
"&biz_type=\"query_limit\"",
"&biz_identity=\"userassets10002\"",
"&trade_from=\"3008\"",
"&limit_channel_ext=\"Balance^50000^200000^200000\",
"app_name=\"alipay\""
].join('')
}, function(result) {
alert(JSON.stringify(result));
});
});
});
</script>
独立密码校验请接入核身,参考这篇文档;
AlipayJSBridge.call('tradePay', {
tradeNO, partnerID, bizType, bizSubType, displayPayResult, bizContext, orderStr
}, fn);
名称 | 类型 | 描述 | 必选 | 默认值 | 版本 |
---|---|---|---|---|---|
tradeNO | string | 交易号。多个用 “;” 分隔 | Y | 8.0 | |
bizType | string | 交易类型 | N | trade | 8.0 |
bizSubType | string | 交易子类型 | N | 8.0 | |
displayPayResult | bool | 是否显示支付结果页 (满足以下两个前提条件该参数配置才会生效:1. 商户在CDP平台配置了广告;2. 老结果页场景;) | N | true | 8.0 |
bizContext | string | 支付额外的参数,格式为JSON字符串 | N | 8.2 | |
fn | function | 收银台关闭之后的结果回调 | N |
名称 | 类型 | 描述 | 必选 | 默认值 | 版本 |
---|---|---|---|---|---|
orderStr | string | 完整的一个支付字符串 | Y | 8.2 | |
fn | function | 收银台关闭之后的结果回调 | N |
回调函数带入的参数result: {resultCode, callbackUrl, memo, result}
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
resultCode | string | 1. 支付成功: ‘9000’:订单支付成功; 2. 支付结果未知(可能已支付成功): ‘8000’:后台获取支付结果超时,暂时未拿到支付结果; ‘6004’:支付过程中网络出错, 暂时未拿到支付结果; 3. 支付失败或者支付中途退出: ‘7001’:客户端-钱包中止快捷支付; ‘6002’: 普通网络出错; ‘6001’: 用户中途取消; ‘4000’: 订单支付失败; ‘99’: 用户点击忘记密码快捷界面退出(only iOS since 9.5); 其他: 其他支付异常; | 8.0 |
callbackUrl | string | 交易成功后应跳转到的url;一般为空, 除非交易有特殊配置 | 8.0 |
memo | string | 收银台服务端返回的memo字符串 | iOS 8.0, android 8.4 |
result | string | 收银台服务端返回的result字符串 | iOS 8.0, android 8.4 |