微信支付-全面详解(学习总结---从入门到深化)

1 篇文章 2 订阅
订阅专栏

关注公众号查看全部内容

 

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者
📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶
📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人 

微信支付_产品介绍

 微信支付介绍

微信支付(https://pay.weixin.qq.com)是腾讯集团旗下中国领先 的第三方支付平台,一直致力于为用户和企业提供安全、便捷、专业的在线支付服务。

 付款码支付

付款码支付是指用户展示微信钱包内的“付款码”给商户系统扫描后 直接完成支付,适用于线下场所面对面收银的场景,例如商超、便利店、餐饮、医院、学校、电影院和旅游景区等具有明确经营地址的实体场所。

 使用示例

 JSAPI支付

JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款。

 使用示例

 小程序支付

小程序支付是指商户通过调用微信支付小程序支付接口,在微信小程序平台内实现支付功能;用户打开商家助手小程序下单,输入支付密码并完成支付后,返回商家小程序。

 使用示例

 Native支付

Native支付是指商户系统按微信支付协议生成支付二维码,用户再 用微信“扫一扫”完成支付的模式。该模式适用于PC网站、实体店单品或订单、媒体广告支付等场景。

 使用示例

 APP支付

APP支付是指商户通过在移动端应用APP中集成开放SDK调起微信支付模块来完成支付。适用于在移动端APP中集成微信支付功能的场景。

 使用示例

 刷脸支付

刷脸支付是指用户在刷脸设备前通过摄像头刷脸、识别身份后进行 的一种支付方式,安全便捷。适用于线下实体场所的收银场景,如 商超、餐饮、便利店、医院、学校等。

 使用示例

 1.微信支付是__集团旗下中国领先的第三方支付平台。腾讯

 2.可以手动设置支付金额是____支付方式。JSAPI支付

 微信支付_前期准备工作

获取商户号 

微信商户平台:https://pay.weixin.qq.com/

场景:Native支付

 获取APPID

微信公众平台:https://mp.weixin.qq.com/

 

 注册流程

 关联流程

APPID:微信公众号 =》 开发管理 =》 开发设置 =》 获取AppID

 

 申请商户API证书

获取秘钥和证书

注意: 以上所有API秘钥和证书需妥善保管防止泄露。

 

这个样子就是申请成功了

 申请证书

 下载安装证书工具

 工具生成证书

复制请求串

 验证密码

 生成证书

 生成证书

 本地文件

 注意:

1、aplclient_cert.p12:包含了私钥信息得证书文件。

2、apiclient_cert.pem:从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保 管。

3、apiclient_key.pem:部分开发语言和环境不能使用p12文件,需要使用pem文件为了方便, 直接提供。

获取API秘钥 

 APIv2版本的接口需要此秘钥

步骤:登录商户平台 => 选择 账户中心 => 安全中心 => API安全 => 设置API密钥

生成随机密码https://suijimimashengcheng.bmcx.com/

 支付安全_信息安全的基础

 密码学基本概念

密码学是网络安全、信息安全、区块链等产品的基础,常见的非对称加密、对称加密、散列函数等,都属于密码学范畴。

中国古代加密 

公元683年,唐中宗即位。随后,武则天废唐中宗,立第四子李旦为皇帝,但朝政大事均由她自己专断。裴炎、徐敬业和骆宾王等人 对此非常不满。徐敬业聚兵十万,在江苏扬州起兵。裴炎做内应, 欲以拆字手段为其传递秘密信息。后因有人告密,裴炎被捕,未发出的密信落到武则天手中。这封密信上只有“青鹅”二字,群臣对此大惑不解。 

 

 破解:

武则天破解了“青鹅”的秘密:“青”字拆开来就是“十二月”,而“鹅” 字拆开来就是“我自与”。密信的意思是让徐敬业、骆宾王等率兵 于十二月进发,裴炎在内部接应。“青鹅”破译后,裴炎被杀。接着,武则天派兵击败了徐敬业和骆宾王。

 明文

加密前的消息叫“明文”(plain text)。

 密文

加密后的文本叫“密文”(cipher text)。

 密钥

只有掌握特殊“钥匙”的人,才能对加密的文本进行解密,这里的“钥 匙”就叫做“密钥”(key)。

 1.下列属于非对称加密算法的是____。RSA

支付安全_消息摘要 

 摘要算法就是我们常说的散列函数、哈希函数(Hash Function),它能够把任意长度的数据“压缩”成固定长度、而且独 一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”。

 作用:

保证信息的完整性

 回顾之前数字摘要

百度搜索 MySQL ,进入官网下载 ,会经常发现有 sha1 , sha512 , 这些 都是数字摘要。

 

 点击signature

 消息摘要实现

 public static void main(String[] args) throws Exception{
        // 原文
        String input = "xiaotong";
        // 算法
        String algorithm = "MD5";
        // 获取数字摘要对象
        MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
        // 获取消息数字摘要的字节数组
        byte[] digest = messageDigest.digest(input.getBytes());
        System.out.println(new String(digest));
   }

 注意: 加密后编码表找不到对应字符, 出现乱码

base64 编码 

public static void main(String[] args) throws Exception{
        // 原文
        String input = "aa";
        // 算法
        String algorithm = "MD5";
        // 获取数字摘要对象
        MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
        // 消息数字摘要
        byte[] digest = messageDigest.digest(input.getBytes());
        //       System.out.println(new String(digest));
        // base64编码
        System.out.println(new BASE64Encoder().encode(digest));
   }

1.下列可以实现消息摘要算法的是__。MD5

2.消息摘要算法主要作用_______。保证数据完整性

 支付安全_对称加密

 对称加密

对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。

 

 对称加密实现

package com.itbaizhan.encryption;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
/**
 * DesAesDemo
 */
public class DesAesDemo {
   public static void main(String[] args) throws Exception {
       // 原文
       String input = "xiaotong";
       // des加密必须是8位
       String key = "123456";
       // 算法
       String algorithm = "DES";
        String transformation = "DES";
       // Cipher:密码,获取加密对象
       // transformation:参数表示使用什么类型加密
       Cipher cipher = Cipher.getInstance(transformation);
       // 指定秘钥规则
       // 第一个参数表示:密钥,key的字节数组
       // 第二个参数表示:算法
       SecretKeySpec sks = new SecretKeySpec(key.getBytes(), algorithm);
       // 对加密进行初始化
       // 第一个参数:表示模式,有加密模式和解密模式
       // 第二个参数:表示秘钥规则
       cipher.init(Cipher.ENCRYPT_MODE,sks);
       // 进行加密
       byte[] bytes = cipher.doFinal(input.getBytes());
       // 打印字节,因为ascii码有负数,解析不出来,所以乱码
       //       for (byte b : bytes) {
       //           System.out.println(b);
       //       }
       // 打印密文
       System.out.println(new String(bytes));
   }
}

报错

 注意: 密钥是6个字节,DES加密算法规定,密钥key必须是8个字节, 所以需要修改上面key改成key="12345678"

 

 注意: 出现乱码是因为对应的字节出现负数,但负数,没有出现在 ascii 码表里面,所以出现乱码,需要配合base64进行转码。

 解密

package com.itbaizhan.encryption;
import cn.hutool.core.codec.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
/**
* DesAesDemo
*/
public class DesAesDemo {
    public static void main(String[] args) throws Exception {
        // 原文
        String input = "baizhan";
        // des加密必须是8位
        String key = "12345678";
        // 算法
        String algorithm = "DES";
        String transformation = "DES";
        String s = encryptDES(input, key, algorithm, transformation);
        String test = "znLsz/8WnU4=";
        String s1 = decryptDES(test, key, algorithm, transformation);
        System.out.println(s1);
   }
    /**
     * 使用DES加密数据
     *
     * @param input         : 原文
     * @param key           : 密钥(DES,密钥的长度必须是8个字节)
     * @param transformation : 获取Cipher对象的算法
     * @param algorithm     : 获取密钥的算法
     * @return : 密文
     * @throws Exception
     */
    private static String encryptDES(String input, String key, String transformation,String algorithm) throws Exception {
        // 获取加密对象
        Cipher cipher = Cipher.getInstance(transformation);
        // 创建加密规则
        // 第一个参数key的字节
        // 第二个参数表示加密算法
        SecretKeySpec sks = new SecretKeySpec(key.getBytes(), algorithm);
        // ENCRYPT_MODE:加密模式
        // DECRYPT_MODE: 解密模式
        // 初始化加密模式和算法
        cipher.init(Cipher.ENCRYPT_MODE,sks);
        // 加密
        byte[] bytes = cipher.doFinal(input.getBytes());
        // 输出加密后的数据
        String encode = Base64.encode(bytes);
        return encode;
   }
    /**
     * 使用DES解密
     *
     * @param input         : 密文
     * @param key           : 密钥
     * @param transformation : 获取Cipher对象的算法
     * @param algorithm     : 获取密钥的算法
     * @throws Exception
     * @return: 原文
     */
    private static String decryptDES(Stringinput, String key, String transformation,String algorithm) throws Exception {
        // 1,获取Cipher对象
        Cipher cipher = Cipher.getInstance(transformation);
        // 指定密钥规则
        SecretKeySpec sks = new SecretKeySpec(key.getBytes(), algorithm);
        cipher.init(Cipher.DECRYPT_MODE, sks);
        // 3. 解密,上面使用的base64编码,下面直接用密文
        byte[] bytes = cipher.doFinal(Base64.decode(input));
        // 因为是明文,所以直接返回
        return new String(bytes);
   }
}

1.对称加密采用___钥密码系统的加密方法。

2.下列属于对称加密算法的是_____。DES

支付安全_非对称加密 

 非对称加密

非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。

 非对称加密实现

引入依赖

<dependency>
     <groupId>commons-io</groupId>
     <artifactId>commons-io</artifactId>
     <version>2.6</version>
</dependency>

 生成公钥和私钥

import com.sun.org.apache.xml.internal.security.utils.Base64;
import org.apache.commons.io.FileUtils;
import javax.crypto.Cipher;
import java.io.File;
import java.nio.charset.Charset;
import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
/**
* 生成公钥和私钥
*/
public class RSAdemo {  
public static void main(String[] args) throws Exception {
        String input = "xiaotong";
        // 加密算法
        String algorithm = "RSA";
        //生成密钥对并保存在本地文件中
        generateKeyToFile(algorithm, "a.pub","a.pri");
   }
    /**
     * 生成密钥对并保存在本地文件中
     *
     * @param algorithm : 算法
     * @param pubPath   : 公钥保存路径
     * @param priPath   : 私钥保存路径
     * @throws Exception
     */
    private static void generateKeyToFile(String algorithm, String pubPath, String priPath) throws Exception {
        // 获取密钥对生成器
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(algorithm);
        // 获取密钥对
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        // 获取公钥
        PublicKey publicKey = keyPair.getPublic();
        // 获取私钥
        PrivateKey privateKey = keyPair.getPrivate();
        // 获取byte数组
        byte[] publicKeyEncoded = publicKey.getEncoded();
        byte[] privateKeyEncoded = privateKey.getEncoded();
        // 进行Base64编码
        String publicKeyString = Base64.encode(publicKeyEncoded);
        String privateKeyString = Base64.encode(privateKeyEncoded);
        // 保存文件
        FileUtils.writeStringToFile(new File(pubPath), publicKeyString,Charset.forName("UTF-8"));
        FileUtils.writeStringToFile(new File(priPath), privateKeyString,Charset.forName("UTF-8"));
   }

运行程序:先打印的是私钥 , 后面打印的是公钥

 私钥加密

/**
     * 读取私钥
     * @param priPath
     * @param algorithm
     * @return
     * @throws Exception
     */
    public static PrivateKey getPrivateKey(String priPath,String algorithm) throws Exception{
        // 将文件内容转为字符串
        String privateKeyString = FileUtils.readFileToString(new File(priPath),Charset.defaultCharset());
        // 获取密钥工厂
        KeyFactory keyFactory = KeyFactory.getInstance(algorithm);
        // 构建密钥规范 进行Base64解码
        PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(Base64.decode(privateKeyString));
        // 生成私钥
        return keyFactory.generatePrivate(spec);
   }
public static void main(String[] args) throws Exception {
        String input = "xiaotong";
        // 加密算法
        String algorithm = "RSA";
        
        // 加载私钥
        PrivateKey privateKey = getPrivateKey("a.pri", algorithm);
        // 私钥加密
        String s = encryptRSA(algorithm, privateKey, input);
        System.out.println(s);
    
 }

公钥加密

/**
     * 读取公钥
     * @param pulickPath
     * @param algorithm
     * @return
     * @throws Exception
     */
    public static PublicKey getPublicKey(String pulickPath,String algorithm) throws Exception{
        // 将文件内容转为字符串
        String publicKeyString = FileUtils.readFileToString(new File(pulickPath), Charset.defaultCharset());
        // 获取密钥工厂
       KeyFactory keyFactory = KeyFactory.getInstance(algorithm);
        // 构建密钥规范 进行Base64解码
        X509EncodedKeySpec spec = new X509EncodedKeySpec(Base64.decode(publicKeyStrin
g));
        // 生成公钥
        return keyFactory.generatePublic(spec);
   }
    public static void main(String[] args) throws Exception {
        String input = "xiaotong";
        // 加密算法
        String algorithm = "RSA";
        // 加载公钥
        PublicKey publicKey = getPublicKey("a.pub", algorithm);
        // 公钥解密
        String s = encryptRSA(algorithm, publicKey, "密文");
        System.out.println(s);
        
   }

1.下列加密算法中属于非对称加密的是__。RSA

支付安全_数字签名 

 数字签名是什么

数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别 人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发 送信息真实性的一个有效证明。数字签名是非对称密钥加密技术与 数字摘要技术的应用。

 生活中的数据签名

相信我们都写过信,在写信的时候落款处总是要留下自己的名字, 用来表示写信的人是谁。我们签的这个字就是生活中的签名。

 

 注意: 在网络中传输数据时候,给数据添加一个数字签名,表示是谁 发的数据,而且还能证明数据没有被篡改。OK,数字签名的主 要作用就是保证了数据的有效性(验证是谁发的)和完整性 (证明信息没有被篡改)。

 基本原理

张三有两把钥匙,一把是公钥,另一把是私钥。张三把公钥送给他 的朋友们----铁蛋、幺妹、李四----每人一把。 

 

 幺妹要给张三写一封保密的信。她写完后用张三的公钥加密,就可 以达到保密的效果。

 张三收信后,用私钥解密,就看到了信件内容。这里要强调的是, 只要张三的私钥不泄露,这封信就是安全的,即使落在别人手里, 也无法解密。

 

 张三给幺妹回信,决定采用"数字签名"。他写完后先用Hash函数, 生成信件的摘要(digest)。

 

 张三使用私钥,对这个摘要加密,生成"数字签名"(signature)。 幺妹收信后,取下数字签名,用张三的公钥解密,得到信件的摘要。由此证明,这封信确实是张三发出的。幺妹再对信件本身使用 Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

 1.数字签名主要解决_______问题。数据被篡改问题

 支付安全_数字证书

 为什么需要数字证书

复杂的情况出现了。李四想欺骗幺妹,他偷偷使用了幺妹的电脑, 用自己的公钥换走了张三的公钥。此时,幺妹实际拥有的是李四的 公钥,但是还以为这是张三的公钥。因此,李四就可以冒充张三, 用自己的私钥做成"数字签名",写信给幺妹,让幺妹用假的张三公钥进行解密。

 

 后来,幺妹感觉不对劲,发现自己无法确定公钥是否真的属于张三。她想到了一个办法,要求张三去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对张三的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。 

 

 理解数据证书

比如说我们的毕业证书,任何公司都会承认。为什么会承认?因为 那是国家发得,大家都信任国家。也就是说只要是国家的认证机 构,我们都信任它是合法的。

 原理

为了解决公钥的信任问题,张三和幺妹找一家认证公司(CA Catificate Authority),把公钥进行认证,证书中心用自己的私 钥,对A的公钥和一些相关信息一起加密,生成“数字证书”(Digital Certificate)

 

 幺妹如果获取到证书,证书可以用CA的公钥(认证中心信用背书) 进行解密,会得到发公钥人的信息,以及他的公钥,此时这个A的公钥是可信的。

 所以张三给幺妹发送信息的时候,就会带上签名,和证书一并发送 给到互联网上,幺妹接收到消息的时候,先用CA发布的公钥解密数 字证书,得到张三的公钥,用张三的公钥解密签名,得到摘要,幺妹在用hash算法得到消息的摘要,对两个摘要对比,如果相等,说明消息在网络上没有被不法分子修改。

 

 1.数字证书解决____,可以防止黑客伪造公钥。公钥不信任问题

 支付项目_功能演示

首页

 我的订单

 订单详情页

支付工程准备_创建支付工程

新建工程

注意: JDK版本选择8。

 组件选择

若依框架集成微信支付
qq_30895747的博客
06-22 424
若依框架集成微信支付
Zookeeper【系统模型(权限控制 ACL)、客户端(原生api操作Zookeeper、zkclient库操作Zookeeper)】(三)-全面详解学习总结---入门深化
05-05 531
Zookeeper【系统模型(权限控制 ACL)、客户端(原生api操作Zookeeper、zkclient库操作Zookeeper)】(三)-全面详解学习总结---入门深化
支付官方解析
weixin_46045444的博客
06-23 209
免签支付
微信支付总结
清风徐来,水波不兴
03-12 605
微信支付总结 文章目录微信支付总结轻量的微信支付组件wepay简单封装的WePayUtil使用示例 轻量的微信支付组件wepay 他山之石可以攻玉 像微信支付这种常见功能,肯定不可能从头到尾自己开发,以下文档基于github上找到的一款优秀的支付组件wepay。 wepay为我们做的事情:创建签名、验证签名,解析或转换微信要求的XML格式参数。 wepay实现了:支付、退款、订单、通知、账单...
RocketMQ【RocketMQ应用实战、发送异步消息、单向发送消息、顺序发送消息、顺序消费消息、发送全局顺序消息、全局顺序消息消费者、发送延迟消息】(四)-全面详解学习总结---入门深化
04-21 750
RocketMQ【RocketMQ应用实战、发送异步消息、单向发送消息、顺序发送消息、顺序消费消息、发送全局顺序消息、全局顺序消息消费者、发送延迟消息】(四)-全面详解学习总结---入门深化
RabbitMQ【SpringBoot整合RabbitMQ(项目搭建、创建对列和交换机、编写生产者、编写消费者 )】(五)-全面详解学习总结---入门深化
04-12 445
RabbitMQ【SpringBoot整合RabbitMQ(项目搭建、创建对列和交换机、编写生产者、编写消费者 )】(五)-全面详解学习总结---入门深化
RocketMQ【高级特性、负载均衡 、事务消息 、消息查询】(三)-全面详解学习总结---入门深化
04-20 810
RocketMQ【高级特性、负载均衡 、事务消息、消息查询】(三)-全面详解学习总结---入门深化
RabbitMQ【RabbitMQ高级特性(消费端限流、利用限流实现不公平分发、消息存活时间、优先级队列)】(七)-全面详解学习总结---入门深化
04-12 709
RabbitMQ【RabbitMQ高级特性(消费端限流、利用限流实现不公平分发、消息存活时间、优先级队列)】(七)-全面详解学习总结---入门深化
iOS-微信支付总结
Andrew_life
09-12 2315
前言:在iOS开发中,常常会涉及到支付功能,而微信支付是必不可少的,这里笔者就简单整理了一下微信支付的流程,即使分享也是对自己学习总结。一. 微信集成的基本流程(所需资料由公司提供)微信商户申请步骤:http://kf.qq.com/faq/120911VrYVrA150906F3qqY3.html1.在微信开放平台注册一个账号:https://open.weixin.qq.com 2.进入管理
1.微信支付快速入门
痞子王的博客
02-15 959
1.微信支付快速入门 1.1 微信支付申请(了解) 第一步:注册公众号(类型须为:服务号) 请根据营业执照类型选择以下主体注册:个体工商户| 企业/公司| 政府| 媒体| 其他类型。 第二步:认证公众号 公众号认证后才可申请微信支付,认证费:300元/次。 第三步:提交资料申请微信支付 登录公众平台,点击左侧菜单【微信支付】,开始填写资料等待审核,审核时间为1-5个工作日内。 第四步:开户成功,登...
微信相关的支付总结(微信扫码支付,公众号支付,提现(企业付款),小程序支付)
匿名攻城狮的博客
12-28 1059
微信相关的支付总结(微信扫码支付,公众号支付,提现(企业付款),小程序支付) 为了满足公司日(mo)益(ming)发(qi)展(miao),实现各种支付,将踩过的一些坑总结如下: 微信扫码支付: 公众号支付: 提现(企业付款): 小程序支付: 未完待续。。。...
微信扫码支付入门
TheGreyWolf的博客
11-27 333
一机在手,没有忧愁,手机在我手,商场任我走。 微信支付可以分为四种: 刷卡支付          商家用扫码设备扫用户的二维码。主要应用线下面对面收银的场景。 公众号支付      用户在微信内进入商家的H5页面,页面内调用JSSDK完成支付 扫码支付(常用) 用户扫描商家的二维码完成支付。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景。 APP支付         ...
【备忘】微信支付开发总结
qq_15941409的博客
08-31 127
故事背景: 这段时间在做支付宝、微信的支付,其中有支付宝和微信h5支付,还有微信的jsapi支付。之前也做过这些功能,这次也再次做,是重复造轮子。这次最慢的是jsapi支付,支付宝和微信的h5支付用了1天左右,加上测试和调优,算1.5天吧,但这次jsapi足足花了2天,心里有些许感受想通过文章来表达和记录。 先说总结: 开发jsapi支付太慢了!找了一圈没有适合的轮子,要么没有文档,要么英文的,要么只是简单的案例,如果用其它参数的话就无从下手,而且按着之前经验改一改还会出错,我不是经常开发微信功能,所
微信支付功能解析:从零到掌握,轻松享受便捷支付(一)
最新发布
凛鼕将至的博客
01-31 898
微信支付是由中国的互联网巨头腾讯公司推出的一种移动支付方式。它是基于微信社交平台开发的,用户可以使用微信App进行付款和收款。微信支付支持在线支付、线下支付以及小程序内支付,用户可以通过扫描商家提供的二维码或者在微信内直接进行付款。微信支付的功能包括个人转账、商家收款、网购支付、手机充值、水电煤缴费等。同时,微信支付还具有便捷、快速、安全等特点,大大简化了人们的线上线下支付过程,提升了支付的便利性。
微信支付步骤详解
luoxiong94的博客
05-10 2225
1、创建任务类 签名算法 签名生成的通用步骤如下: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
写文章

热门文章

  • Linux(CentOS-7)-全面详解(学习总结---从入门到深化) 23309
  • Spring Cloud Alibaba【什么是Nacos、Nacos Server下载安装 、Docker安装Nacos Server服务、微服务聚合父工程构建】(一) 11862
  • Lombok-全面详解(学习总结---从入门到深化) 11172
  • Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compil 9751
  • Elasticsearch【全文检索、倒排索引、应用场景、对比Solr、数据结构】(一)-全面详解(学习总结---从入门到深化) 9593

分类专栏

  • Spring全家桶 付费 86篇
  • 中间件大全---全面详解 付费 105篇
  • 亿级高并发电商项目---前后端分布式 付费 16篇
  • 实战项目---分布式医疗云平台 付费 24篇
  • 前端系列---从入门到深化 付费 101篇
  • Python办公自动化 9篇
  • 情感解忧杂货铺 1篇
  • AIGC人工智能 6篇
  • Java基础深化和提高 75篇
  • 项目部署(阿里云版) 10篇
  • 微信小程序 6篇
  • leetcode算法题 4篇
  • 若依框架 64篇
  • Linux 11篇
  • 微信支付 1篇
  • Docker 1篇
  • 登录邮箱验证 1篇
  • C# 1篇
  • MySQL 9篇

最新评论

  • Shiro-全面详解(学习总结---从入门到深化)

    Tulipes: shiro的拦截规则其中map类型得是LinkedHashMap吧,得保证顺序

  • Java中把word转换成图片

    神奇的猿: options.setPageIndex(i); 有这个属性吗?

  • 若依框架----图标(可能不全)css

    杨XL: 这个应该再哪个文件里加这些图标呢?找不到位置?

  • 若依框架----源码分析(@RateLimiter)

    诸葛博仌: 大佬表情包表情包

  • vue 语音播报(文字转语音)

    qq_31160493: mac系统,没有声音是咋回事

大家在看

  • 简单题101. 对称二叉树 (python)20240922
  • 后端开发刷题 | 编辑距离 410
  • 最简单的一文安装Pytorch+CUDA 244
  • 如何使用InDraw画绚丽多彩的结构式
  • Java集合(Map篇) 301

最新文章

  • TypeScript【第三方声明文件、自定义声明文件、tsconfig.json文件简介、tsconfig.json 文件结构与配置】(六)-全面详解(学习总结---从入门到深化)
  • TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)
  • TypeScript【可选属性、只读属性、额外的属性检查、函数类型、类类型、继承接口】(四)-全面详解(学习总结---从入门到深化)
2023年422篇
2022年80篇
2021年82篇

目录

目录

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

童小纯

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王兴化网站优化公司哪家便宜小吃加盟网站优化比较好新网站优化建议分析优化网站建设梢菊冖云速捷海阳效果好的网站优化网站优化公司哪家口碑好肇庆百度搜索网站优化许昌官网网站优化哪家便宜网站优化的概念和技巧温州文成县百度网站优化推荐汉中网站优化外包东营自适应网站优化响应式网站对优化有帮助吗沧州网站优化程度深圳如何通过网站推广优化新网站如何优化关键词沈阳正规的婚纱摄影网站优化深圳做网站优化哪个好河南网站关键词排名优化建造优化网站深圳网站优化镇远网站seo优化吉林省新的网站品牌优化如何 对自己的网站搜索优化网站优化的优势特点丽江网站优化费用河南濮阳网站优化网络推广哪家好韶关专业网站优化技巧邯郸企业网站优化推广特点和龙网站关键词优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化