位置: 编程技术 - 正文

微信支付的开发流程详解(微信支付的开发公司)

编辑:rootadmin

推荐整理分享微信支付的开发流程详解(微信支付的开发公司),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:微信支付的开发公司,微信支付的开发者,微信支付的开发者,微信支付的开发资料,微信支付的开发公司,微信支付的开发者是谁,微信支付的开发公司,微信支付的开发者是谁,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在公司做了微信支付的接入,这里总结下开发的一些经验

注意,我使用的是微信开放平台的支付,与手机app相关,而与公众账号无关。

微信支付的主要操作流程

1.用户浏览app,选定商品然后下单。

2.服务器处理订单逻辑,开始正式发起支付流程

3.首先,后台服务器向weixin服务器发起请求,获取一个token。

4.后台服务器拿到token,使用和其他参数加密,再次向weixin服务器发起请求,获取一个预支付prepayid

5.后台服务器将该prepayid返回给app客户端

6.app调用手机上的微信控件,完成付款流程。

7.app向后台服务器发起一个回调请求,通知服务器交易完成。

8.weixin服务器处理完所有的流程后,向后台服务器发起一个post请求,正式通知后台服务器交易完毕

上面流程的一些注意点:

1.每次获取的token是有时效的,默认是s,而且每天最多获取次,因此最好放到redis中缓存起来,等失效后再去重新获取

2.app发起的回调默认是不可靠的,后台应该尽可能(不是必须)向微信服务器发起订单查询,查询本次交易的结果。

3.weixin服务器向后台发起的notify,才是确保交易完成的最后屏障。后台服务器确认后必须返回“success”,否则weixin服务器会尝试重发请求。

获取token

这步很简单,发送一个get请求即可。只需配置正确参数。

获取prepayid

在微信支付的开发流程中,最繁琐的就是获取prepayid。

这一步我们需要组装这样一个参数:

组装package

这里的第一步就是组装package:

组装package需要的参数如上面代码所示,所以我们需要准备一个params,然后准备签名,签名流程如下:

1.按照key的字典序,对params进行排序,然后拼接成字符串,注意这些key不包括sign

微信支付的开发流程详解(微信支付的开发公司)

2.在上面的字符串后面拼接key=paternerKey,然后对整个字符串进行md5签名,然后转换成大写,此时我们就得到了签名

然后我们将所有params的value进行urlencode转码,然后后面拼接上sign=signValue,就得到了package字符串。

这里创建MD5的过如下:

组装package的代码:

继续组装参数

得到package后,我们继续组装参数:

这里需要的参数为:

traceid=test_

注意这里有个坑:

参与签名的是上面的参数,但是最后的参数中不包括appKey,签名后要记得删除。

1.所有参数按照字典序排序,然后拼接

2.进行sha1签名,拼接到上面字符串的后面

3.注意这里要删除appKey,然后加上sign

获取sha1签名的代码如下:

随后我们获取到这样的参数:

获取prepayid

代码如下:

我们获取的prepayid格式应该是这样:

{"prepayid":"ebff4c9","errcode":0,"errmsg":"Success"}

再次签名

这里采用上面sha1的签名方式再次签名,获取到下面的参数:

后台服务器将该结果返回给app,此时app即可发起支付。

上面的流程代码为:

后台异步通知

微信服务器发来的notify异步通知,才是支付成功的最终标志,这一步处于安全起见,我们必须进行延签:

延签代码如下:

整体流程如下:

最后说明一点,用户在手机上付完款,并不算支付成功,只有weixin服务器收到notify通知返回的success时,才算交易最终成功,此时我们的手机可以收到微信官方发来的一条消息。

标签: 微信支付的开发公司

本文链接地址:https://www.jiuchutong.com/biancheng/301758.html 转载请保留说明!

上一篇:PHP基于单例模式编写PDO类的方法(php写一个简单的单例模式)

下一篇:PHP经典算法集锦【经典收藏】(php技术)

  • 广东省增值税发票勾选平台
  • 企业所得税年度汇算清缴时间
  • 企业当期的所得税费用
  • 预计净残值的计算公式为
  • 装修费用摊销是当月还是次月
  • 应付债券转为实际债务
  • 通过网络手段获取用户行为的方法
  • 费用和利润的比例
  • 结转税金为贷方怎么结转?
  • 收到子公司非货币资产分配账务处理
  • 企业所得税期末贷方余额怎么办
  • 税收编码名称是什么
  • 个人所得税0申报逾期
  • 跨季度的发票怎么冲销
  • 印花税按次申报怎么报
  • 兼职取酬案例剖析
  • 总公司集中支付说明
  • 收到注册资金要交税吗
  • 模具费属于什么费用
  • Win7系统Syswow64文件夹是什么及能否删除的相关内
  • 升级鸿蒙系统后
  • 银行承兑汇票有纸质的吗
  • 民营非盈利企业好申请吗
  • 劳务费和服务费税率一样吗
  • 系统搜索力
  • 垫资计入什么会计科目
  • 购买销售商品
  • 诺曼底作战
  • qttask.exe是什么进程?qttask.exe是不是病毒?
  • explore.exe
  • print-js
  • 如何做世界上最小的遥控飞机
  • 注销小规模公司需要什么材料
  • vue的后端
  • vue父组件怎么调用子组件的方法
  • php扫二维码
  • ubuntu busier
  • 委托研发技术合同登记
  • 增值税专票跨月怎么冲红
  • 应收账款收不回来的情况说明
  • 事业单位无形资产折旧是当月还是下月
  • 公司为员工代扣代缴
  • 应付票据是商业承兑汇票吗
  • 商业汇票的承兑银行必须具备下列条件
  • 企业办理土地证需要哪些资料和手续
  • 房地产小规模纳税人预缴税款如何填申报表
  • SQL Server 2012 FileTable 新特性详解
  • 申请名称预先核准在哪个网站
  • 外贸出口企业如何申报增值税
  • 纳税人在工作
  • 垃圾清运费会计处理
  • 外经证预缴税款必须去外地交税吗
  • 企业职工福利费可用于职工的医疗卫生费用
  • 员工餐补是放入福利费吗?
  • 增值税留抵退税最新政策
  • 存货期末成本的计量
  • win8换win7详细过程
  • centos7修改网络
  • fedora系统怎么安装
  • 电脑审核策略更改是什么意思
  • ftp自动上传文件到服务器
  • linux halting
  • win7关闭右下角操作中心
  • win7 64位纯净版图标变成了一样该怎么办?win7旗舰版图标变成一样的解决方法
  • Linux安装完mysql后提示错误无法登陆mysql怎么办?
  • dos批处理命令大全
  • opengl绘制图形旋转
  • react-redux用法
  • Javascript HTML5 Canvas实现的一个画板
  • javascript that
  • js怎么用jquery
  • Internet Explorer 8 beta 中文版与IE7共存的解决方法
  • python图片处理酷炫效果
  • python容错
  • java使用jni
  • 深入理解新发展理念,推进供给侧结构性改革心得体会
  • 辽宁省国家税务局电子税务局官网
  • 江苏省国家税务局电话号码
  • 企业销售旧货增值税税率
  • 北京社保三方协议
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设