微信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.技术开 ...
随机推荐
- 配置tomacat外部应用
原来我们的项目一般放置在tomcat文件夹的webapp下,现在我放到外面,也希望tomact可以找到他
- Trie详解
Trie,又名字典树.单词查找树,可以较高效地实现统计.排序和保存大量的字符串. 顾名思义,Trie是一个树状的结构,按照树型结构来存储字符串,显然是一种以空间换时间的方法.整体上理解和实现都不会很难 ...
- 一篇文章高效定位iframe
今天跟大家分享的是如何高效的定位iframe.我们来看一段最早的代码: # coding: utf-8from selenium import webdriverfrom time import sl ...
- 力扣leetcode 56. 合并区间
56. 合并区间 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: ...
- 30年技术积累,技术流RTC如何成为视频直播领域的黑马?
摘要:视频业务链的背后,本质是一张视频处理和分发网络.5G+云+AI时代下,实时音视频必然会步入到一个全新的发展期. 2020年这场肆虐全球的新冠疫情让很多企业重新审视自己对数字化的认识,正如 “大潮 ...
- Nginx Ingress on TKE 部署最佳实践
概述 开源的 Ingress Controller 的实现使用量最大的莫过于 Nginx Ingress 了,功能强大且性能极高.Nginx Ingress 有多种部署方式,本文将介绍 Nginx I ...
- Java 获取一段时间内的每一天
有时候我们会遇到一些业务场景,需要去获取一段时间内的每一天日期 public static List<Date> findDates(Date dBegin, Date dEnd) { L ...
- Fitness - 07.23 - Congratulation!
倒计时161天 运动54分钟,共计5组半,5.8公里.拉伸5分钟. 每组跑步10分钟(6.5KM/h),走路1分钟(5.5KM/h). 终于突破了耐力跑的一天,可喜可贺! 差一点就到6公里了,觉得自己 ...
- Palindrome subsequence(区间dp+容斥)
In mathematics, a subsequence is a sequence that can be derived from another sequence by deleting so ...
- ASP.NET Uploadify 上传文件过大 报错(http error)借鉴,以防忘记
Uploadify上传文件原来很早之前用过,没发现什么问题.今天再使用过程中,当文件大于30M的时候就会报错404.查看错误消息提示配置最大上传太小了.需要修改. 记得原来配置上传文件大小在这里:&l ...