SPay

来自于:官方立即使用

概述

本模块封装了威富通支付的移动端开放SDK。

有关威富通支付详情,参考威富通官网:https://open.swiftpass.cn/

使用此模块之前需先配置 config.xml 文件,方法如下

  • 名称:SPay
  • 参数:urlScheme、apiKey
  • 配置示例:
  <feature name="SPay">
    <param name="urlScheme" value="wxd0d84bbf23b4a0e4"/>
    <param name="appid" value="wxd0d84bbf23b4a0e4"/>
  </feature>
  • 字段描述:

    urlScheme:(必须配置)用于实现应用间跳转及数据交换,本应用可以启动微信客户端,也可以从微信客户端跳回本应用。urlScheme 的 value 值是从微信开放平台获取的 appid。appid 申请方法参考微信开放平台接入文档

    apiKey:(必须配置)从微信开放平台获取的 appid,值与 urlScheme 相同。appid 申请方法参考微信开放平台接入文档

注意:

iOS 平台上使用微信支付功能。需要在config里配置微信的白名单,否则无法跳转到微信APP支付。详情参考APICloud官方文档:白名单配置

微信支付流程

1,移动端用户提交订单到商户服务器

2,商户服务器请求威富通支付网关

3,威富通支付网关返回威富通支付的 Token 给商户服务器

4,商户服务器返回给移动端订单交易信息

5,移动端唤起威富通支付SDK(本模块),同时传入威富通 Tken

6,威富通SDK(本模块)给威富通服务器发起支付请求

7,威富通服务器向微信服务器发起支付请求

8,微信服务器向威富通服务器返回支付授权 Token

9,威富通服务器给移动端返回支付授权 Token

10,移动端SDK 唤起微信进行支付,跳转到微信支付页面

11,用户提交交易

12,返回交易结果,并跳转回本 APP

13,移动端获取支付结果

12.1,微信服务器收到用户提交的交易请求后会异步通知威富通服务器

12.2,威富通服务器将结果返回给商家服务器

12.3,商户服务器通知威富通服务器已收到支付结果

12.4,威富通服务器通知微信支付服务器已收到支付结果

注意:过程 2和3 在商户服务器端进行。本模块封装了过程5-13,其中7、8、9是威富通服务器端自动处理。

isInstalled

判断当前设备是否安装微信客户端

isInstalled(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    installed: true      //布尔型;true||false,当前设备是否安装微信客户端
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 0     //数字类型;
                //错误码:
                //-1(未知错误),
                //0(成功)
}

示例代码

var SPay = api.require('SPay');
SPay.isInstalled(function(ret, err) {
    if (ret.installed) {
        alert("当前设备已安装微信客户端");
    } else {
        alert('当前设备未安装微信客户端');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

config

配置微信支付的appid

config({params}, callback(ret))

params

appId:

  • 类型:字符串
  • 描述:微信支付的appid

示例代码

var SPay = api.require('SPay');
SPay.config({
    appId: 'wxd0d84bbf23b4a0e4'
});

可用性

iOS系统

可提供的1.0.0及更高版本

wxPay

调起微信支付

wxPay({params}, callback(ret))

params

amount:

  • 类型:数字
  • 描述:支付的金额精确到分,整数类型

token:

  • 类型:字符串
  • 描述:支支付授权码

service:

  • 类型:字符串
  • 描述:支付类型(如pay.weixin.app)

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    payModel: {           //JSON对象;
       payCode:,          //数字类型;支付返回状态码,详情参考下文附件
       message:           //字符串类型;支付返回的文本说明信息
    },
    payDetail:{           //JSON对象;(Android无此字段)
       body:'',           //字符串类型;商品描述
       status:,           //数字类型;返回状态码
       message:'',        //字符串类型;返回信息
       money:,            //数字类型;支付金额 
       out_trade:'',      //字符串类型;商户订单号
       order_no:'',       //字符串类型;威富通订单号
       transaction_id:'', //字符串类型;第三方订单号
       mch_name:'',       //字符串类型;商户名
       trade_time:'',     //字符串类型;支付时间
       need_query:'',     //字符串类型;统一反扫是否需要继续扫描标示(Y需要查询,N 不需要查询)
       trade_type:''      //字符串类型;交易类型
    }
}

支付状态码

//二维码生成失败
    SPayClientConstEnumPayQRMakeErro = 1000,

    //生成二维码生成,等待扫描中
    SPayClientConstEnumPayQRWaitScan = 1001,

    //传入的支付类型无效
    SPayClientConstEnumPayPositiveScansTypeInvalid = 1002,

    //二维码等待扫码超时
    SPayClientConstEnumPayQRWaitScanTimerOut = 1003,

    //二维码在等待扫描的时候,用户退出了支付
    SPayClientConstEnumPayUserOut = 1004,

    //用户在选择支付类型的时候,选择了取消选择支付
    SPayClientConstEnumCancelSelect = 1005,

    //传入的参数错误
    SPayClientConstEnumParameterError = 1100,

    //TokenID失效
     SPayClientConstEnumPayTokenIDInvalid = 400,

    //TokenID未知
    SPayClientConstEnumPayTokenIDUnknown = 401,

    //二维码未支付
    SPayClientConstEnumPayQRUnUse = 204,

    //二维码被扫码,但是支付失败
    SPayClientConstEnumPayQRPayErro = 202,

    //app支付,支付失败
    SPayClientConstEnumAppPayErro = 601,


    //wap支付,支付失败
    SPayClientConstEnumWapPayErro = 701,

    //wap支付,用户取消了支付
    SPayClientConstEnumWapPayOut = 702,

    //wap支付,用户未支付
    SPayClientConstEnumWapPayUnpay = 703,

    //支付成功
    SPayClientConstEnumPaySuccess = 201,

    //反扫冲正成功
    SPayClientConstEnumReverseScanPayReverseSuccess = 2001,

    //反扫冲正失败
    SPayClientConstEnumReverseScanPayReverseErro = 2002,

    //反扫支付失败
    SPayClientConstEnumReverseScanPayErro = 2003,

    //用户在扫码界面直接退出的交易,交易失败
    SPayClientConstEnumReverseScanCancelSelect = 2004,

    //设备设备没有摄像头
    SPayClientConstEnumNotCamera = 3001,

    //设备摄像头权限访问受限
    SPayClientConstEnumCameraNotOpen= 3002,

    //手Q没有安装
    SPayClientConstEnumQQNotOpen= 3003,

    //微信没有安装(微信Wap支付时候用到)
    SPayClientConstEnumWechatNotOpen= 3004,

    //支付宝没有安装(支付宝Wap支付时候用到)
    SPayClientConstEnumAlipayNotOpen = 3005
     //app 签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等
    SPayClientConstEnumAppPayErro_1= -1,
     //app支付,用户取消了支付
    SPayClientConstEnumAppPayOut = -2,

示例代码

var SPay = api.require('SPay');
SPay.wxPay({
    service: 'pay.weixin.app',
    token: '147430b88ea3622250ae32eca5151ffba',
    amount: 1
}, function(ret) {
    api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本