微信定制开发系列二——地理位置接口、扫一扫接口和微信支付接口

发送到手机
使用"扫一扫"即可发送至手机

上期写了微信定制开发系列一——H5调用微信JS-SDK,主要是讲解了微信目前可以实现那些功能和其中的SDK的配置以及分享接口的使用。今天主要讲解的接口主要有获取地理位置接口、扫一扫接口以及微信支付接口。

为什么要讲上述三个接口呢,其实主要是这三个接口需要注意下,其他接口我就略过不讲了,使用方法参考官方的api即可。那么接下来就是干货了。

地理位置接口:

wx.getLocation({
    type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
    success: function (res) {
        var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
        var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
        var speed = res.speed; // 速度,以米/每秒计
        var accuracy = res.accuracy; // 位置精度
    }
});


上述是使用方法,需要注意的是微信获取地理位置的接口只提供坐标,只提供坐标,只提供坐标,重要的事情说三遍,但是大部分功能需求是需要获取地址的,但是微信坑爹的不提供这个接口,因此只能通过百度、高德等地图去根据这里获取的坐标再获取详细的地理位置。

扫一扫接口:


wx.scanQRCode({
    needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
    scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
    success: function (res) {
    var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
}
});


扫一扫接口主要就是需要注意needResult的参数,如果扫一扫之后需要自己处理就只能选择1,然后就是success里面根据res.resultStr处理即可。

微信支付接口:

我相信微信支付接口是使用频率相当高的一个接口,所以今天的重头戏主要是这里。我们先看看官方的调用demo


wx.chooseWXPay({
    timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
    nonceStr: '', // 支付签名随机串,不长于 32 位
    package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
    signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
    paySign: '', // 支付签名
    success: function (res) {
        // 支付成功后的回调函数
    }
});


其实微信支付的重点并不是怎么调用这个js,而是怎么去得到这个js所需要的参数,关于这些参数的获取请参考微信统一支付,服务端通过统一支付接口获取到preay_id之后进行签名,之后就是划重点时间:

1、chooseWXPay里面的timestamp等参数一定要跟服务端参与签名的值一样,并不是js这里再单独生成相应的值。

2、微信支付常见的错误大多数有两种,第一是万恶的签名错误,第二则是眼睁睁看到将要弹出了微信支付界面,结果弹出了一个对话框支付失败之类的错误消息。处理签名错误的方法一般是用官方的签名校正工具和自己的签名参数做比较,如果不匹配那就检查下自己传入的值问题,如果签名匹配那就检查下是否参加签名的参数是否漏掉了。


解决了签名参数问题,还是不能支付的时候,那就说明js的值不对,一个是我上面提到的js传入的参数一定是要跟参加签名参数的值相同,一般做法是直接服务端传一个json对象。另外一个问题就是当前页面的地址和微信后台微信支付模块输入的地址不匹配。地址只需要设置到二级或者三级目录即可,然后就是把当前页面的地址复制出来跟微信后台填写的地址一一做比较,包括大小写,包括大小写,包括大小写。我曾经就是因为大小写白白浪费了几个小时的时间找问题所在,这是血和泪的教训。

阅读相关主题
微信定制开发系列二——地理位置接口、扫一扫接口和微信支付接口

微信定制开发系列二——地理位置接口、扫一扫接口和微信支付接口

分享:

标签: