一、背景

在面试程序员的时候,有两项经历会带来比较大的加分,第一你是否做过支付金融相关的业务,第二你是否写过底层框架中间件代码,今天我们聊一下微信支付是如何对接的。

二、相关概念

1、微信商户平台
要使用微信支付,第一步就是要先入驻微信商户平台,准备好你的企业营业执照、法人身份证等完成入驻,平台就会给你生成 MCH_ID(商户ID)、MCH_KEY(商户密钥)、然后申请开通支付产品类型、操作证书、绑定银行卡等等。
2、接入模式
直连模式
:商家自行开发系统对接微信支付进行交易,微信支付将资金结算到商户的结算账户.
服务商模式:商家没有自己系统,而是由微信支付官方注册入驻的系统开发商提供协助完成入驻,好像有赞就干了这个事。
3、支付产品类型
JSAPI网页支付:即公众号支付,在公众号网页点支付唤起支付控件。
小程序支付:小程序对接微信支付API 实现用户在小程序内完成交易场景。
另外还有线下付款码支付、扫码支付,这个就是付款的时候常问的话,你扫我还是我扫你?
另外还有AppSDK支付、H5支付等。

三、相关接口

1、统一下单:微信的各种支付产品类型(除付款码)都需要先调用统一下单接口,在微信后台生成预支付交易单,然后按各种不同的支付场景唤起对应的各支付控件。
请求参数:APPID\MCH_ID\随机串、订单编码、商品相关信息、价格、支付成功回调地址等。
返回值:预支付交易会话ID
两次签名概念
第一次签名:调用统一下单接口的签名
第二次签名:对预支付交易会话ID+APPID+随机串签名然后返回给小程序端,小程序端拿到这个签名串调接口唤起支付窗口。
2、wx.requestPayment:小程序端调用requestPayment唤起支付窗口,输入支付密码支付成功,微信服务端就会回调你在预支付时传过去的回调地址。
请求参数:预支付二次签名生成的串。

3、支付回调通知接口
回调时做一下解签,返回商户订单号,微信平台生成的支付单号(便于对账)、实际用户支付金额、支付时间等。
4、申请退款接口
原路退还、超过一年无法退款,可以部分退款,退款接口调用时需要加载操作证书进行双向认证。PS:我们没有给用户提供该接口,而是做在管理系统里,当客户需要退款时打热线电话找客服退,垂直电商和平台电商做法还是有些区别。
5、查询退款接口
微信退款有延迟,零钱支付20分钟原路返回,如果是银行卡3个工作日,PS:不确定现在是否有调整.

四、微信支付调用时序图

PS:在开发时如果是三方及以上的系统交互最好把时序图画出来,这样便于整体理解,一般开发用的多的就是流程图(产品逻辑)、ER图(数据流)、类图(代码结构)、时序图(代码交互)基本上就差不多了。

快速开发微信小程序之二-微信支付相关推荐

  1. 微信小程序:二开版优化新紫色UI云开发新款壁纸小程序源码

    这是一款由旧版https://airymz.com/3387.html进行优化二开的一个新版本 本壁纸表情包头像小程序采用(dcloud云开发)所以无需服务器与域名 无需服务器.无需域名.云开发直接上 ...

  2. 【微信小程序】二维码跳转规则的前缀匹配是什么意思?

    前言 基础库 2.12.0 开发者工具 1.03.2008270 微信小程序的二维码跳转规则 为了方便小程序开发者更便捷地推广小程序,兼容线下已有的二维码,微信公众平台开放扫描普通链接二维码跳转小程序 ...

  3. 微信小程序入门二:底部导航tabBar

    小程序底部导航栏组件tabBar,可以参考下官方的API:tabBar 先看代码 //app.json {"pages":["pages/index/index" ...

  4. 微信小程序获取二维码中URL中带的参数

    解析微信小程序获取二维码中的url参数 onLoad: function (options) { console.log(options) let qrUrl = decodeURIComponent ...

  5. 微信小程序开发学习笔记001--认识微信小程序,第一个微信小程序

    第一天,认识微信小程序,第一个微信小程序 1.什么是微信小程序? 是h5网页嘛?不是 微信张小龙说: 小程序是一种不需要下载安装即可使用的应用, 它实现了应用"触手可及"的梦想,用 ...

  6. 微信小程序普通二维码解析

    1.区别于微信小程序官方二维码是直接从onLoad的 options 解构出来就行,它是一个对象,这个大家都知道. 2.普通二维码 也是从onLoad的 options 里解构出来,此时options ...

  7. 微信小程序扫描二维码或者条码

    程序是需要扫描条形码然后跳转到对应的产品信息页,其实微信小程序就有一个扫码识别的API,下面一起来看看: wx.scanCode(Object object) 调起客户端扫码界面进行扫码. 示例代码: ...

  8. 微信小程序项目实例——二维码生成器

    微信小程序项目实例--二维码生成器 文章目录 微信小程序项目实例--二维码生成器 一.项目展示 二.项目核心代码 三.效果展示 文末 项目代码见文字底部,点赞关注有惊喜 一.项目展示 项目是一个简单实 ...

  9. 微信小程序转二维码方法分享

    微信小程序转二维码方法分享 需要转码的可以看看 这个东西是看个人需求的,618就要来了,各种活动也将来袭 有些小伙伴不知道怎么生成 为了方便小程序邀请活动没法外发,这里分享下将小程序转二维码的方法 首 ...

最新文章

  1. Powershell 如何批量获取文件大小的实现代码
  2. zigbee学习之路(二)点亮LED
  3. MYSQL GROUP_CONCAT 用法
  4. UAF学习之Adobe reader CVE-2013-3346
  5. xp版php,PHP5.3以后的版本如何在XP中安装
  6. python模仿windows文件管理_python – 在Windows中显示文件的资源管理器属性对话框...
  7. C++学习路线和参考资料
  8. Docker:Nginx-Redis-Mysql-PHP 部署
  9. CSS清除默认样式,看完这篇彻底明白了
  10. suse 安装php5.4_SUSE LINUX 安装Apache2 + PHP5 (普通安装,不是yum)
  11. Linux下实现一个网卡绑定多个IP地址
  12. BZOJ5343[Ctsc2018]混合果汁——主席树+二分答案
  13. 大数据技术平台主要分为哪几类
  14. 全局替换字体,开源库更方便!!! 1
  15. java开发之权限管理详解
  16. ftp服务器文件查找,ftp服务器中查找文件
  17. 用友政务U8补丁包下载地址
  18. 保护水资源公益网站html,保护水资源公益广告词
  19. 数字逻辑电路(一、基本概述、数制及其转换)
  20. 【翻译】HCP: A Flexible CNN Framework for Multi-Label Image Classification

热门文章

  1. 系统集成项目管理工程师—案例分析重点记忆内容
  2. 揭秘:日赚10万的骗局,快过年了,别掉进无知的偷天陷阱!
  3. Android Support库——support annotations
  4. 算法工程师:在算法“黑箱”中保障用户知情权
  5. Laya:基于Prefab的简单UI框架。
  6. 统计文本字母数量-C语言实现
  7. Delphi操作word的基本用法
  8. Java 端口号的取值范围是怎样的?
  9. 织梦网站,织梦cms网站优化,织梦网站程序
  10. 成功解决 无法访问服务器端口问题