H5微信支付

现在有一个需求是这样的,我需要在一个分享到微信中的H5页面做微信支付功能,
代码如下:
wx.config({

                            debug: true,
                            appId: 'wxf34f65e92d58dceb',
                            timestamp: data.timestamp ,
                            nonceStr: data.noncestr,
                            signature: data.sign,
                            jsApiList: ['chooseWXPay']
                        });
                        wx.error(function(res){
                            alert(JSON.stringify(res));
                        })
                        wx.ready(function(){
                            wx.chooseWXPay({
                                timestamp : data.timestamp,
                                nonceStr: data.noncestr,
                                package: "prepay_id=" + data.prepayid,
                                signType: 'MD5',
                                paySign: 'Sign=WXPay',
                                success:function(data){
                                    alert(JSON.stringify(res));
                                },
                                fail:function(res){
                                    alert(JSON.stringify(res));
                                },
                                cancel: function(data){

                                }
                            })
                            测试时提示我支付场景非法。之后又返回一个fail的错误提示,后台说这是公众号的支付功能,用的话前端需要拿到授权的code给他,让后台获取到open。前端怎么获取code?
阅读 6.6k
3 个回答

如果你只是在微信内部采用 h5 调用微信支付,请参看微信 h5 调用接口.

简要描述一下流程

  1. 后台需要根据用户的 openId 生成一个微信订单
  2. 你利用此订单的数据调用此接口即可触发微信支付

前端需要做的是

  1. 和后台定义一个接口,传入用户的输入金额等给后台生成一个微信订单
  2. 利用 ajax 调用此接口,将返回的订单参数传入微信封装的 js 接口触发支付行为

后端内容

  1. 确定支付的调用地址,并在微信商户的账号中进行绑定
  2. 利用前端传入参数生成微信账单

这里面关键是获取 openId.如果是注册型那么在用户绑定时就应该把 openId 记住.这样你在界面中只需要传递 userId 即可查找到对应的 openId.获取 openId 的方法详见 openId 获取

如果你想在微信外使用微信支付,那么请参看 h5 支付

最后说一下微信开发经验

  1. 微信支付去看 微信支付开发文档,公众号去看 微信公众平台 开发文档
  2. 定位错误的方法,如果是接口,根据状态码去公众平台文档找答案,支付常见错误支付开发文档中都有图例标注
    支付常见错误
  3. 善用调试工具,公众号调试助手 ,这个可以极大的方便你调试 jssdk.

首先你去微信公众平台里面配置你的回调域名,具体怎么配自行查找。这个域名不用带文件,比如www.baidu.com就算可以了。如果你公司的域名是www.nigongsiyuming.com 那就这个可以了
假设你使用的静默授权。
你首页的urL应该是这样的(用户点击的时候的url,也就是以后你要放到公众号菜单那里的url)
http://www.baidu.com/connect/...你们公众号的appid&redirect_uri=重定向的url如www.baidu.com/index.html&response_type=code&scope=snsapi_base#wechat_redirect”;
跳转过后,你微信开发者工具上的url会是这样的:
http://www.baidu.com/index.ht...
看到code没,从url上面获取参数这个自行查找。

前提是网站已经备案

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题