springboot第61集:Jenkins-Boss萬字挑戰(zhàn),一文讓你走出微服務(wù)迷霧...
名詞 CONTAINER ID(容器ID)
名詞 IMAGE ID(鏡像ID)
cat /etc/os-release //查看系統(tǒng)信息
pwd //查看當(dāng)前路徑
ls //查看當(dāng)前目錄文件
docker -v //查看docker版本
docker-compose up -d //在后臺運(yùn)行(取消-d是在控制臺運(yùn)行)
docker-compose stop //所有容器停止運(yùn)行
docker ps -a //查看正在運(yùn)行的容器
docker images //查看安裝的鏡像
docker stop [CONTAINER ID] //停掉運(yùn)行的容器
docker rm [CONTAINER ID] //刪除運(yùn)行的容器
systemctl status docker //查看docker狀態(tài)
systemctl stop docker //停止docker
systemctl start docker //啟動docker
systemctl restart docker //重啟docker
Docker + Jenkins + Nginx 實戰(zhàn)前端自動化部署
image.png
version: '3.8'
# 執(zhí)行腳本;docker-compose -f docker-compose-v1.0.yml up -d
services:
jenkins:
image: jenkins/jenkins:2.439
container_name: jenkins
privileged: true
user: root
ports:
- "9090:8080"
- "50001:50000"
volumes:
- ./jenkins_home:/var/jenkins_home # 如果不配置到云服務(wù)器路徑下,則可以配置 jenkins_home 會創(chuàng)建一個數(shù)據(jù)卷使用
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/local/bin/docker
- ./maven/conf/settings.xml:/usr/local/maven/conf/settings.xml # 這里只提供了 maven 的 settings.xml 主要用于修改 maven 的鏡像地址
- ./jdk/jdk1.8.0_202:/usr/local/jdk1.8.0_202 # 提供了 jdk1.8,如果你需要其他版本也可以配置使用。
environment:
- JAVA_OPTS=-Djenkins.install.runSetupWizard=false # 禁止安裝向?qū)А溉绻枰艽a則不要配置」docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
restart: unless-stopped
volumes:
jenkins_home:
Jenkins-Mac
image.png
1、安裝jenkins
brew install jenkins
2、鏈接launchd配置文件
ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents
ln -sfv /usr/local/opt/jenkins-lts/*.plist ~/Library/LaunchAgents
3、啟動jenkins
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist
4、停止jenkins
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist
訪問:http://localhost:8080
清華大學(xué)鏡像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
tar -xvzf jdk-8u281-linux-x64.tar.gz
vi /etc/profile.d/java8.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_281
export JAVA_BIN=/usr/local/java/jdk1.8.0_281/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
source /etc/profile
java -version
tar -xvzf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3 maven3
vi /etc/profile
MAVEN_HOME=/usr/local/tools/maven3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
source /etc/profile
mvn -version
- 添加訪問憑據(jù):點擊添加,添加訪問認(rèn)證(我是用的UserName+Password模式也可以選擇其他方式)
image.png
image.png
- 源碼管理:選擇Git填寫倉庫地址,并添加訪問賬號和密碼或者秘鑰
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
Jenkins是開源CI&CD軟件領(lǐng)導(dǎo)者,是Devops神器
安裝Jenkins->編寫pipeline腳本->編寫Dockerfile腳本。
FROM openjdk:8-jdk-alpine
MAINTAINER [email protected]
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && mkdir -p /esms
WORKDIR /esms
EXPOSE 8090
ADD ./target/esms.jar ./
CMD java -Djava.security.egd=file:/dev/./urandom -jar esms.jar
image.png
docker run -u root -itd --name jenkins -p 6001:8080 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /volume1/docker/jenkins:/var/jenkins_home jenkins/jenkins
docker pull jenkins/jenkins
- docker-ce 18.09.1(務(wù)必使用docker-ce,老版本的docker會導(dǎo)致Jenkins中無法使用docker daemon)
流水線+docker,流水線可以讓項目發(fā)布流程更加清晰,docker可以大大減少Jenkins配置。
盡量減少Jenkins的配置和發(fā)布腳本的書寫。
CPU使用率、內(nèi)存使用率和磁盤使用率的提高通常與系統(tǒng)中發(fā)生的特定操作和情況相關(guān)。以下是一些常見情況和操作,可能會導(dǎo)致這些資源的使用率增加:
-
CPU使用率增加:
- 運(yùn)行計算密集型任務(wù):例如,執(zhí)行大量數(shù)學(xué)計算、加密解密操作或圖像處理。
- 運(yùn)行多個并發(fā)應(yīng)用程序:同時運(yùn)行多個應(yīng)用程序或服務(wù),尤其是需要大量計算資源的應(yīng)用程序,可能會導(dǎo)致CPU使用率增加。
- 資源競爭:如果系統(tǒng)上運(yùn)行了多個高優(yōu)先級的任務(wù)或進(jìn)程,它們可能會競爭CPU資源,導(dǎo)致CPU使用率上升。
內(nèi)存使用率增加:
- 運(yùn)行內(nèi)存密集型應(yīng)用程序:例如,大型數(shù)據(jù)庫、緩存服務(wù)或虛擬機(jī)。
- 創(chuàng)建大型數(shù)據(jù)結(jié)構(gòu):例如,加載大型文件或數(shù)據(jù)集到內(nèi)存中。
- 內(nèi)存泄漏:如果應(yīng)用程序存在內(nèi)存泄漏問題,內(nèi)存使用率可能會持續(xù)增加,直到系統(tǒng)耗盡可用內(nèi)存。
磁盤使用率增加:
- 寫入大量數(shù)據(jù):例如,進(jìn)行大規(guī)模的日志記錄、數(shù)據(jù)庫寫入操作或文件傳輸。
- 讀取大量數(shù)據(jù):例如,從磁盤加載大型文件或執(zhí)行大型數(shù)據(jù)庫查詢。
- 運(yùn)行IO密集型應(yīng)用程序:例如,視頻編碼、解碼或批量文件處理。
- 文件系統(tǒng)碎片化:如果文件系統(tǒng)碎片化嚴(yán)重,可能會導(dǎo)致文件讀取和寫入操作變慢,進(jìn)而導(dǎo)致磁盤使用率增加。
- 查看某個端口是否開放:netstat -lnt | grep 80
- 查看nginx配置是否正確:nginx -t
- 查看nginx是否正常啟動:ps -ef | grep nginx
- 查看防火墻狀態(tài): systemctl status firewalld
- 啟動防火墻: systemctl start firewalld
- 停止防火墻: systemctl stop firewalld
- 永久停用: systemctl disable firewalld
- 啟用防火墻: systemctl enable firewalld
- 查看某個端口占用情況:netstat –apn | grep 8080
- 升級版本內(nèi)核:yum update -y
docker run -p 3306:3306 --restart=always -e TZ="Asia/Shanghai" \
--name mymysql -v /usr/local/gourd/docker/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/gourd/docker/mysql/logs:/logs \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -p 8080:8080 --name gourdtomcat \
--restart=always -e TZ="Asia/Shanghai" \
-v /docker/tomcat/test:/usr/local/tomcat/webapps/test -d tomcat
docker run -p 6379:6379 --restart=always -e TZ="Asia/Shanghai" \
-v /usr/local/gourd/docker/redis/data:/data \
-v /usr/local/gourd/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
--name myredis -d redis redis-server --appendonly yes
docker run --name gourdnginx -p 80:80 \
--restart=always -e TZ="Asia/Shanghai" -d \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx nginx
// 查看運(yùn)行中的容器
docker ps
// 查看所有的容器
docker ps -a
// 搜索鏡像
docker search keyword
// 例:docker search mysql
// 查看下載的鏡像
docker iamges
// 啟動容器
docker start [容器名/容器ID]
// 停止容器
docker stop/kill [容器名/容器ID]
// 重啟容器
docker restart [容器名/容器ID]
// 刪除已停止的容器
docker rm [容器名/容器ID]
// 強(qiáng)制刪除容器
docker rm -f [容器名/容器ID]
// 刪除鏡像
docker rmi 鏡像id
// 查看容器日志
docker logs [容器名/容器ID]
// 查看容器運(yùn)行狀態(tài)信息
docker stats
// 獲取容器/鏡像的元數(shù)據(jù)
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
// 查看容器中運(yùn)行的進(jìn)程信息,支持 ps 命令參數(shù)
docker top [OPTIONS] CONTAINER [ps OPTIONS]
// 將宿主機(jī)目錄拷貝到容器目錄
docker cp [path1] [容器ID]:[path2]
// 將容器目錄拷貝到宿主機(jī)目錄
docker cp [容器ID]:[path2] [path1]
- Web 應(yīng)用程序,如 Nginx、Apache、Node.js、Tomcat 等。
- 數(shù)據(jù)庫,如 MySQL、PostgreSQL、MongoDB 等。
- 消息隊列,如 RabbitMQ、Kafka 等。
- 緩存,如 Redis、Memcached 等。
- 日志管理,如 ELK(Elasticsearch、Logstash、Kibana) 等。
- 容器管理,如 Kubernetes、Docker Compose 等。
docker search postgres
docker pull postgres
docker images
[root@localhost ~]$ cd /data/
[root@localhost data]$ mkdir postgres
[root@localhost postgres]$ pwd
/data/postgres
docker run --name postgresql --privileged -e POSTGRES_PASSWORD=password -p 15433:5432 -v /data/postgres:/var/lib/postgresql/data -d postgres
docker ps -a
docker pull postgres
docker volume create postgre-data
docker run -id --name=postgresql -v postgre-data:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_PASSWORD=123456 -e LANG=C.UTF-8 postgres
1 搜索鏡像 docker search <鏡像名稱>
2 下載鏡像 docker pull <鏡像名稱>:<標(biāo)簽>
3 運(yùn)行容器 docker run <選項> <鏡像名稱>:<標(biāo)簽>
4 配置容器 docker exec <容器名稱> <命令>
5 保存容器 docker commit <容器名稱> <新鏡像名稱>:<標(biāo)簽>
6 導(dǎo)出容器 docker save -o <文件名稱> <鏡像名稱>:<標(biāo)簽>
7 導(dǎo)入容器 docker load -i <文件名稱>
image.png
Navicat for PostgreSQL 是一個簡單易用的 PostgreSQL 數(shù)據(jù)庫開發(fā)圖形工具。從編寫簡單的 SQL 查詢到開發(fā)復(fù)雜的數(shù)據(jù)庫,Navicat for PostgreSQL 旨在滿足廣泛的用戶需求,從 PostgreSQL 初學(xué)者到經(jīng)驗豐富的開發(fā)人員。連接到本地/遠(yuǎn)程 PostgreSQL 服務(wù)器,并與 Amazon Redshift、Amazon Aurora、Amazon RDS、Google Cloud 和 Microsoft Azure 等云數(shù)據(jù)庫以及所有 PostgreSQL 數(shù)據(jù)庫對象兼容。
image.png
- Apache Bench (ab) :Apache Bench是一個簡單而強(qiáng)大的HTTP性能測試工具,它通常隨著Apache Web服務(wù)器一起提供。您可以使用Homebrew來安裝它:
brew install ab。 - Wrk:Wrk是一個現(xiàn)代的HTTP性能測試工具,具有線程化設(shè)計和支持Lua腳本等特性。您可以使用Homebrew來安裝它:
brew install wrk。 - Siege:Siege是另一個流行的HTTP性能測試工具,具有簡單易用的特性。您可以使用Homebrew來安裝它:
brew install siege。 - Vegeta:Vegeta是一個命令行工具,用于基于HTTP進(jìn)行負(fù)載測試和性能分析。您可以使用Homebrew來安裝它:
brew install vegeta。 - JMeter:Apache JMeter是一個功能強(qiáng)大的Java應(yīng)用程序,用于執(zhí)行各種負(fù)載測試和性能測量,不僅限于HTTP。您可以從官方網(wǎng)站下載并手動安裝它:Apache JMeter。
創(chuàng)建MQTT pub Sampler錄入要發(fā)送MQTT的topic,如果需要發(fā)送不同數(shù)據(jù),可以創(chuàng)建一個CVS,從表里獲取數(shù)據(jù)。這時候在Pub sampler 里就需要使用${}來獲取數(shù)據(jù),字符串要加“”。
如果要模擬多個設(shè)備,那就創(chuàng)建多個線程組即可。如果想要測試MQTT服務(wù)能承受多大的并發(fā), 可以根據(jù)需要設(shè)置線程數(shù)和間隔時間,不過這個數(shù)量如果特別大的話,并發(fā)量會不精準(zhǔn),但總體上還是可以達(dá)到我們的測試目的。
image.png
image.png
- 最好設(shè)置一個定時器,控制發(fā)送的頻率。比如設(shè)置10毫秒一次,相當(dāng)于1個線程1秒發(fā)送100次數(shù)據(jù)
image.png
注意超時時間,這里默認(rèn)的是10毫秒,如果MQTT服務(wù)不穩(wěn)定,可能會出現(xiàn)偶爾連不上的問題,建議1000毫秒
image.png
image.png
image.png
public enum ServiceError {
NORMAL(1, "操作成功"),
UN_KNOW_ERROR(-1, "未知錯誤"),
/** Global Error */
GLOBAL_ERR_NO_SIGN_IN(-10001,"未登錄或登錄過期/Not sign in"),
GLOBAL_ERR_NO_CODE(-10002,"code錯誤/error code"),
GLOBAL_ERR_NO_AUTHORITY(-10003, "沒有操作權(quán)限/No operating rights"),
;
private int code;
private String msg;
private ServiceError(int code, String msg)
{
this.code=code;
this.msg=msg;
}
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
springboot 啟動類
jar啟動請忽略,war啟動請繼承 SpringBootServletInitializer
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class SecurityApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SecurityApplication.class, args);
}
// war啟動請實現(xiàn)該方法
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SecurityApplication.class);
}
}
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
Docker Compose是一個用于定義和運(yùn)行多個Docker容器的工具。它允許您使用YAML文件來配置應(yīng)用程序的服務(wù)、網(wǎng)絡(luò)和卷,并使用單個命令啟動、停止和管理整個應(yīng)用程序。通過Docker Compose,您可以在一個命令中啟動包含多個容器的應(yīng)用程序,而無需手動運(yùn)行多個docker run命令。
Docker Compose的核心概念包括:
- 服務(wù)(Services) :指應(yīng)用程序中的不同組件,每個服務(wù)通常對應(yīng)一個容器。
- 項目(Project) :指由一組關(guān)聯(lián)的服務(wù)組成的完整應(yīng)用程序。
- YAML文件:用于定義項目結(jié)構(gòu)、服務(wù)配置和依賴關(guān)系的文本文件,通常稱為
docker-compose.yml。
使用Docker Compose,您可以輕松地在開發(fā)、測試和生產(chǎn)環(huán)境中部署和管理復(fù)雜的容器化應(yīng)用程序。
全局參數(shù)
filter
監(jiān)測數(shù)據(jù)項統(tǒng)一過濾,保留兩位小數(shù)。
{{10.23123|montionFilter }}
掃碼登錄流程講解、獲取授權(quán)登錄二維碼
image.png
微信開放平臺的方式應(yīng)該是最舒服的微信掃碼登陸了,但是前提需要交認(rèn)證300元的認(rèn)證費(fèi)用,網(wǎng)站的話還需要提交《微信開放平臺網(wǎng)站信息登記表》,也是審核最麻煩的方式,只好先pass啦
開發(fā)者認(rèn)證
網(wǎng)站審核
image.png
時序圖總結(jié)流程:
1、用戶點擊網(wǎng)站微信登陸圖標(biāo)。
2、網(wǎng)站帶上AppID和AppSecret和回調(diào)域名參數(shù)請求微信OAuth2.0授權(quán)登陸。
3、第二步通過后,微信返回二維碼供用戶掃碼。
4、用戶掃碼確定授權(quán)。
5、微信帶上code參數(shù)回調(diào)java后端相關(guān)接口。
6、java后端獲取到code后,在帶上帶上AppID和AppSecret和code再去調(diào)微信接口。
7、獲取access_token后就可以解析用戶的一些基本信息,比如:微信用戶頭像、用戶名、性別、城市等一些基本參數(shù)。
準(zhǔn)備工作
網(wǎng)站應(yīng)用微信登錄是基于OAuth2.0協(xié)議標(biāo)準(zhǔn)構(gòu)建的微信OAuth2.0授權(quán)登錄系統(tǒng)。 在進(jìn)行微信OAuth2.0授權(quán)登錄接入之前,在微信開放平臺注冊開發(fā)者賬號,并擁有一個已審核通過的網(wǎng)站應(yīng)用,并獲得相應(yīng)的AppID和AppSecret,申請微信登錄且通過審核后,可開始接入流程。
授權(quán)流程說明
微信OAuth2.0授權(quán)登錄讓微信用戶使用微信身份安全登錄第三方應(yīng)用或網(wǎng)站,在微信用戶授權(quán)登錄已接入微信OAuth2.0的第三方應(yīng)用后,第三方可以獲取到用戶的接口調(diào)用憑證(access_token),通過access_token可以進(jìn)行微信開放平臺授權(quán)關(guān)系接口調(diào)用,從而可實現(xiàn)獲取微信用戶基本開放信息和幫助用戶實現(xiàn)基礎(chǔ)開放功能等。 微信OAuth2.0授權(quán)登錄目前支持authorization_code模式,適用于擁有server端的應(yīng)用授權(quán)。該模式整體流程為:
1. 第三方發(fā)起微信授權(quán)登錄請求,微信用戶允許授權(quán)第三方應(yīng)用后,微信會拉起應(yīng)用或重定向到第三方網(wǎng)站,并且?guī)鲜跈?quán)臨時票據(jù)code參數(shù);
2. 通過code參數(shù)加上AppID和AppSecret等,通過API換取access_token;
3. 通過access_token進(jìn)行接口調(diào)用,獲取用戶基本數(shù)據(jù)資源或幫助用戶實現(xiàn)基本操作。
第一步:請求CODE
第三方使用網(wǎng)站應(yīng)用授權(quán)登錄前請注意已獲取相應(yīng)網(wǎng)頁授權(quán)作用域(scope=snsapi_login),則可以通過在PC端打開以下鏈接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“該鏈接無法訪問”,請檢查參數(shù)是否填寫錯誤,如redirect_uri的域名與審核時填寫的授權(quán)域名不一致或scope不為snsapi_login。
image.png
image.png
1. 若access_token已超時,那么進(jìn)行refresh_token會獲取一個新的access_token,新的超時時間;
2. 若access_token未超時,那么進(jìn)行refresh_token不會改變access_token,但超時時間會刷新,相當(dāng)于續(xù)期access_token。
請求方法
獲取第一步的code后,請求以下鏈接進(jìn)行refresh_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
1、Appsecret 是應(yīng)用接口使用密鑰,泄漏后將可能導(dǎo)致應(yīng)用數(shù)據(jù)泄漏、應(yīng)用的用戶數(shù)據(jù)泄漏等高風(fēng)險后果;存儲在客戶端,極有可能被惡意竊取(如反編譯獲取Appsecret);
2、access_token 為用戶授權(quán)第三方應(yīng)用發(fā)起接口調(diào)用的憑證(相當(dāng)于用戶登錄態(tài)),存儲在客戶端,可能出現(xiàn)惡意獲取access_token 后導(dǎo)致的用戶數(shù)據(jù)泄漏、用戶微信相關(guān)接口功能被惡意發(fā)起等行為;
3、refresh_token 為用戶授權(quán)第三方應(yīng)用的長效憑證,僅用于刷新access_token,但泄漏后相當(dāng)于access_token 泄漏,風(fēng)險同上;
4、如無特別業(yè)務(wù)需求,建議開發(fā)者自行管理業(yè)務(wù)登錄態(tài)并合理設(shè)置過期時間,減少用戶重新授權(quán)登錄次數(shù),優(yōu)化用戶體驗。
建議將secret、用戶數(shù)據(jù)(如access_token)放在App云端服務(wù)器,由云端中轉(zhuǎn)接口調(diào)用請求。
對于接口作用域(scope),能調(diào)用的接口有以下:
| 授權(quán)作用域(scope) | 接口 | 接口說明 |
|---|---|---|
| snsapi_base | /sns/oauth2/access_token | 通過code換取access_token、refresh_token和已授權(quán)scope |
| snsapi_base | /sns/oauth2/refresh_token | 刷新或續(xù)期access_token使用 |
| snsapi_base | /sns/auth | 檢查access_token有效性 |
| snsapi_userinfo | /sns/userinfo | 獲取用戶個人信息 |
- 什么是授權(quán)臨時票據(jù)(code)? 答:第三方通過code進(jìn)行獲取access_token的時候需要用到,code的超時時間為10分鐘,一個code只能成功換取一次access_token即失效。code的臨時性和一次保障了微信授權(quán)登錄的安全性。第三方可通過使用https和state參數(shù),進(jìn)一步加強(qiáng)自身授權(quán)登錄的安全性。
- 什么是授權(quán)作用域(scope)? 答:授權(quán)作用域(scope)代表用戶授權(quán)給第三方的接口權(quán)限,第三方應(yīng)用需要向微信開放平臺申請使用相應(yīng)scope的權(quán)限后,使用文檔所述方式讓用戶進(jìn)行授權(quán),經(jīng)過用戶授權(quán),獲取到相應(yīng)access_token后方可對接口進(jìn)行調(diào)用。
image.png
image.png
image.png
- 當(dāng)認(rèn)證完成之后,我們即可以創(chuàng)建網(wǎng)站應(yīng)用
Spring學(xué)習(xí)筆記(二十三)——實現(xiàn)網(wǎng)站微信掃碼登錄獲取微信用戶信息Demo-左眼會陪右眼哭の博客
image.png
1、微信開放平臺介紹(申請里面的網(wǎng)站應(yīng)用需要企業(yè)資料) 微信開放平臺網(wǎng)站:https://open.weixin.qq.com/
2、什么是appid、appsecret、授權(quán)碼code appid和appsecret是 資源所有者向申請人分配的一個id和秘鑰 code是授權(quán)憑證,A->B 發(fā)起授權(quán),想獲取授權(quán)用戶信息,那a必須攜帶授權(quán)碼,才可以向B獲取授權(quán)信息 (你要從我這里拿東西出去,就必須帶身份證)
3、先仔細(xì)閱讀下微信開放平臺 官方給出的微信登錄開發(fā)指南: https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
# 1、掃碼支付文檔:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=2_2
# 2、名稱理解
appid:公眾號唯一標(biāo)識
appsecret:公眾號的秘鑰
mch_id:商戶號,申請微信支付的時候分配的
key:支付交易過程生成簽名的秘鑰,設(shè)置路徑
微信商戶平臺(pay.weixin.qq.com)-->賬戶中心-->賬戶設(shè)置-->API安全-->密鑰設(shè)置
# 3、和微信支付交互方式
1、post方式提交
2、xml格式的協(xié)議
3、簽名算法MD5
4、交互業(yè)務(wù)規(guī)則 先判斷協(xié)議字段返回,再判斷業(yè)務(wù)返回,最后判斷交易狀態(tài)
5、接**易單位為 分
6、交易類型:JSAPI--公眾號支付、NATIVE--原生掃碼支付、APP--app支付
微信支付業(yè)務(wù)流程說明:
(1)商戶后臺系統(tǒng)根據(jù)用戶選購的商品生成訂單。
(2)用戶確認(rèn)支付后調(diào)用微信支付【統(tǒng)一下單API】生成預(yù)支付交易;
(3)微信支付系統(tǒng)收到請求后生成預(yù)支付交易單,并返回交易會話的二維碼鏈接code_url。
(4)商戶后臺系統(tǒng)根據(jù)返回的code_url生成二維碼。
(5)用戶打開微信“掃一掃”掃描二維碼,微信客戶端將掃碼內(nèi)容發(fā)送到微信支付系統(tǒng)。
(6)微信支付系統(tǒng)收到客戶端請求,驗證鏈接有效性后發(fā)起用戶支付,要求用戶授權(quán)。
(7)用戶在微信客戶端輸入密碼,確認(rèn)支付后,微信客戶端提交授權(quán)。
(8)微信支付系統(tǒng)根據(jù)用戶授權(quán)完成支付交易。
(9)微信支付系統(tǒng)完成支付交易后給微信客戶端返回交易結(jié)果,并將交易結(jié)果通過短信、微信消息提示用戶。微信客戶端展示支付交易結(jié)果頁面。
(10)微信支付系統(tǒng)通過發(fā)送異步消息通知商戶后臺系統(tǒng)支付結(jié)果。商戶后臺系統(tǒng)需回復(fù)接收情況,通知微信后臺系統(tǒng)不再發(fā)送該單的支付通知。
(11)未收到支付通知的情況,商戶后臺系統(tǒng)調(diào)用【查詢訂單API】。
(12)商戶確認(rèn)訂單已支付后給用戶發(fā)貨。
加群聯(lián)系作者vx:xiaoda0423
倉庫地址:https://github.com/webVueBlog/JavaGuideInterview
