tradePay 快捷支付

优质
小牛编辑
133浏览
2023-12-01
Since 8.0


使用方法

// 调用此jsapi的时候,不要在当前页面有监听resume事件并在resume事件中强制刷新页面;
// 方法1为轻便模式,传入支付宝交易号等信息后,接口底层会补全默认内容,最终也会生成一个orderStr;
// 方法2为自定义模式,由业务方来指定拼接整个orderStr;

// 使用方法1 : 通过传入交易号唤起支付宝支付
// 适用范围  : 支付场景 + 已有支付宝交易号
AlipayJSBridge.call("tradePay", {
  tradeNO: "201802282100100427058809844", // 必传,此使用方式下该字段必传
  bizType:"xxx",                          // 非必传,默认为 “trade”
  bizSubType:"",                          // 非必传,默认为 “”
  bizContext:""                           // 非必传,默认为H5启动选项(safePayContext)
}, function(result) {
});


// 使用方法2 : 通过传入交易字符串唤起收银台相关服务(支付、渠道前置、独立绑卡等业务)
// 适用范围  : 支付(有无支付宝交易号都可以使用)、渠道前置、独立绑卡等业务
AlipayJSBridge.call("tradePay", {
  orderStr: "xxxxxxxxxxxxxxxxxx"          // 必传,此使用方式下该字段必传
}, function(result) {
});


代码演示

有支付宝交易号唤起支付(使用方法1)

<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>
查看演示 扫码查看 用支付宝扫码运行

无支付宝交易号唤起支付(使用方法2)

注:外部商户类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>
查看演示 扫码查看 用支付宝扫码运行

唤起前置支付渠道选择业务(使用方法2)

<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: [
          // extern_token登入sessionId
          "extern_token=\"GZ00cSiae3xXJ9sXjuV2NhnyfWOOPb98mobilegwGZ00\"",
          // user_id登入账号ID
          "&user_id=\"2088xxxxxxxx\"",
          "&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>
查看演示 扫码查看 用支付宝扫码运行

唤起添加银行卡业务(使用方法2)

<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: [
          // extern_token登入sessionId
          "extern_token=\"GZ00cSiae3xXJ9sXjuV2NhnyfWOOPb98mobilegwGZ00\"",
          // user_id登入账号ID
          "&user_id=\"2088xxxxxxxx\"",
          "&biz_type=\"new_card\"",
          "&biz_identity=\"userassets10002\"",
          "&forbid_channel=\"credit\",
          "app_name=\"alipay\""
      ].join('')
    }, function(result) {
      alert(JSON.stringify(result));
    });
  });
});
</script>
查看演示 扫码查看 用支付宝扫码运行

唤起前置渠道限额信息查询业务(使用方法2)

<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: [
          // extern_token登入sessionId
          "extern_token=\"GZ00cSiae3xXJ9sXjuV2NhnyfWOOPb98mobilegwGZ00\"",
          // user_id登入账号ID
          "&user_id=\"2088xxxxxxxx\"",
          "&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>
查看演示 扫码查看 用支付宝扫码运行

唤起支付密码校验(不发起支付,只做身份确认)

独立密码校验请接入核身,参考这篇文档;


API

AlipayJSBridge.call('tradePay', {
  tradeNO, partnerID, bizType, bizSubType, displayPayResult, bizContext, orderStr
}, fn);

入参

使用方法1入参
名称类型描述必选默认值版本
tradeNOstring交易号。多个用 “;” 分隔Y8.0
bizTypestring交易类型Ntrade8.0
bizSubTypestring交易子类型N8.0
displayPayResultbool是否显示支付结果页
(满足以下两个前提条件该参数配置才会生效:1. 商户在CDP平台配置了广告;2. 老结果页场景;)
Ntrue8.0
bizContextstring支付额外的参数,格式为JSON字符串N8.2
fnfunction收银台关闭之后的结果回调N
使用方法2入参
名称类型描述必选默认值版本
orderStrstring完整的一个支付字符串Y8.2
fnfunction收银台关闭之后的结果回调N

出参

回调函数带入的参数result: {resultCode, callbackUrl, memo, result}

名称类型描述版本
resultCodestring1. 支付成功:
‘9000’:订单支付成功;

2. 支付结果未知(可能已支付成功):
‘8000’:后台获取支付结果超时,暂时未拿到支付结果;
‘6004’:支付过程中网络出错, 暂时未拿到支付结果;

3. 支付失败或者支付中途退出:
‘7001’:客户端-钱包中止快捷支付;
‘6002’: 普通网络出错;
‘6001’: 用户中途取消;
‘4000’: 订单支付失败;
‘99’: 用户点击忘记密码快捷界面退出(only iOS since 9.5);
其他: 其他支付异常;
8.0
callbackUrlstring交易成功后应跳转到的url;一般为空, 除非交易有特殊配置8.0
memostring收银台服务端返回的memo字符串iOS 8.0, android 8.4
resultstring收银台服务端返回的result字符串iOS 8.0, android 8.4