微信页面开发总结

最近参与了一个微信活动页面开发,遇到各种问题,总结一下,主要涉及微信jssdk(难点在于微信签名,签名后才能使用jssdk)、微信网页授权获取用户信息、微信公众账号支付这三个部分。

一、微信jssdk的使用

由于要使用微信jssdk需要在微信公众账号里边配置微信js安全域名,如果是正式的公众号时需要备案的域名,并且一个月只能修改三次。

因此开发时我们申请了一个订阅号(订阅号不需要认证,申请起来比较快,但是订阅号不能测试微信公众号支付),然后进入订阅号的开发者工具=》公众平台测试账号=》按照步骤扫二维码进入以下页面
配置js接口安全域名(注意必须是外网可以访问的域名,测试号也可以是ip地址)

Paste_Image.png

因为使用微信jssdk需要签名,签名必须要后端支持,作为一名不会写后台代码的前端开发者来说,自己想测试一下jssdk的功能也是有办法可寻的(如果有后端人员愿意支持你,给你提供签名的接口也是可以的)。

我来讲讲我初步学习使用jssdk的方式。

1.在微信开发者文档
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN
底部提供的链接
http://demo.open.weixin.qq.com/jssdk/sample.zip
下载实例代码,其中包含php、java、nodejs以及python的示例代码;我使用的是php的代码因为搭建服务比较简单,'修改sample.php页面,将测试号的appid\appsecret写到代码对应的位置,然后将要测试的代码房子wx.ready(function(){})里边就可以了
我选择的是新浪云
http://www.sinacloud.com/?from=baidu_web
平台SEA搭建的一个php的云服务,然后通过svn或者git将修改后的代码传到创建的应用里边,通过微信客户端访问创建的应用的网址就可以看到效果了
也可以下载微信web开发者工具,登录自己的微信号就可以在开发者工具里边看到效果并且调试了

Paste_Image.png
Paste_Image.png

二、微信网页授权,获取用户信息

在公众账号中配置授权回调域名
通过微信的授权url,配置appid\回调url,授权后会跳转到回调url,回调的url上微信会自动加上一个code码,然后将code码传给后端,后端用code获取到openid(不通的授权方式获取的用户信息权限不一样)或其他用户信息返回给前端,授权成功

Paste_Image.png

三、微信支付

申请微信公众账号支付,申请成功之后,配置支付授权目录(建议直接使用支付授权目录,不通过测试目录开发),支付授权目录要求如下(虽要求进去匹配,但实际开发过程中,支付页面是/cart/payment,但是只有配置/cart才生效,不知道为什么)

将openid传给后端,后端返回timestamp、nonceStr、package、paySign信息,然后再前端调用一下jssdk(按文档要求需要签名后再调用,但实际测试签名失败调用此sdk也能成功)
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付 后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: '', // 支付签名随机串,不长于 32 位
package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: '', // 支付签名
success: function (res) {
// 支付成功后的回调函数
},
cancle:function(res){
//取消支付的回调函数
},
fail:function(res){
//支付失败的回调函数
}
});

四、主要遇到的问题和注意事项

1.jssdk签名、微信授权回调地址都是需要外网地址的,这俩个都可以通过申请一个测试号就可以开发,外网地址可以通过第三方云服务,或者下载一个net123/花生壳将外网域名映射到内网ip,如果本身就有外网域名最好

2.微信支付必须要有一个认证的公众号才能开发(订阅号不能认证),并且必须要一个备案的的域名(可以是二级域名)

3.微信公众账号支付最好使用wx.chooseWXPay而不要使用 getBrandWCPayRequest,因为后者是现在新版本的已经不支持了,并且前者更安全

4.一个还未有更好解决方式的问题

Paste_Image.png

对应单页的web app来说,通过react-rooter的push来跳转页面,签名可能存在问题
实际中遇到的问题,在一个用thinkjs+react搭建的触屏版商城中开发微信公众账号支付,该项目是一个单页app,通过react-rooter来管理页面的跳转,整个流程如下:
登录=》微信授权网址=》跳转到回调url=》获取回调url中的code,传给后台获取openid,将openid存储下来
提交订单写道openid过去=》后台返回支付需要的必要参数=》跳转到支付页面/cart/payment=》签名=》调用支付接口
如果用路由自带的push的方法跳转到/cart/payment,那么通过window.location.href.split('#')[0]获取到的url拿去签名会签名失败,但是将首页的url传过去才能成功
但是如果遇到从其他活动直接跳转到提交订单页面(如果没有登录的情况下,会跳转到登录页面)=》登录后回调的url会是之前的url,此时如果再支付iphone5s会一直报当前url未注册(而当前url的地址是提交订单页面),但是iphone6当前url的地址是首页,会导致支付失败,但是安卓手机能够正常支付

最后通过window.location.href跳转到/cart/payment,签名url还是window.location.href.split('#')[0]就都能正常支付,但是对于单页app来说这样的跳转会很慢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容