文档章节

关于微信支付

Object_小风
 Object_小风
发布于 2016/07/21 21:53
字数 1085
阅读 296
收藏 10

微信支付作为当下第二大第三方,毋庸置疑是大家都要接入的支付方式。

我们就接入了微信支付除刷卡支付之外所有的支付方式,包括隐藏的wap支付。

微信支付和大众化的支付异同点:

APP支付就是应用直接呼起微信客户端,完成支付

扫码支付,就是最近搞促销的超市,用微信扫一下就拿到了商品价格,直接付钱

wap支付,官方并没有公布在web上,它其实和公众号支付的类型是一样的,只是这个支付方式是在非微信客户端的其他手机H5上呼起微信支付

公众号支付,就是在微信的公众号内选择订单完成支付(公众号是一个蛮好玩的东西)

做支付的同学都知道,接一个通道,基本就是扣款,退款,查询,支付回调,,退款回调(支付宝退款是异步回调的)。

微信将扣款接口拆分成统一下单和调起支付接口,商户后端完成统一下单然后将接口组装交给无线客户端来调用微信支付接口。这个统一下单在我理解是将成单操作提前,来简化呼起微信客户端后的操作,增加用户体验。

微信的退款也拆分成了两个接口,申请退款和查询退款,申请退款后通过主动查询来轮询结果。并发量大的时候异步确实是个不错的选择,毕竟网络一波动线程池就全部等待结果返回无法释放还是很蛋疼的。

微信支付几种支付方式流程的区别

微信支付其中wap,app支付流程差不多,公众号多了一步授权获取openid,扫码流程稍微复杂一点。

简单介绍下

app支付

1,用户打开商户app,选择商品下单

2,商户后端成单之后发送微信统一下单,拿到prepayid,组装支付参数返回app端

3,app端调用微信支付接口,呼起微信支付,用户完成付款,微信返回APP端结果,是否展示成果H5页面(0:展示成果页面  -1:异常 -2:用户取消支付)

4,微信扣款完成,将支付结果通知商户后端

5,订单系统等待支付系统主动推送结果更改订单状态。

 

扫码支付(PC端)

1,app端按微信要求生成二维码

2,用户打开微信扫码,扫码后,微信会回调商户后端

3,商户后端成单后从微信统一下单,拿到prepayid

4,然后直接返回(2中微信有请求商户后端)给微信,呼起微信支付

5,微信扣款完成,将支付结果通知客户端

6,app端等待商户后端主动推送支付结果,展示用户成功页面

 

我们为了让用户更快的支付,也把成单操作提前了,只要用户点击商品生成二维码,我们就立刻统一下单拿到prepayid。

 

代码的建议

1,各种配置和动作接口尽量抽象出来,因为公司拓展可能出现多个公众号,多个app,以后新增的话就可以只配下appid之类的就可以了,简化代码开发,避免冗余。

2,是否可以多个app都使用一套appid,我也不是很清楚,以前我们两个app就共用的一个appid app支付,偶尔会出现A.app支付完了跳到B.app(在用户这两个app都安装的情况下),所以还是尽量分开吧。

3,微信所有交互都是https请求,退款需要证书,其他无证书,post请求完成交易动作,获取openid是get请求,最好封装一个http交互工具。

好的代码都是不断完善的,

有时间尽量多看看自己写的旧代码,可能以前的你并不懂如何更好的设计,那么现在既然知道了就应该去适当的重构。

送给热爱编程的我们。

© 著作权归作者所有

共有 人打赏支持
上一篇: 说说内存可见性
下一篇: hashmap简介
Object_小风
粉丝 3
博文 43
码字总数 20927
作品 0
朝阳
程序员
私信 提问
Magento微信跨境支付模块V2.1发布

关于微信跨境支付(WeChat Cross-border Payment) 微信跨境支付的核心功能是实现“人民币收款,向境外商家结算外币”。微信支付已支持:英镑、港币、美元、日元、加拿大元、澳大利亚元、欧元、...

Alipaymate
2015/11/21
0
1
微信浏览器中调用支付宝支付

众所周知,在微信浏览器中是无法唤起支付宝的,会提示请在浏览器中打开,如果非要在微信浏览器中调起支付宝的话,只能是跳出微信浏览器,关于这一点,在支付宝官网给出了一个例子。但是,话说...

手不要乱摸
2017/03/18
0
0
微信h5牛牛平台出租搭建微信支付之html5支付开发

一、前提: 想接入微信支付,同时开通微信支付的功能,然后微信支付相关的设置是到微信h5牛牛出租搭建平台(h5.fanshubbs.com)去设置的,微信h5牛牛平台Q1687054422做的还是很完善,申请好微信...

黑小虎kk
2018/01/11
0
0
php后台开发—微信分销那点事

前段时间公司有个项目,微信商城那部分的,其中有关于分销的需求,现在来谈谈在过程中遇到的问题。(目前只有一级分销,通过谁的分享链接购买,佣金归谁) 分销,从代码层面来看,就是微信支...

极客简讯
2018/05/14
0
0
微信支付forthinkphp5-code

微信支付forthinkphp5-code Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流2017-08-0737 阅读 微信 # WxPayAPI WeiXin Pay API v3 for PHP, Modified by lostphp(lostphp.com) ## 微信......

Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流
2017/08/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

dockerfile 镜像构建(1)

通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下: [root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 . 运行镜像: [root@iZuf61quxhnlk9m2tkx16cZ de...

Canaan_
14分钟前
0
0
Redis radix tree源码解析

Redis实现了不定长压缩前缀的radix tree,用在集群模式下存储slot对应的的所有key信息。本文将详述在Redis中如何实现radix tree。 核心数据结构 raxNode是radix tree的核心数据结构,其结构体...

阿里云云栖社区
16分钟前
3
0
vue import 传入变量

在做动态添加component的时候,传入变量就会报错,出现以下错误信息: vue-router.esm.js?fe87:1921 Error: Cannot find module '@/components/index'. at eval (eval at ./src/components ......

朝如青丝暮成雪
18分钟前
0
0
Flutter开发 Dio拦截器实现token验证过期的功能

前言: 之前分享过在Android中使用Retrofit实现token失效刷新的处理方案,现在Flutter项目也有“token验证过期”的需求,所以接下来我简单总结一下在Flutter项目中如何实现自动刷新token并重...

EmilyWu
19分钟前
5
0
final Map可以修改内容,final 常量不能修改

1.final Map 可以put元素,但是不可以重新赋值 如: final Map map = new HashMap(); map = new HashMap();//不可以 因为栈中变量map引用地址不能修改 2.final str = “aa”; str = "bb";/......

qimh
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部