zoukankan      html  css  js  c++  java
  • 微信支付开发以及踩过的坑

    记录公众号微信支付开发以及踩过的坑

    支付开发文档链接:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1

    一.   开发配置

    1)       授权目录(及其重要)

        公众号后台/微信支付里配置

    2)       网页授权域名(获取权限时需要) 公众号设置/功能设置

    填写服务器的域名(请注意www. redkidedu.com 和redkidedu.com)也就是加www和不加www, 微信是严格验证的, 在后面获取用户权限时需要回调地址, 这个地址的域名和你所填写的域名必须一样, 否则报redirect_url参数错误

    3)       白名单设置(获取access_token) 基本配置/ip白名单

    详见微信公众号支付的开发配置

    链接: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3

     

    二. 简要说明

    调用支付接口

    可以看到我们需要这个统一下单接口中返回的参数prepay_id, 其它参数可以通过方法生成或者是固定的公众号参数

     

    接下来看统一下单接口:

    接口地址: https://api.mch.weixin.qq.com/pay/unifiedorder

    把所有所必须的参数找出来, 文档写得很清楚. 大概需要12个参数

    其中注意的是openid 以及sign(签名)这两个参数, 其中sign是由前面11个参数根据文档中指定的算法生成得来的

    这里说说openid的获取 : 参考链接如下

    http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

    从该链接找到微信网页开发/微信网页授权

    这里便有获取openid的参考文档

    所有的参数获取完毕之后, 就可以使用微信官方给的那段支付代码支付了

    注意: 页面一定要wx.config, 笔者第一次接触这个根本不知道还有这回事, 公众号支付文档就给了那段支付的代码, 然后我就莫名的一直失败,提示jssdk/pay未注册. 经过查看资料得知是这个缘故

     

     

    三. 坑

    1) 获取openid时踩了redirect_url的坑(域名一定完全相同, www惹的祸, 哭晕在厕所)

    2) 在生成wx.config所需参数signature时 , 在本机测试时因为域名不一样, url报invalid url domain, 那既然如此就把url写死吧。 然后就报invalid signature。因为笔者已经用那个在线的测试工具测了生成signature的算法, 就猜想应该是写死的地址与实际的地址不符报的错, 想了下那就修改hosts文件吧, 将域名指向我本机。这次终于ok了

    3) 支付时总是报当前页面url未注册

    分两种情况:

    3.1) 如果所报url确实是你当前支付的url, 那么基本可以确定就是你授权目录配置错误了

    http://redkidedu.com/ener/wx/pay/wxpay  这是我的支付页面controller地址

    http://redkidedu.com/ener/wx/pay/ 那么我只需配到上一级即可, 以/结尾, 因为是一个目录, 不需要全部具体.

    3.2) 如果所报url地址不是你当前支付的url, 那么可能就是参数什么的不对了或者wx.config没加. 要具体盘查原因.

     

    支付成功之后的图片(走到这里太心塞了)

     

    代码文件:

    PayController.java (支付controller)

    Token.java (wx.config的一些参数获取)

    Constant.java (一些常量, 比如公众号的appid, 等)

    PayUtil.java (工具类, 生成支付接口的参数)

    MD5Util.java (工具类MD5加密算法)

    HttpClientUtil.java (工具类执行get, post方法)

    pay.jsp 支付页面

    card.jsp 相当于订单页面(用来测试)

    card.jsp----PayController(生成参数)---------pay.jsp--------支付

    代码链接:https://github.com/waston1997/wechatPay

  • 相关阅读:
    HDU3336 Count the string(kmp
    HDU2087 剪花布条(字符串...半暴力写的?
    HDU4763 Theme Section(kmp
    HDU1251 统计难题(字典树|map
    HDU1305 Immediate Decodability (字典树
    priority_queue member function
    HDU
    洛谷 P3370 【模板】字符串哈希 (set||map||哈希||字典树(mle)
    mysql (master/slave)复制原理及配置
    mysql备份小记
  • 原文地址:https://www.cnblogs.com/wt20/p/7018514.html
Copyright © 2011-2022 走看看