帮助中心 官网首页

微信对接常见问题

一、微信支付

  其中微信公众号支付,扫码支付在微信公众号管理后台申请配置,支付授权目录必须填写完整地址,例如PC微信扫码支付

  

    APP微信支付的申请流程如下:        
        1, 注册开发者账号;
        2, 认证开发者资质;
        3, 创建APP并提交审核;
        4, 提交资料申请微信支付;
        5, 启动设计并开发;
        6, 开户成功,并且进行验证;
        7, 在线签署协议,并接入,即可完成接入。
        
二  微信登陆
     微信公众号登陆只需要在微信公众号后台配置好获取用户信息的网页安全域名,网页安全域名、JS安全域名、业务域名如果是一级域名都需要带上WWW。
     微信扫码登陆需要前去微信开发平台申请,创建应用获取APPID和AppSecret,并且要绑定微信公众号,否则扫码登陆与微信公众号登陆会产生两个账号,因为他们产生的 openid不一致,如果绑定了公众号,那么微信公众号获取用户信息里就会产生一个跟微信扫码登陆一样的unionid,这个时候通过这个unionid认证用户就可以解决同一个微信用户两边登陆产生两个平台账号的问题
     微信扫码登陆所有参数配置正确时,可能点击微信快捷登陆,二维码依然出来不了,还报参数错误,这里可以看看发起微信扫码登陆的平台地址里如果是一级域名里是否有带WWW,没带WWW就会报错。
     
三 微信分享
    附录1-JS-SDK使用权限签名算法
jsapi_ticket
生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。
1.参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html
2.用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
成功返回如下JSON:
{
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
} 

调用config 接口的时候传入参数 debug: true 可以开启debug模式,页面会alert出错误信息。以下为常见错误及解决方法:
1.invalid url domain当前页面所在域名与使用的appid没有绑定,请确认正确填写绑定的域名,仅支持80(http)和443(https)两个端口,因此不需要填写端口号(一个appid可以绑定三个有效域名,见 目录1.1.1)。
2.invalid signature签名错误。建议按如下顺序检查:
   1.确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
   2.确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。
   3.确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。
   4.确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
   5.确保一定缓存access_token和jsapi_ticket。
   6.确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。