微信App支付接入步骤&支付中前后端交互流程
最近对微信App支付(App端集成微信支付SDK)申请步骤,以及终端在进行微信支付时商户App、商户Server、微信App、微信支付Server的交互流程进行了简单了解。这篇文章应该算是学习笔记,分享出来,希望对感兴趣的朋友有一定帮助。
本文从以下三个方面介绍微信App支付:
- 微信支持哪几种支付模式?
- 如何申请接入微信App支付?
- 微信App支付流程(
支付过程中的前后端交互逻辑)
一、微信支付模式
微信支付的全部支付模式以及对应的支付场景如下:
- 付款码支付(场景:
线下面对面收银)
付款码支付是用户展示微信钱包内的“刷卡条码/二维码”给商户系统扫描后直接完成支付的模式。主要应用线下面对面收银的场景。 - Native支付(场景:
PC网站支付)
Native支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景。 - JSAPI支付(场景:
微信内H5支付)
JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付。应用场景有:
用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付;
用户的好友在朋友圈、聊天窗口等分享商家页面连接,用户点击链接打开商家页面,完成支付;
将商户页面转换成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付; - APP支付(场景:
商户App集成微信sdk完成支付)
APP支付又称移动端支付,是商户通过在移动端应用APP中集成开放SDK调起微信支付模块完成支付的模式。 - H5支付(场景:
手机浏览器支付)
H5支付主要是在手机、ipad等移动设备中通过浏览器来唤起微信支付的支付产品。 - 小程序支付(场景:
微信小程序支付)
小程序支付是专门被定义使用在小程序中的支付产品。目前在小程序中能且只能使用小程序支付的方式来唤起微信支付。
二、微信App支付申请步骤
App支付为终端在商户App内集成微信支付SDK,点击支付后通过调用微信支付SDK相关接口,唤起微信App从而完成支付流程。
微信APP支付申请步骤如下:
- 注册微信开放平台账号
需要的资料:
邮箱、企业注册地、开发者资料(姓名、手机号、联系地址、身份证号); - 认证开发者资质(认证资质后方可申请微信支付)
需要的资料:
认证公函的盖章电子版、企业全称、工商营业执照照片、对公账户(账户名称、账号、开户银行,个体工商户可用法人的银行账户代替)、认证联系人信息(姓名、电话、座机、邮箱、身份证号码);
申请开发者资质认证审核服务费:300元/次; - 创建应用获取AppID
需要资料:
应用名称、简介、官网、应用logo、安卓应用签名、安卓应用包名; - 微信支付商户平台接入微信支付
需要的资料:
超级管理员资料(姓名、手机号、邮箱)、营业执照照片、组织机构代码证照片(未三证合一)、法人身份证正反面照片、对公银行账户(开户名称、开户银行、开户支行、开户账号)、经营信息(经营类目、售卖商品描述)、公众号AppID - 在线签署协议
- 确定App绑定关系
2.1 注册微信开放平台账号
微信开放平台注册地址如下:
https://open.weixin.qq.com/
注册所需信息:
邮箱、企业注册地、开发者资料(姓名、手机号、联系地址、身份证号)。
微信开放平台注册步骤如下:
- 微信开放平台注册账号
注册地址:
https://open.weixin.qq.com/

- 填写注册信息
一般采用邮箱注册。

- 完善开发者资料:
开发者资料包括:姓名、手机号、联系地址、身份证号。

2.2 认证开发者资质
通过开发者资质认证后方可申请微信支付。

进入微信开放平台【账号-开发者资质认证】:
https://open.weixin.qq.com/
申请开发者资质认证审核服务费:300元/次;
申请所需材料:
认证公函的盖章电子版、企业全称、工商营业执照照片、对公账户(账户名称、账号、开户银行,个体工商户可用法人的银行账户代替)、认证联系人信息(姓名、电话、座机、邮箱、身份证号码);
认证审核时间: 1-5个工作日;
开发者资质认证操作步骤如下:
- 点击“现在申请”进入微信公众平台:

- 选择认证类型&上传公函:

- 上传工商营业执照:

- 填写对公银行卡信息:

- 填写联系人信息:

- 确认命名:

- 支付认证费用:

2.3 创建应用获取AppID
该步骤开始的前提:
APP开发基本完成,打包获取应用签名、包名(备用);
创建应用:
进入微信开放平台【管理中心-移动应用】https://open.weixin.qq.com/
所需信息:
应用名称、简介、官网、应用logo、安卓应用签名、安卓应用包名
创建应用并提交审核,审核通过后会获取到AppID。

2.4 微信支付商户平台接入微信支付
进入微信开放平台【管理中心/应用详情】“申请开通微信支付”:
https://open.weixin.qq.com/

申请所需材料:
超级管理员资料(姓名、手机号、邮箱)、营业执照照片、组织机构代码证照片(未三证合一)、法人身份证正反面照片、对公银行账户(开户名称、开户银行、开户支行、开户账号)、经营信息(经营类目、售卖商品描述)、公众号AppID
提交后系统会进行校验,校验通过会进行汇款验证,验证通过后即完成申请资料提交;
微信支付审核时间:1-5个工作日;
微信支付商户平台接入微信支付的操作步骤如下:

- 填写超级管理员姓名、手机号、邮箱,以创建申请单:

- 进入填写商户资料页面,选择主体类型为“企业”后,按页面提示提交相关信息,详见下图:

- 预览申请单并确认:

2.5 在线签署协议
微信支付审核通过后,需要在线签署协议。
- 审核通过后,待签约模版消息会通过
微信支付商家助手公众号推送给超级管理员

- 点击消息进入签约页面,核对商户信息和阅读协议后,点击签署,即可完成签约

2.6 确定绑定关系
微信支付交易发起依赖于公众号、小程序、移动应用(即APPID)与商户号(即MCHID)的绑定关系,因此商户在完成签约后,需要确认当前商户号同AppID的绑定关系,方可使用。
App集成微信支付SDK:
- 登录微信支付平台【产品中心/AppID账号管理/我关联的AppID账号】新增AppID账号;
微信支付平台:
https://pay.weixin.qq.com

- 前往微信开放平台【管理中心/查看/微信支付/商户号管理】确认授权申请。
微信开放平台:
https://open.weixin.qq.com/

三、微信App支付流程
终端用户点击支付后,商户客户端App、商户Server、微信客户端App、微信支付Server
商户App通过集成微信支付SDK完成支付大概需要经过以下步骤:
- 生成支付订单;
- 支付授权;
- 用户输入密码进行交易;
- 支付结果异步通知;
- 商户App验证支付结果,并提示用户;

流程说明:
- 步骤1-2:终端用户打开
商户App,浏览并选中商户在售商品,完成下单操作; - 步骤3:终端用户完成下单后,
商户App调用商户Server接口请求生成订单; - 步骤4-6:
商户Server调用微信统一下单Api请求生成预付费订单pre_pay_id; - 步骤7-8:
商户Server生成带签名的客户端支付信息,并将pre_pay_id、sign返回给商户App。 - 步骤9:
商户App调用微信支付sdk提供的支付Api,唤起微信支付;并传入订单号、签名、价格等信息。 - 步骤10-12:
微信App请求微信支付系统发起支付请求,微信支付系统完成支付参数验证,并将支付授权返回给微信App。 - 步骤13-15:
微信App弹出支付密码输入窗口,用户收入支付密码并确认支付;支付密码由微信App调用微信支付系统相关接口传递给微信支付系统;微信支付系统完成密码校验,随后完成交易。 - 步骤16-18:
微信支付系统完成交易后,会通过异步通知的方式通知商户Server,商户Server完成数据库入库与其他逻辑操作后,通知微信支付系统处理结果。 - 步骤19-20:
微信支付系统完成交易后,通知微信App交易成功;微信App回调给商户App支付成功的消息。 - 步骤21-23:
商户App收到微信支付成功的回调后,会调用商户Server相关接口,再次确认订单是否支付成功,(此时若商户Server尚未收到微信支付系统支付成功的异步回调,会调用微信支付系统相关Api主动查询订单状态)商户Server将支付状态回调给商户App,交易完成。
参考
open帐号注册操作步骤:
https://kf.qq.com/faq/170811QrE3En170811bUNRJb.html
微信认证申请流程:
https://kf.qq.com/faq/161220Brem2Q161220uUjERB.html
移动应用创建流程:
https://kf.qq.com/faq/170824EnUNRJ170824bYnEJr.html
如何提交接入申请资料?
https://kf.qq.com/faq/180910aYF77n18091073a6Jj.html
商户申请接入时,如何签约?
https://kf.qq.com/faq/180910Rn6FbI180910ZbYNn2.html
商户申请接入时,如何确认绑定关系?
https://kf.qq.com/faq/180910QZzmaE180910vQJfIB.html
商家商户号与AppID账号关联管理
https://kf.qq.com/faq/1801116VJfua1801113QVNVz.html
========== THE END ==========

微信App支付接入步骤&支付中前后端交互流程的更多相关文章
- ios的Ping++支付接入步骤-b
1. Client 发送支付要素给 Server 2. Server 发送支付请求并将返回的支付凭据传给 Client 3. Client 调起支付控件完成支付 4. 渠道同步返回支付结果给 Clie ...
- thinkphp5.0 微信公众号接入支付宝支付
---恢复内容开始--- 真是无力吐槽这个需求了,想骂客户,好端端的非要在微信公众号接入支付宝,都知道微信公众号是拒绝支付宝的,屏蔽了支付宝,所以在微信公众号接入支付宝的话就必须手动复制链接跳出微信内 ...
- php 微信公众号接入支付宝支付
真是无力吐槽这个需求了,好端端的非要在微信公众号接入支付宝,都知道微信公众号是拒绝支付宝的,屏蔽了支付宝,所以在微信公众号接入支付宝的话就必须手动复制链接跳出微信内置浏览器,强制性打开web浏览器完成 ...
- Python 利用三个简易模块熟悉前后端交互流程
准备工作 在学习Django之前,先动手撸一个简单的WEB框架来熟悉一下前后端交互的整体流程 本次用到的模块: 1.wsgiref,这是一个Python自带的模块,用于构建路由与视图 2.pymysq ...
- iOS的Ping++支付接入步骤(详细)
Ping++ SDK 代码下载地址: https://github.com/CoderLeezhen/PingppDemo 参考链接: https://www.pingxx.com/guidance/ ...
- APP支付宝支付接入
1.app支付简介 买家可以在手机,掌上电脑等无线设备的应用程序内,通过支付宝(支付宝app或网页版支付宝)付款购买商品,且资金实行实时到账. 2.申请条件 1.申请前必须拥有经过实名认证的支付宝账户 ...
- 微信支付之扫码、APP、小程序支付接入详解
做电商平台的小伙伴都知道,支付服务是必不可少的一部分,今天我们开始就说说支付服务的接入及实现.目前在国内,几乎90%中小公司的支付系统都离不开微信支付和支付宝支付.那么大家要思考了,为什么微信支付和支 ...
- 微信APP支付V3版本签名 && APP下单/订单查询接口Python版实现
问题背景 最近接入微信支付,微信官方并没有提供Python版的服务端SDK,因而只能根据文档手动实现一版,这里记录一下微信支付的整体流程.踩坑过程与最终具体实现. 微信支付APP下单流程 根据微信官方 ...
- Android版-微信APP支付
首发地址: Android版-微信APP支付 欢迎留言.转发 微信极速开发系列文章(微信支付.授权获取用户信息等):点击这里 目录 1.注册账号.开发者认证 2.添加应用 3.申请微信支付 4.技术开 ...
随机推荐
- Flink-1.10中的StreamingFileSink相关特性
一切新知识的学习,都离不开官网得相关阅读,那么StreamingFileSink的官网介绍呢? https://ci.apache.org/projects/flink/flink-docs-rele ...
- 基于 GitBook 搭建个人博客
目录 基于 GitBook 搭建个人博客 1.为什么要写博客? 2.为什么选择使用 GitBook 来搭建? 3.搭建方式 3.1 GitBook 线上直接搭建 3.2 由基于Node.js的命令工具 ...
- Python和Nose实现移动应用的自动化测试
今天跟大家聊的是Python和Nose实现移动应用的自动化测试,希望对你们有帮助,有说的不好的地方,还请多多指教! 采用Appium进行自动化的功能性测试最酷的一点是,你可以使用具有最适合你的测试工具 ...
- unity2D物理引擎之-Rigidbody 2D
虽然Rigidbody 2D大致上可以看成是Rigidbody的2D化,大部分功能也是一致的,但是还是有一些细节问题. 一些事项: 1.任何添加到同一个 GameObject身上或者其子物体身上的 2 ...
- Java内存模型分析
在学习Java内存模型之前,先了解一下线程通信机制. 1.线程通信机制 在并发编程中,线程之间相互交换信息就是线程通信.目前有两种机制:内存共享与消息传递. 1.1.共享内存 Java采用的就是共享内 ...
- Codeforces1409 题解(A-F)
A. Yet Another Two Integers Problem 最优的操作中,\(k = \min(10, abs(a - b))\),记\(d=abs(a-b)\),最终的答案为\(ans ...
- 小程序开发-使用xpath解析网页html中的数据
最新有个微信小程序的开发需求,需要从网页中提取一些元素信息,获取有效数据 1. 了解到微信小程序里面不能直接操作dom元素,所以我们需要使用一些其他的npm包 2. 经过查到各方面的文档,最新决定用x ...
- C++——百分率
代码如下: #include <iostream> #include <cmath> using namespace std; int main() { double a; c ...
- 20190923-03Linux时间日期类 000 011
1.基本语法 date [OPTION]... [+FORMAT] 2.选项说明 表1-20 选项 功能 -d<时间字符串> 显示指定的“时间字符串”表示的时间,而非当前时间 -s< ...
- 【Oracle/Sql】清除重复而带出的性能问题
笔者使用的环境: # 类别 版本 1 操作系统 Win10 2 数据库 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bi ...