微信支付开发 ( 超详细,建议收藏)(微信实名认证怎么更改钱包还有钱)
微信支付产品
在这里,微信提供几种支付产品,本文要讲解的是Native支付,也就是我们所说的扫码支付,只要了解一种支付的流程,其他几种很简单,差别不大。

支付流程图

通过官方给出的流程图,我们可以很清楚的看到整个支付的流程。下面就来详细说一下支付的流程,让大家尽可能的理解!
首先是用户在我们的应用上进行下单请求。在我们的后台请求进行处理,下订单、生成订单号在我们后台向微信统一下单API微信向我们后台返回一个交易连接我们后台将交易链接转换成二维码图片(可以用谷歌的zxing),然后将二维码图片返回给用户用户使用微信扫一扫进行支付(这一部分就是用户与微信交互了,跟后台没有什么关系)用户支付成功后进行异步通知,向我们后台发送支付结果后台收到支付结果后,向微信回复接收情况,通知微信我们已经收到了它的消息了针对未支付、掉单等等,我们可以写一个定时任务。
比如说3分钟去扫一下未支付的订单,调用微信的订单查询API,判断用户是否已经支付,然后进行自己的业务编写。
微信扫码支付就是这么个流程,是不是感觉很简单,并没有想象中那么复杂。
API调用协议规范

微信支付API

这些是微信提供的支付相关的API。
地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
统一下单API




这么多请求参数,是不是有点脑壳疼,不用着急,因为微信接口是支持xml格式的。所以,整理一下,就成下面这样啦。
CDATA标签用于说明数据不被XML解析器解析,即原样输出,不被转义。
举个简单的例子,在xml中, < 这样就会报错,因为它把 <转译成标签的左半部分,
但是如果<tag> <![CDATA[ < ]]> </tag>这样写,就说明 tag标签存储的是 ‘<’随机字符串(nonce_str参数)
随机字符串后面会参与生成签名,目的是为了保证签名的不可预测性,不懂的话没有关系,接着往下看,你就会明白。
微信的接口明确说明,随机字符串长度不超过32位。
以java为例(有很多种方式可以随机获取字符串,我用了比较简单的方法,为了让大家容易理解)
签名(sign)
签名生成的通用步骤如下(以下是从微信支付官网复制下来的):
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
stringA =“appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA”;特别注意以下重要规则:
第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d"
//注:key为商户平台设置的密钥key
sign=MD5(stringSignTemp).toUpperCase()=“9A0A8659F005D6984697E2CA0A9CF3B7”
//注:MD5签名方式
sign=hash_hmac(“sha256”,stringSignTemp,key).toUpperCase()=“6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC30B23E0EE2496E54170DACD6”
//注:HMAC-SHA256签名方式,部分语言的hmac方法生成结果二进制结果,需要调对应函数转化为十六进制字符串。◆ key设置路径:微信商户平台(http://pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置
密钥的作用是什么呢?
密钥是为了在网络传输过程中,确保数据不会被随意篡改,如果数据被篡改,那么最终的得到的密钥和原来的密钥是不同的,所以通过这个方法判断数据是否被篡改。
说白了就是在向微信发送请求之前进行签名,微信接收到数据之后,对数据以同样的方法签名,判断两次的签名是否相同,来分辨数据的安全性。
如果直接把数据传送过去的话,在传输过程中是很容易被篡改的。(使用抓包技术就可以轻松的完成)
这么多参数,难道都要传吗?
可以按照自己的需要进行选择性传参,但是接口文档里要求必填,那就必须要传,否则接口会调用失败。
简单的传参 :公众id、商户号、订单号、金额、货币种类,回调url,随机字符串、签名返回结果



结束
由于我没有营业执照,所以没有办法给大家演示支付效果。可以去办一个 个体工商户,但是为了学习,不必那么麻烦,可以知道它的流程就可以。
过几天我会用支付宝沙箱环境给大家进行演示支付宝扫码支付功能,记得关注哦。
整理不易,顺手点个赞支持一下吧,不足的地方欢迎指出,我会改进的。
微信公众账号申请地址: https://mp.weixin.qq.com/
微信商户id申请地址:https://pay.weixin.qq.com/static/help_guide/identity_selection.shtml
如果有不对地方请指出,以免误导他人。
作者:小榴莲℡
链接:https://blog.csdn.net/qq_44397812/article/details/106473402?utm_medium=distribute.pc_feed.none-task-blog-alirecmd-4.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-alirecmd-4.nonecase&request_id=来源:CSDN