JSAPI

  • 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