Java微信支付接入(1) - API V3 引入支付参数

news2024/11/24 4:59:06

1.定义微信支付相关参数

wxpay.properties 文件

        这个文件定义了之前我们准备的微信支付相关的参数,例如商户号、APPID、API秘钥等等

# 微信支付相关参数
# 商户号
wxpay.mch-id=1558950191
# 商户API证书序列号
wxpay.mch-serial-no=34345964330B66427E0D3D28826C4993C77E631F

# 商户私钥文件
wxpay.private-key-path=apiclient_key.pem
# APIv3密钥
wxpay.api-v3-key=UDuLFDcmy5Eb6o0nTNZdu6ek4DDh4K8B
# APPID
wxpay.appid=wx74862e0dfcf69954
# 微信服务器地址
wxpay.domain=https://api.mch.weixin.qq.com
# 接收结果通知地址
# 注意:每次重新启动ngrok,都需要根据实际情况修改这个配置
wxpay.notify-domain=https://500c-219-143-130-12.ngrok.io

将 wxpay.properties 变成 spring 的配置文件

1.File -> Project Structure 

2.点击 Modules

        3.我们可以看到在配置文件中并没有 wxpay.properties ,点击叶子图标(Customize Spring Boot...)自定义配置文件

4.在路径中找到 wxpay.properties 配置文件

5.添加以后可以看到 wxpay.properties 配置文件和 application.yml 的图标相同

配置 Annotation Processor

        可以帮助我们生成自定义配置的元数据信息,让配置文件和Java代码之间的对应参数可以自动定位,方便开发。

<!-- 生成自定义配置的元数据信息 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

2、读取支付参数

WxPayConfig.java 文件

        WxPayConfig 文件用于从配置文件中获取配置信息并保存到属性中

@ConfigurationProperties

        在Spring Boot中,@ConfigurationProperties 注解被用来将配置文件中的属性绑定到一个配置类上。这使得你可以将配置属性集中在一个地方管理,并且可以很容易地通过配置文件来修改这些属性。

        当你使用 @ConfigurationProperties(prefix="wxpay") 注解时,你告诉Spring Boot去查找以 wxpay 为前缀的配置属性,并将它们绑定到带有该注解的类的字段上

@PropertySource

        在Spring框架中,@PropertySource 注解用于指定一个外部的配置文件,Spring容器将从这个文件中加载属性。这允许你将配置外部化,从而更容易地管理不同环境(如开发、测试和生产环境)的配置。

        当你使用@PropertySource("classpath:wxpay.properties")时,你告诉Spring框架去类路径(classpath)上寻找一个名为wxpay.properties的文件,并从中加载配置属性。这个文件通常包含键值对,Spring 容器会将这些属性注入到 Spring 管理的 bean 中。

package com.atguigu.paymentdemo.config;

import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
import com.wechat.pay.contrib.apache.httpclient.auth.*;
import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.impl.client.CloseableHttpClient;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.nio.charset.StandardCharsets;
import java.security.PrivateKey;


@Configuration
@PropertySource("classpath:wxpay.properties") //读取配置文件
@ConfigurationProperties(prefix="wxpay") //读取wxpay节点
@Data //使用set方法将wxpay节点中的值填充到当前类的属性中
@Slf4j
public class WxPayConfig {

    // 商户号
    private String mchId;

    // 商户API证书序列号
    private String mchSerialNo;

    // 商户私钥文件
    private String privateKeyPath;

    // APIv3密钥
    private String apiV3Key;

    // APPID
    private String appid;

    // 微信服务器地址
    private String domain;

    // 接收结果通知地址
    private String notifyDomain;

    // APIv2密钥
    private String partnerKey;

}

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

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

相关文章

HTB:Base[WriteUP]

目录 连接至HTB服务器并启动靶机 1.Which two TCP ports are open on the remote host? 2.What is the relative path on the webserver for the login page? 3.How many files are present in the /login directory? 4.What is the file extension of a swap file? …

DeepACO:用于组合优化的神经增强蚂蚁系统解决TSP问题的代码阅读

总体概括 DeepACO与普通ACO不同的是将问题输入实例输入到一个训练的网络中&#xff0c;将网络训练成为一个类似于专家知识的模块&#xff0c;可以生成相应的启发式矩阵网络&#xff0c;从而省去相应的专家知识。 其中在训练网络的代码中&#xff1a; 是进行监督式训练通过trai…

虚幻引擎GAS入门学习笔记(一)

虚幻引擎GAS入门(一) Gameplay Ability System&#xff08;GAS&#xff09; 是一个模块化且强大的框架&#xff0c;用于管理虚幻引擎中的游戏玩法逻辑。它的核心组成部分包括 Gameplay Ability&#xff08;定义和执行能力&#xff09;、Gameplay Effect&#xff08;应用和管理…

数字安全新时代:聚焦关键信息基础设施安全保障——The Open Group 2024生态系统架构·可持续发展年度大会盛大来袭

在全球数字化转型的浪潮中&#xff0c;关键信息基础设施&#xff08;Critical Information Infrastructure&#xff0c;简称CII&#xff09;的安全保障已成为各国政府和企业共同关注的焦点。随着技术的飞速发展和网络威胁的日益复杂&#xff0c;如何构建高效、灵活且安全的数字…

“Flash闪存”基础 及 “SD NAND Flash”产品的测试介绍

目录 一、“FLASH闪存”是什么&#xff1f; 1. 简介 2. 分类 3. 特点 4. 虚拟化 二、SD NAND Flash 1. 概述 2. 特点 3. 引脚分配 4. 数据传输模式 5. SD NAND寄存器 6. 通电图 7. 参考设计 三、STM32测试例程 1. 初始化 2. 单数据块测试 3. 多数据块测试 4.…

SSD | (一)SSD综述

文章目录 &#x1f4da;SSD综述&#x1f407;SSD基本结构&#x1f407;SSD与HDD&#x1f407;SSD基本工作原理⭐SSD请求处理流程⭐SSD主要组成模块⭐SSD读写操作 &#x1f407;SSD产品核心指标⭐基本信息⭐性能指标⭐数据可靠性和寿命⭐功耗 &#x1f4da;可计算存储 &#x1f…

VueRouter前端路由

文章目录 VueRouter前端路由VueRouter 简介安装vuerouter配置router文件子路由路由重定向 VueRouter前端路由 VueRouter 简介 安装vuerouter npm install vue-router4yarn add vue-router4配置router文件 import { createRouter, createWebHistory } from vue-router; impor…

k8s--二进制包部署及常见报错解决方法

部署流程 所有基础流程见此教程&#xff0c;很详细&#xff1a; 从零搭建k8s集群 - 许大仙 - 博客园 (cnblogs.com) 记得在写配置文件时细心点&#xff0c;注意修改自己的ip地址&#xff0c;以及看在哪个主机上操作 这里记得写自己的token 常见报错及解决方法 我只在下边讲…

GDPU Vue前端框架开发 ecmascript6初步使用

前端框架基础&#xff0c;打造你的前端应用。 箭头函数 使用箭头函数实现求多个数的和&#xff0c;可以有一个参数&#xff0c;也可以有多个或零个参数。 let sum (...numbers) > {return numbers.reduce((acc, curr) > acc curr, 0);};let asum(); let bsum(1); let…

实战千问2大模型第五天——VLLM 运行 Qwen2-VL-7B(多模态)

一、简介 VLLM 是一种高效的深度学习推理库&#xff0c;通过PagedAttention算法有效管理大语言模型的注意力内存&#xff0c;其特点包括24倍的吞吐提升和3.5倍的TGI性能&#xff0c;无需修改模型结构&#xff0c;专门设计用于加速大规模语言模型&#xff08;LLM&#xff09;的…

生成对抗网络(GAN,Generative Adversarial Network)

生成对抗网络&#xff08;GAN&#xff0c;Generative Adversarial Network&#xff09;是一种深度学习模型&#xff0c;由两部分组成&#xff1a;生成器&#xff08;Generator&#xff09;和判别器&#xff08;Discriminator&#xff09;。生成器的目标是生成逼真的样本&#x…

Xinstall品牌揭秘:如何成为App拉新的行业翘楚?

在移动互联网时代&#xff0c;App作为连接用户与服务的桥梁&#xff0c;其重要性不言而喻。然而&#xff0c;随着市场竞争的加剧&#xff0c;App拉新&#xff08;即吸引新用户下载并使用App&#xff09;的难度也在逐渐增大。传统的营销方式往往面临着成本高、效率低、用户留存差…

理解PID(零)——什么是PID

PID控制器是一种广泛用于各种工业控制场合的控制器&#xff0c;它结构简单&#xff0c;可以根据工程经验整定参数Kp,Ki,Kd. 虽然现在控制专家提出了很多智能的控制算法&#xff0c;比如神经网络&#xff0c;模糊控制等&#xff0c;但是PID仍然被广泛使用。常见的PID控制器有位置…

视频怎么转gif动图?5个简单转换方法快来学(详细教程)

相信大家在社交平台上会经常看到一些有趣的gif动图表情包&#xff0c;有些小伙伴就会问&#xff1a;这些GIF动图是如何制作的呢&#xff1f;一般GIF动图表情包可以用视频来制作&#xff0c;今天小编就来给大家分享几个视频转成GIF动图的方法&#xff0c;相信通过以下的几个方法…

文献阅读CONCH模型--相关知识点罗列

文章链接&#xff1a;A visual-language foundation model for computational pathology | Nature MedicineThe accelerated adoption of digital pathology and advances in deep learning have enabled the development of robust models for various pathology tasks across…

【可答疑】基于51单片机的智能家居系统(含仿真、代码、报告、演示视频等)

✨哈喽大家好&#xff0c;这里是每天一杯冰美式oh&#xff0c;985电子本硕&#xff0c;大厂嵌入式在职0.3年&#xff0c;业余时间做做单片机小项目&#xff0c;有需要也可以提供就业指导&#xff08;免费&#xff09;~ &#x1f431;‍&#x1f409;这是51单片机毕业设计100篇…

ceph基础

ceph基础搭建 存储基础 传统的存储类型&#xff1a; DAS设备&#xff1a; SAS,SATA,SCSI,IDW,USB 无论是那种接口&#xff0c;都是存储设备驱动下的磁盘设备&#xff0c;而磁盘设备其实就是一种存储是直接接入到主板总线上去的。直连存储。 NAS设备: NFS CIFS FTP 几乎所有的…

商标恶意维权形式及应对策略

在商业领域&#xff0c;商标恶意维权的现象时有出现&#xff0c;给正常的市场秩序和企业经营带来了不良影响。以下将介绍其常见形式及应对方法。 一、商标恶意维权的形式1、囤积商标后恶意诉讼。一些人或企业大量注册与知名品牌相似或具有一定通用性的商标&#xff0c;并非用于…

留学生毕业论文设计问卷questionnaire的基本步骤

在上一期内容中&#xff0c;小编介绍了留学毕业论文的定量研究和相关的问卷设计。然而在一些研究中&#xff0c;定量研究和问卷数据并不能满足我们的研究需求。这种情况下&#xff0c;我们可以采取其他的数据收集方式&#xff0c;例如observation&#xff0c;case study和inter…

软件设计之SSM(11)

软件设计之SSM(11) 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷新版SSM框架全套视频教程&#xff0c;Spring6SpringBoot3最新SSM企业级开发 资料可以去尚硅谷官网免费领取 学习内容&#xff1a; Springboot 配置文件整合SpringMVC整合Dr…