1.1 微信支付接入指引与支付安全

news2024/11/24 2:32:54

微信支付接入指引与支付安全

文章目录

  • 微信支付接入指引与支付安全
  • 一、微信产品介绍
    • 1.1 付款码支付
    • 1.2 JSAPI支付
    • 1.3 小程序支付
    • 1.4 Native支付
    • 1.5 APP支付
    • 1.6 刷脸支付
  • 二、接入指引
    • 2.1 获取商户号
    • 2.2 获取AppID
    • 2.3 绑定商户号与AppId
    • 2.4 获取秘钥和证书
      • 2.4.1 申请API秘钥
      • 2.4.2 申请API证书
  • 三、支付安全
    • 3.1 对称加密与非对称加密
      • 3.1.1 优缺点
    • 3.2 身份认证
    • 3.3 数字签名
      • 3.3.1 摘要算法介绍
    • 3.4 数字证书
      • 3.4.1 Https中的数字证书

一、微信产品介绍

官方网站:微信支付 - 中国领先的第三方支付平台 | 微信支付提供安全快捷的支付方式 (qq.com)

我们可以看一下“产品中心”中的”支付产品“

image-20230904203724884

1.1 付款码支付

产品中心 - 微信支付商户平台 (qq.com)

image-20230904203945540

1.2 JSAPI支付

产品中心 - 微信支付商户平台 (qq.com)

”线下场所“是商户展示自己的商户二维码,用户进行扫描并输入金额

image-20230904204024418

“公众号场景”是指用户在微信内进入商家的公众号内进行支付

image-20230904204033622

“PC网站场景”是用户在网站中展示一个二维码,用户进行扫描

image-20230904204044797

1.3 小程序支付

产品中心 - 微信支付商户平台 (qq.com)

在小程序中下单并且进行支付

image-20230904204351120

1.4 Native支付

商户展示支付二维码,用户扫一扫完成支付的模式,这种方式适用于pc网站

之前提到的JSAPI支付也适用于pc网站的情景

Native支付是用户扫描二维码后直接展示由商家指定的的支付金额

JSAPI支付是用户扫描二维码后需要由用户自己去输入一个支付金额

image-20230904204528308

1.5 APP支付

是指商户通过在移动端独立的APP应用程序中集成微信支付模块从而完成支付流程的一种方式。

这种支付方式我们需要有一个APP,例如向美团

image-20230904204923790

1.6 刷脸支付

用户在刷脸设备前通过摄像头刷脸,然后识别身份后进行的一种支付方式,适用于线下实体场所的一个收银场景

image-20230904205110067

二、接入指引

2.1 获取商户号

我们接下来都用PC端进行练习

image-20230904205946425

下面是接入流程,在上面的页面往下翻

image-20230904210132253

之后根据步骤填写信息即可

image-20230904210223792

完成后进行登录,就可以看到后台页面了

image-20230904211501922

后台中会有一个登录账号,这个账号就是我们的商户id

image-20230904211634505

2.2 获取AppID

我们下面进行第三步“绑定场景”,在这个步骤中我们需要一个AppId

将AppId和刚刚申请到的商户号进行关联

image-20230904212745374

怎么申请AppID?我们需要申请一个微信公众号

地址:微信公众平台 (qq.com)

在此处进行注册

image-20230904213035290

账号的类型选择服务号

image-20230904213118183

按照下面的步骤进行填写

image-20230904213257695

等待一到两个工作日后,我们就可以将此步骤获取到AppId与上一个步骤获取到的商户号进行绑定

在页面的首页,找到菜单栏当中的设置与开发

image-20230904213528915

2.3 绑定商户号与AppId

进入到网址:https://pay.weixin.qq.com/

image-20230904213701040

下面的截图是视频中的截图

image-20230904213729294

此步骤完成后,在公众号这边会收到一个申请绑定的消息,点击同意即可

2.4 获取秘钥和证书

重新回到商户平台微信支付 - 中国领先的第三方支付平台 | 微信支付提供安全快捷的支付方式 (qq.com)

选择“账户中心”

image-20230904214135560

之后选择左侧菜单栏中“安全中心”下的“API安全”

image-20230904214229883

之后我们会看到三个参数

image-20230904214326796

API秘钥对应V2版本的API

API v3秘钥对应V3版本的API

2.4.1 申请API秘钥

API秘钥对应V2版本的API

API v3秘钥对应V3版本的API

API秘钥:专门针对V2版本的API设置的秘钥。

如果是第一次设置,后面就是一个设置按钮,如果不是第一次,后面就是一个修改按钮

image-20230904214536033

image-20230904214605056

APIV3秘钥:如果我们想接入的版本是APIv3版本,就需要设置APIv3秘钥(与设置API秘钥一个样)

如果是一次的话,后面的按钮时设置,不是第一次的话,后面的按钮是修改

image-20230904220315418

image-20230904214605056

我们可以借助一个随机密码生成器生成随机密码 - 密码生成器 - 密码批量生成器 (bmcx.com)

2.4.2 申请API证书

如果我们接入的是APIv3这个版本,在所有的API接口当中,我们都需要去使用这个API证书

如果我们接入的是APIv2版本的话,只需要在一些高级接口,比如说退款、企业红包、企业退款等等接口当中使用我们的API证书,在基本的支付流程中是不需要使用API证书的

如何申请证书

image-20230904220948849

之后按照要求填写即可

image-20230904221143084

下载一个证书工具,下载完后进行解压,安装

image-20230904221246946

填写信息的时候注意,商户名称要和营业执照的名称保持一致

image-20230904221627238

将下面的请求串复制到我们的商户平台中

image-20230904221850496

也就是粘贴到下面的框框中

image-20230904221954455

之后会生成一个证书串,进行复制

image-20230904222108356

然后再打开证书工具,粘贴找下面的位置,点击下一步

image-20230904222149827

现在我们就可以查看证书文件

image-20230904222245865

也就是下面的这种压缩包,一定要妥善的保管起来

image-20230904222305960

三、支付安全

3.1 对称加密与非对称加密

实现机密性最常用的手段就是加密,只有有特殊钥匙(密钥)的人才能对加密的文本进行解密

明文:加密前的消息

密文:加密后的文本

解密:使用密钥还原明文的过程

加密算法是公开的,但是密钥是保密的

密钥:一个字符串,度量单位是bit,如密钥长度128个bit位,就是16字节的二进制串

image-20230904224105914

按照密钥的使用方式,加密可以分为两大类:对称加密和非对称加密

对称加密:加密和解密的时候使用的密钥是同一个,是对称的,只要保证了对称的安全性,那通信过程就可以说具有了机密性

AES加密算法:密钥长度128、192或256,安全强度很高,性能很好,应用最为广泛的加密算法

加密分组模式:将明文分组加密,微信支付中使用AEAD_AES_256_GCM

非对称加密:有两个密钥,一个公钥publicKey,一个私钥privateKey。公钥可以公开给任何人使用,而私钥必须是严格保密的

使用公钥加密后只能使用私钥解密,反过来,私钥解密后也只能公钥解密

RSA加密算法:最著名的非对称加密算法

3.1.1 优缺点

对称加密

  • 优点:运算速度快
  • 缺点:秘钥需要信息交换的双方共享,一旦被窃取,消息会被破解

非对称加密

  • 优点:私钥严格保密,公钥任意分发,黑客获取公钥无法破解密文
  • 缺点:运算速度非常慢

3.2 身份认证

有了对称加密与非对称加密后,离安全性还差的挺远

Pat、Doug、Susan三个人有Bob的私钥

image-20230904231316760

Susan发信与Bob收信的时候

image-20230904231414332

如果Bob也想给Susan写信,这个时候Susan也要有自己的公钥和私钥,然后将公钥分给他的朋友们

image-20230904231623528

假如我们使用私钥加密,公钥解密会出现什么效果呢

Bob用自己的私钥对信进行了加密,那Susan、Doug、Pat三个人都可以对Bob的信进行解密image-20230904232005281

私钥加密,公钥解密并不是为了实现加密

Bob用私钥加密的信Susan用公钥解开,这表明Susan能够确认这封信确实是Bob发出的,而不是别人

image-20230904232106384

私钥加密,公钥解密的作用其实就是为了身份验证

3.3 数字签名

Bob决定给Pat写一封不加密的信件,但是要保证Pat收到的信没有被篡改过,也就是说要保证信息的完整性

实现完整性的手段主要是摘要算法,也就是常说的散列函数、哈希函数

  1. Bob写完信之后先用摘要算法生成信件原文的摘要MessageDigest

  2. Bob将摘要附在信件原文的下面,一起发送给pat

  3. Pat收到信之后也是两个步骤,Pat使用和Bob一样的摘要算法,加密信件的原文,得到信件的摘要

  4. Pat将加密后的摘要和Bob在原文中附加的摘要做一个对比,如果一致说明信件是没有被篡改过的

但是有一个漏洞,如果信件被黑客截获,并且黑客直接修改了原文,然后生成新的摘要,附加在原文的下面,伪装成原信件和原摘要

此时Pat是判断不出来的

因此摘要算法不具有机密性

image-20230904235130741

如何真正保证数据无法被篡改

一定要加入秘钥,确保信息的机密性

具体的流程如下

  1. Bob写完信后先用摘要算法生成信件的摘要

  2. Bob使用自己的私钥将将摘要加密,加密后的结果称之为数字签名

  3. Bob将数字签名附在信的原文下面,一起发给Pat

  4. Pat收信后,取下数字签名,用Bob的公钥解密得到信件的摘要

  5. Pat使用和Bob一样的摘要算法加密信件原文,得到信件的摘要

  6. Pat根据原文生成的摘要与Bob传输过来的摘要进行比对,如果一致就说明是Bob发的,并且是没有经过篡改的

    1,2,3过程叫做签名流程

    4,5,6过程叫做验签,验证签名

    黑客无法获取Bob的私钥,我们也是能够保证信息的机密性

image-20230904235902470

微信中签名与验签就是这个原理

3.3.1 摘要算法介绍

一个任意长度的字符串Z数据经过哈希运算之后会得到固定长度的字符串数据H,那我们就说H就是自己的哈希结果,又称作数据指纹或摘要

MD5就是一个非常典型的摘要算法

image-20230904233113918

摘要算法特点

1.不可逆:只有算法,没有秘钥,只能加密,不能解密

AES算法属于对称加密的一种,需要一个秘钥去加密和解密

RSA算法是非对称加密的典型算法,需要公钥和私钥

对称加密和非对称加密,解密的时候都是需要钥匙的,但是摘要算法是没有密钥的,也是不能解密的

2.难题友好性:想要破解,只能暴力枚举

3.发散性:只要对原文进行一点点改动,摘要就会发生剧烈变化(雪崩效应)

4.抗碰撞性:原文不同,计算后的摘要也要不同

可能会有两份不同的原文对应同一份摘要

常见摘要算法:MD5、SHA1、SHA2 (SHA224、SHA256、SHA384)

MD5、SHA1不具有强的抗碰撞性

目前用的比较多的就是SHA2 ,实际上是系列算法的统称

3.4 数字证书

Doug想要欺骗Pat,将自己的PublicKey给了Pat,他和Pat说这是Bob的公钥,但实际是Doug的公钥

image-20230905000150418

因此Doug就可以冒充Bob,Doug可以用自己的私钥做成一个数字签名,然后给Pat,Pat用假的Bob公钥进行验签,也是可以成功的,此时Pat误以为是和Bob通信,但是其实是Doug

image-20230905000333745

这种场景就是你误以为和微信服务器进行通信,其实是和黑客进行通信

此时就会有一个公钥的信任问题黑客可以伪造公钥,怎么判断公钥是真实的

答案:数字证书

  • 公钥: Bob的公钥

为了方式Bob的公钥被伪造,公钥不会采用直接发布的形式,他会被放在数字证书中

  • 所有者: Bob

证书的申请者

  • 颁发者: CA(Certificate Authority,证书认证机构
  • 有效期:证书的使用期限
  • 签名哈希算法:指定摘要算法,用来计算证书的摘要
  • 指纹:证书的摘要,保证证书的完整性(指纹也叫摘要)
  • 签名算法:用于生成签名,确保证书是由CA签发
  • 序列号:证书的唯一标识

image-20230905001120704

接下来看一下CA为Bob颁发数字证书的流程

  1. CA用证书信息中指定的Hash算法,根据证书信息计算整个信息的摘要,也就是指纹
  2. CA根据证书中的签名算法用自己CA的私钥进行加密生成证书的签名
  3. 把签名和证书的基本信息一起发布,Bob就得到了一个数字证书

image-20230905001726378

Bob拿到数字证书给Pat发送邮件的时候,只要在签名的同时再附上数字证书就可以了

image-20230905001906406

Pat收到信后首先把数字证书取出,对数字证书中的证书签名进行验证

对数字证书中的证书签名进行验证:

Pat用证书中指定的Hash算法根据证书信息计算整个证书的摘要,并且使用CA的公钥从数字证书的公钥解析出数字的摘要

将两个摘要进行比对,如果一致则说明验签通过,Pat就可以从数字证书中取出Bob的公钥

image-20230905002308463

之后Pat要对信件的签名进行验证

需要先用Hash算法计算信件的摘要

之后从数字证书中解析出来的Bob公钥对信件的签名进行解密,得到信件的摘要

必须两个摘要是否相等,如果一致则验签通过

通过后Pat就可以放心的读取信件的内容了

3.4.1 Https中的数字证书

应用数字证书的具体场景:https协议。此协议主要用于网页加密

首先有一个网站要使用https协议,首先网站需要向CA申请数字证书,CA会用自己的私钥对数字证书的基本信息进行加密、签名

数字证书的基本信息当中是存有网站公钥的,有了数字证书和一些必要的条件后,网站就可以以https协议的形式发布在互联网上了

image-20230905215836209

如果有一个客户端浏览器向这个网站发出一个加密的请求,那网站对网页进行加密后,会连同它的数字证书一起发给这个客户端的浏览器。客户端的浏览器接收到服务器发送过来的数字证书之后,会使用CA的公钥(证书认证机构的公钥)去解密这个数字证书,并对数字证书进行验签

默认情况下我们的操作系统当中都会有权威的CA证书列表,CA证书列表里面就会存有CA公钥

与此同时客户端也会判断当前访问的网址和数字证书信息中证书持有者是不是一致的,如果不一致说明这个网站是伪装的

image-20230905221909688

数字证书过期、数字证书被吊销或者是办法数字证书的CA机构不正规。这时我们的浏览器都会发出一些网站不安全的警告信息

如果数字证书是可靠的,客户端就可以顺利从证书中获取网站的公钥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1180067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java进阶篇--Executors类创建常见线程池

目录 线程池架构 newSingleThreadExecutor newFixedThreadPool newCachedThreadPool newScheduledThreadPool Executors和ThreaPoolExecutor创建线程池的区别 两种提交任务的方法 线程池架构 线程池是一种线程管理的机制,用于维护和复用线程,以…

手术训练系统项目

★ 手术训练系统项目 项目描述:手术训练系统,它提供了多项功能,包括账户登录与创建、数据库与账户管理、课程管理、小组管理、成绩统计、证书发布、训练和系统设置。 职责描述: 1、训练功能开发(任务概述、任务指导、评分规则、评…

惊艳!拓世法宝AI智能数字人一体机解锁数字文博的全民体验

在数字化的潮流中,我们见证了历史与现代技术的完美融合。在今年的“国际古迹遗址日”,世界首个超时空参与式博物馆“数字藏经洞”正式与公众见面,在这里开启了一场前所未有的文化探索之旅。 时间和空间被艺术化的数字技术巧妙地折叠&#xf…

建链时,please install openssl! use “openssl version“ command to check.

please install openssl! use “openssl version” command to check. 但是我已经安装了 编辑build_chain.sh文件 也可以用vi或者gedit命令 将 [ ! -z “ ( o p e n s s l v e r s i o n ∣ g r e p 1.0.2 ) " ] ∣ ∣ [ ! − z " (openssl version | grep 1.0.2)…

YOLO目标检测——红绿灯检测数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用:红绿灯检测数据集在自动驾驶、交通安全监控、智能交通系统、交通流量监测和驾驶员辅助系统等领域都有广泛应用的潜力数据集说明:红绿灯检测数据集,真实场景的高质量图片数据,数据场景丰富,含有国内红绿灯…

ARM64 linux并发与同步之原子操作

卷2:调试与案例分析 第一章 并发与同步 画了两张简图,方便理解,如下: 针对并发源的问题,我接触的项目中都是SMP系统,目前大部分也都是SMP系统; 对于SMP系统,情况会更复杂。 □ 同…

第二证券:特斯拉将推出低价电动汽车?最新消息

当地时间周一,投资者接连上星期五的达观心境,美国三大股指高开高走。美联储主席鲍威尔本周到会活动时将有两次揭穿说话,投资者期望从中得到更多关于本轮加息周期完毕的信号,但也对联邦基金利率可能在更长时期内维持在高水平保持警…

我的创作纪念日——2048天

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

Java并发工具-1-原子操作(Atomic)

一 原子操作之 AtomicInteger 1 概念解释 什么是原子操作呢?所谓原子操作,就是一个独立且不可分割的操作。 AtomicInteger 工具类提供了对整数操作的原子封装。为什么要对整数操作进行原子封装呢? 在 java 中,当我们在多线程情…

龙芯loongarch64服务器编译安装matplotlib

前言 根据我之前的文章介绍,龙芯loongarch64服务器中的很多python依赖包安装有问题,发现其中安装的"matplotlib"就无法正常使用,或报如下错误:ImportError: cannot import name _c_internal_utils from partially initi…

python 中文字符转换unicode及Unicode 编码转换为中文

废话不多说 直接开干 知识点 decode 字节编码可decode为str encode 将字符串转换为bytes类型的对象 (即b为前缀, bytes类型), 即Ascll编码, 字节数组 encode(‘unicode-escape’)可将此str编码为bytes类型, 内容则是unicode形式 decode(‘unicode-escape’)可将内容为unicode形…

智能座舱“卷“疯了!8295不再是最“亮”点,还需要这些顶级配置

前段时间,车圈被两款“极”字辈的新车刷屏:极越01和极氪001 FR。 前者可视作当前自主品牌车企高度智能化水平的“范式”,后者无疑是中国汽车品牌颠覆极限性能的代表作。 同时,这两款车将座舱配置作为卖点进行了详细推送&#xf…

iview table 表格合并单元格

一、如图所示 二、实现方式 表格用提供的span-method属性 <template><Table ref"table" border :span-method"handleSpan" :row-key"true" :columns"tableColumns" :data"tableData"no-data-text"暂无数据&…

NOIP2023模拟12联测33 B. 游戏

NOIP2023模拟12联测33 B. 游戏 文章目录 NOIP2023模拟12联测33 B. 游戏题目大意思路code 题目大意 期望题 思路 二分答案 m i d mid mid &#xff0c;我们只关注学生是否能够使得被抓的人数 ≤ m i d \le mid ≤mid 那我们就只关心 a > m i d a > mid a>mid 的房…

HTML的初步学习

HTML HTML 描述网页的骨架, 标签化的语言. HTML 的执行是浏览器的工作,浏览器会解析 html 的内容,根据里面的代码,往页面上放东西,浏览器的工作归根结底,还是以汇编的形式在CPU上执行. 浏览器对于html语法格式的检查没有很严格,即使你写的代码有一些不合规范之处,浏览器也会尽可…

ZZ308 物联网应用与服务赛题第E套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;E卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用的…

系列十九、使用JDK生成HTTPS证书

一、HTTPS概述 历史上&#xff0c;HTTPS 连接经常用于网络上的交易支付和企业信息系统中敏感信息的传输。在 2000 年代末至 2010 年代初&#xff0c;HTTPS 开始广泛使用&#xff0c;以确保各类型的网页真实&#xff0c;保护账户和保护用户通信&#xff0c;身份和网络浏览的私密…

家政预约服务小程序源码系统 线上+线下两种模式 带完整的搭建教程

人们生活水平的不断提高&#xff0c;使得家政服务行业逐渐成为一个重要的行业。然而&#xff0c;传统的家政服务模式存在一些问题&#xff0c;如信息不对称、服务质量不稳定等。为了解决这些问题&#xff0c;开发一款家政预约服务小程序源码系统变得尤为重要。下面源码小编来给…

Unity 声音的控制

闲谈&#xff1a; 游戏开发比普通软件开发难也是有原因的&#xff0c;第一 游戏功能需求变化多样内部逻辑交错纵横&#xff0c; 而软件相对固定&#xff0c;无非也就是点击跳转、数据存储 第二&#xff0c;游戏需要很多3D数学知识、物理知识&#xff0c;最起码得有高中物理的基…

Python开发运维:Python3.7安装Django3.2

目录 一、理论 1.pip 2.Django 3.Pycharm国内镜像源 二、实验 1.Python3.7安装Django3.2 三、问题 1.安装django3.2报错 2.pip更新报错 一、理论 1.pip &#xff08;1&#xff09;概念 1&#xff09;pip pip 是 Python 的包安装程序。其实&#xff0c;pip 就是 Pyt…