全面详细的微信支付思路流程以及项目代码分享

本文详细介绍了微信支付的整个流程,包括如何获取code、openid,调用微信支付下单接口生成预付单,以及支付回调的处理。在获取code时可能会遇到redirect_uri错误,文中给出了解决方案。此外,还提供了关键代码示例和项目的相关SDK。
摘要由CSDN通过智能技术生成

之前一直没有接触微信支付这方面的业务,现在因项目需要,需要用到此功能,开始各种百度,稍微了解了一下,微信支付分为:

附加微信开发文档返回报错参考路径:

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

支付宝支付、APP支付、扫码支付,但是对于H5支付和支付宝支付现在还是没有彻底搞明白他两的区别,希望大佬们可以稍微提点一二,小弟先在此谢过!

大体思路如下:

1】.获取code(用户进入微信公众号即可获得code,直接通过request.getParameter("code")获得),

       一般情况下前台会传过来,后台直接拿;

      或者自己去获取code值,参考链接https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

参考获取code值的几种情况:https://blog.csdn.net/angle_greensky110/article/details/32936289

获取code值:(1)

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

获取code值:(2)  不同点就是scope这块的不同,下面这种是微信弹出授权页面url:需要用户授权,才能获取code

https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=http://localhost:8888/wxProcess2.aspx?reurl=" + reurl + "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect

      里边appid要改变换成自己项目中的appid即可,redirect_uri要改变,其余不用改变。

     其中可能出错的地方是redirect_uri,我自己也遇到过这个坑,在此把解决方案也发出来,方便大家参考

   获取code时,出现微信的redirect_uri参数错误解决办法

      参考链接:https://www.cnblogs.com/xbj-2016/p/7086149.html

若没有错误,在微信客户端点开下面链接,会打开的页面就是你上图中域名的地址,其页面中的地址就会包含code值,现在就获取到code了,棒棒哒!

2】.根据code获取openid

      code获取到的是access_token,json字符串,里面有个参数为openid,这是我们需要的;

      openid即就是每个用户在同一个公众号appid中的唯一标识,他就是用来识别不同用户的;

      Code值只可以使用一次,然后就过期失效,若使用同一个code值去获取openid,显示已被使用,报错,

      即使同一个人使用也不行;Code获取openid,同一个用户所获取到的openid永远是同一个,不会改变。

      Access_token两个小时就会失效, 但是Openid不会失效。

3】.客户端页面中点击支付按钮时,给数据库中保存订单,(如此单多少钱等等)

4】.调微信支付下单接口(最终是要拿到预付单信息prepay_id,说明就成功了)

     里面传入各种参数,和上面生成的openid,来生成sign签名,然后把这些参数(包括openid、sign签名)转成xml格式,

    调用微信服务器,生成xml字符串,把他转成map格式,然后拿取预付单信息prepay_id,把其当成参数,再次获取生成sign

    签名,然后把这些参数传给前端(json格式),到这块已经支付成功了;

5】.回调方法

回调方法中作相应的业务逻辑处理,到了回调方法中,就说明已经支付成功了,现在就是把数据库中的对应订单改变其状态啥的,例如为已支付,完了后返回给前端&#x

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stone.小小的太阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值