支付

接口声明

{"name": "service.pay"}

uni.pay.getProvider(OBJECT)

获取服务提供商,如厂商的英文品牌名称,假如无此服务则返回空字符串。

参数

无。

返回值

字符串,服务提供商的代号。

示例

uni.pay.getProvider();

uni.pay.pay(OBJECT)

使用支付完成付款。

参数

参数名 类型 必填 说明
orderInfo String 订单信息
success Function 成功回调
fail Function 失败回调
complete Function 执行结束后的回调

success 返回值

参数名 类型 说明
result String 支付结果

fail 返回值

参数名 类型 说明
code Number 返回状态码
message String 消息内容

fail异常码返回,不同的厂商提供的异常码会有差异,具体的异常码需要和厂商支付接口对接。

示例

uni.pay.pay({
  orderInfo: "order1",
  success: function(data) {
    console.log("handling success: " + data.code);
  },
  fail: function(data, code) {
    console.log("handling fail, code=" + code);
  }
});

微信支付

接口声明

{"name": "service.wxpay"}

uni.wxpay.getType()

获取当前可用的微信支付调用方式。

参数

无。

返回值

返回值 备注
none 微信未安装
APP 微信app调用方式,服务端向微信支付下单时,trade_type需要是APP,参考"微信app支付"。
MWEB 微信网页调用方式,服务端向微信支付下单时,trade_type需要是MWEB,参考"微信网页支付"。

uni.wxpay.pay(OBJECT)

发起微信支付。

参数

参数名 类型 必填 说明
prepayid String 微信支付服务器生成的预支付订单id,参考"微信app支付"和"微信网页支付"。
extra Object 当前支付方式下,需要填入的额外订单信息。
success Function 成功后的回调函数。App方式下,回调发生在用户支付完成之后。网页方式下,回调发生在订单提交给微信app之后。
fail Function 失败回调
cancel Function 取消回调

extra参数app方式

字段名 必选 说明
app_id 微信支付订单中的app_id。
partner_id 微信支付订单中的partner_id。
package_value 微信支付订单中的package_value。
nonce_str 微信支付订单中的nonce_str。
time_stamp 微信支付订单中的time_stamp。
order_sign 微信支付订单中的order_sign。

extra参数网页方式

字段名 必选 说明
mweb_url 在微信的支付服务器下单以后,微信返回的MWEB_URL,在CP用于微信支付的h5页面中,直接将mweb_url取出后跳转过去即可,但这个做法并不是强制的,您也可以通过其他自定义键值向您自己的服务器换取MWEB_URL。
custome_key 其他的自定义键值,cp可以根据需要增加其他自己认为需要的键名和键值。

success 返回值

参数名 类型 说明
prepayid String 只在App支付方式下会出现,微信支付订单的prepayId。
final_url String 只在网页方式下会出现,拼接参数之后,最终用于打开网页的url。

fail 返回错误码

错误码 说明
900 在manifest.json中配置的应用签名有误,无法解析
901 在manifest.json中配置的应用包名有误
1000 微信未安装
1001 用于微信网页支付的url配置找不到
2001 订单已经提交给微信,但是微信返回错误, 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。

示例

useWxpay: function() {
  var payType = uni.wxpay.getType();
  if(payType == 'APP') {
    uni.wxpay.pay({
      //微信 app支付的prepayId 
      prepayid: 'your order prepayid,eg: wx20170101abcdef1234567890',
      extra: {
        app_id: 'your app_id',
        partner_id: 'your partner_id',
        package_value: 'your package_value',
        nonce_str: 'your nonce_str',
        time_stamp: 'your time_stamp',
        order_sign: 'your order sign'
      },
      fail: function(data, code) {
        console.log("WX PAY failed, code=" + code);
      },
      cancel: function(data) {
        console.log("WX PAY cancelled by user");
      },
      success: function(data) {
        console.log("WX PAY success");
      }
    });
  } else if(payType == 'MWEB') {
    uni.wxpay.pay({
      //微信网页支付的prepayId 
      prepayid: 'your order prepayid,eg: wx20170101abcdef1234567890',
      extra: {
        //传递给支付页面的自定义参数, 根据需要进行设置,会被urlEncode之后拼接在配置的url尾部 
        mweb_url: 'https://wx.tenpay.com/cgi-bin/mmpayweb-bin',
        customeKey1: 'customeValue1',
        customeKey2: 'customeValue2'
      },
      fail: function(data, code) {
        console.log("WX H5 PAY handling fail, code=" + code);
      },
      cancel: function(data) {
        console.log("WX H5 PAY handling cancel");
      },
      success: function(data) {
        //H5方式下,支付成功的回调仅仅只是指将订单递交给微信,并不意味着支付已经成功完成 
        console.log("WX H5 PAY handling success");
      }
    });
  } else {
    console.log("wx pay not avaliable.");
  }
}

接入说明

方式选择

app支付只在部分手机系统上被支持,而网页支付在所有手机系统上均能被支持,但是网页支付产生支付回调的时机发生在订单提交给微信之后,并非和app支付那样发生在支付产生结果的时候。推荐cp同时支持两种接入支付方式。

app支付接入

  1. 参考"微信app支付",完成微信支付服务端的接入。
  2. 在微信支付后台添加一个新的app,该app需要有一个新的包名,不要和自己android app应用的包名冲突,不需要对外发布,但是需要提交一个apk以注册新的包名对应的app签名。
  3. 将新注册的app包名和app签名(签名的值可以在安装新注册的apk后使用这个工具获取)的值,分别填在manifest.json微信支付接口声明的package和sign两个字段中,如接口声明中所示。

网页支付接入

  1. 参考"微信网页支付",完成微信支付服务端的接入。
  2. 在服务端提供一个发起支付的H5页面,该页面读取传入的mweb_url,然后自动跳转到mweb_url。将步骤2中支付H5页面对应的url填在manifest.json微信支付接口声明的url字段中,如接口声明中所示。

支付宝支付

接口声明

{"name": "service.alipay"}

uni.alipay.pay(OBJECT)

使用支付宝支完成支付。

参数

参数名 类型 必填 说明
orderInfo String 服务端生成的订单信息,参考支付宝的"请求参数说明文档"。
callback Function 支付结果回调,格式参考支付宝的"通知参数说明文档"。

示例

uni.alipay.pay({
  orderInfo: "order1",
  callback: function(ret) {
    console.log("handling callback");
  }
});

results matching ""

    No results matching ""