java迷路记-微信支付之公众号支付小结

来源:互联网 发布:手机淘宝修改评价 编辑:程序博客网 时间:2024/06/05 16:54

最近两个星期在搞微信的公众号支付时,遇到了不少坑,现将记得的总结下来:

1、首先是商户申请微信支付后得到支付商户号和商户秘钥。

2、有了上面两个东西后,再加上公众号的appid和微信用户的openid即可调用微信的统一下单接口

3、在https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1这个开发文档中有统一下单接口文档说明,其中通知地址字段,也是一个自己写的一个接口,当在微信输完密码后会自动调用此接口;交易类型字段如果是公众号支付,那么填写为JSAPI,用户标识即openid当是公众号支付时,此字段也必须填。

4、这些字段都用一个对象保存起来后就可以进行md5加密签名了,然后继续将签名存到对象中,将此对象去调用微信的统一下单接口

UnifiedorderResult unifiedorderResult = PayMchAPI.payUnifiedorder(unifiedorder);public static UnifiedorderResult payUnifiedorder(Unifiedorder unifiedorder){String unifiedorderXML = XMLConverUtil.convertToXML(unifiedorder);log.info(unifiedorderXML);HttpUriRequest httpUriRequest = RequestBuilder.post().setHeader(xmlHeader).setUri(MCH_URI + "/pay/unifiedorder").setEntity(new StringEntity(unifiedorderXML,Charset.forName("utf-8"))).build();return LocalHttpClient.executeXmlResult(httpUriRequest,UnifiedorderResult.class);}
5、调用统一下单接口之后,查看一下返回值是否成功getReturn_code,成功的话,就可以重新组装一个对象,此对象用来调用微信的js唤起输入密码的窗口,对象所需要的参数也是在https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6此接口文档中有说明,其中对象中的参数必须与文档所要求的参数一致,大小写都必须一致,因为对象中有个签名字段,此字段的值是拿其他字段来进行md5加密后的
6、用后台返回的json对象为微信js所需要的参数进行赋值,如果没问题,便能成功唤起微信的输入密码界面。
7、输完密码后,微信便会调用你的回调接口,之后就完成了。
8、微信公众号中还要设置支付授权目录,在微信支付-开发配置下面填写。比如你的支付界面的地址是a/b/c,则这里的
支付授权目录为a/b/,即将最右边斜杠后面的都删掉即可。
因为是第一次弄微信支付,所以也只是把一些大概整理一下,因为是调用别人写好的一些封装,所以还有很多底层代码的封装还没怎么细看。现在只是记录个微信支付流程的大概步骤。

原创粉丝点击