# 开通

  • 登录 支付宝开放平台,进入控制台页面
  • 创建移动应用,填写应用信息并提交审核
  • 在应用详情页面的能力列表中添加APP支付功能,详情参考添加应用功能
  • 进入开发设置完成加密方式、IP白名单等开发信息设置,详情参考配置应用环境
  • 添加功能和配置密钥后(获取公钥、私钥,用于服务器生成订单),将应用提交审核,详情参考上线应用
  • 应用上线后,完成签约才能在生产环境使用支付功能,详情参考签约功能

更多信息详见支付宝官方文档 App 支付接入准备

# 配置

打开项目的manifest.json文件,在“App模块配置”项的“Payment(支付)”下,勾选“支付宝支付”:

注意

# 服务器生成订单

在 App 端调用支付前,需在业务服务器生成支付订单,可参考:

更多信息详见支付宝官方文档 服务端接入流程

# 应用内发起支付

# 订单对象说明

支付宝支付订单对象为String类型,字符串数据格式为"application/x-www-form-urlencoded",即 key=value 形式,使用 & 符号连接。示例如下:

app_id=2015052600090779&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22seller_id%22%3A%22%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.02%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22314VYGIAGG7ZOYY%22%7D&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA2&timestamp=2016-08-15%2012%3A12%3A15&version=1.0&sign=MsbylYkCzlfYLy9PeRwUUIg9nZPeN9SfXPNavUCroGKR5Kqvx0nEnd3eRmKxJuthNUx4ERCXe552EV9PfwexqW%2B1wbKOdYtDIb4%2B7PL3Pc94RZL0zKaWcaY3tSL89%2FuAVUsQuFqEJdhIukuKygrXucvejOUgTCfoUdwTi7z%2BZzQ%3D

更多信息详见支付宝官方文档 APP支付请求参数说明

# 示例代码

  • uni-app项目
var orderInfo = '';  //从服务器获取的订单
uni.getProvider({
    service: 'payment',
    success: function (res) {
        console.log(res.provider)
        if (~res.provider.indexOf('alipay')) {
            uni.requestPayment({
                "provider": "alipay",   //固定值为"alipay"
                "orderInfo": orderInfo, //此处为服务器返回的订单信息字符串
                success: function (res) {
                    var rawdata = JSON.parse(res.rawdata);
                    console.log("支付成功");
                },
                fail: function (err) {
                    console.log('支付失败:' + JSON.stringify(err));
                }
            });
        }
    }
});
  • 5+ App项目
var orderInfo = '';  //从服务器获取的订单
//获取支付宝支付对象
var alipaySev = null;  // 支付宝支付对象
plus.payment.getChannels(function(channels){
    for (var i in channels) {
        var channel = channels[i];
        if (channel.id === 'alipay') {
            alipaySev = channel;
        }
    }
    //发起支付
    plus.payment.request(alipaySev, orderInfo, function(result){
          var rawdata = JSON.parse(result.rawdata);
          console.log("支付成功");
      }, function(e){
          console.log("支付失败:" + JSON.stringify(e));
    });
  }, function(e){
      console.log("获取支付渠道失败:" + JSON.stringify(e));
});

注意

  • 支付宝沙箱应用需要切换到沙箱环境才能正常调起支付宝客户端沙箱版进行支付,切换方法参考该 问答评论区