springboot第61集:Jenkins-Boss萬字挑戰,一文讓你走出微服務迷霧架構周刊

名詞?CONTAINER?ID(容器ID)
名詞?IMAGE?ID(鏡像ID)cat?/etc/os-release?//查看系統信息
pwd?//查看當前路徑
ls?//查看當前目錄文件
docker?-v?//查看docker版本
docker-compose?up?-d?//在后臺運行(取消-d是在控制臺運行)
docker-compose?stop?//所有容器停止運行
docker?ps?-a?//查看正在運行的容器
docker?images?//查看安裝的鏡像
docker?stop?[CONTAINER?ID]?//停掉運行的容器
docker?rm?[CONTAINER?ID]?//刪除運行的容器
systemctl?status?docker??//查看docker狀態
systemctl?stop?docker????//停止docker
systemctl?start?docker????//啟動docker
systemctl?restart?docker????//重啟docker

Docker + Jenkins + Nginx 實戰前端自動化部署

cfdbd5da9bf44851c2487f134a43f5d5.png
image.png
version:?'3.8'
#?執行腳本;docker-compose?-f?docker-compose-v1.0.yml?up?-d
services:jenkins:image:?jenkins/jenkins:2.439container_name:?jenkinsprivileged:?trueuser:?rootports:-?"9090:8080"-?"50001:50000"volumes:-?./jenkins_home:/var/jenkins_home?#?如果不配置到云服務器路徑下,則可以配置?jenkins_home?會創建一個數據卷使用-?/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?#?禁止安裝向導「如果需要密碼則不要配置」docker?exec?jenkins?cat?/var/jenkins_home/secrets/initialAdminPasswordrestart:?unless-stoppedvolumes:jenkins_home:

Jenkins-Mac

a49e70cc1ab3803b91b5c1f03e0763a5.png
image.png
1、安裝jenkinsbrew?install?jenkins2、鏈接launchd配置文件ln?-sfv?/usr/local/opt/jenkins/*.plist?~/Library/LaunchAgentsln?-sfv?/usr/local/opt/jenkins-lts/*.plist?~/Library/LaunchAgents3、啟動jenkinslaunchctl?load?~/Library/LaunchAgents/homebrew.mxcl.jenkins.plistlaunchctl?load?~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist4、停止jenkinslaunchctl?unload?~/Library/LaunchAgents/homebrew.mxcl.jenkins.plistlaunchctl?unload?~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist訪問:http://localhost:8080?
清華大學鏡像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
8c7f3bf081da2724ca7e76330edf8756.png
image.png
e8752c936c915a00bcd1889374f7c184.png
image.png
8e29649f2615186a7e2c4c3dd17c4966.png
image.png
3ba45c5f1650be66a78c4bcf881e333e.png
image.png
9affcda96b02770a3d91a67b4136438a.png
image.png
b1a9f85d34e24961f31bd441f46bdcbc.png
image.png
8d4f141317fc7cb22c24924932b5970e.png
image.png
3befd68de51ff74390c442c5394f5510.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?-versiontar?-xvzf?apache-maven-3.6.3-bin.tar.gz
mv?apache-maven-3.6.3?maven3
vi?/etc/profileMAVEN_HOME=/usr/local/tools/maven3?
export?MAVEN_HOME?
export?PATH=${PATH}:${MAVEN_HOME}/binsource?/etc/profile?
mvn?-version
  • 添加訪問憑據:點擊添加,添加訪問認證(我是用的UserName+Password模式也可以選擇其他方式)

866a885bde75ebd59c00d09449dcc3cc.png
image.png
41089ea10115db4d5f11c99e0da3c538.png
image.png
  • 源碼管理:選擇Git填寫倉庫地址,并添加訪問賬號和密碼或者秘鑰

b91902a8ee25f6e960588b6a21a1ff3d.png
image.png
caa325f412934d846d5926f64f538b11.png
image.png
2e5552fc66ff359f99ea0d77ac0186da.png
image.png
3b73327e0d36b501199993973f3c6574.png
image.png
1ea83819dd88fcc29ccb0ebb68d12d56.png
image.png
7328d7ef10946e588829339b50bb983b.png
image.png
a8cb6fc3ff3f90cd9576aa62a97f38f3.png
image.png
1d29c2e903f6bc70e5009a4cebbb67fa.png
image.png

Jenkins是開源CI&CD軟件領導者,是Devops神器

安裝Jenkins->編寫pipeline腳本->編寫Dockerfile腳本。

FROM?openjdk:8-jdk-alpineMAINTAINER?liunewshine@qq.comENV?TZ=Asia/Shanghai
RUN?ln?-snf?/usr/share/zoneinfo/$TZ?/etc/localtime?&&?echo?$TZ?>?/etc/timezone?&&?mkdir?-p?/esmsWORKDIR?/esmsEXPOSE?8090ADD?./target/esms.jar?./CMD?java?-Djava.security.egd=file:/dev/./urandom?-jar?esms.jar
18dbccecda5df8024c0240995553afba.png
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(務必使用docker-ce,老版本的docker會導致Jenkins中無法使用docker daemon)

流水線+docker,流水線可以讓項目發布流程更加清晰,docker可以大大減少Jenkins配置。

盡量減少Jenkins的配置和發布腳本的書寫。

CPU使用率、內存使用率和磁盤使用率的提高通常與系統中發生的特定操作和情況相關。以下是一些常見情況和操作,可能會導致這些資源的使用率增加:

  1. CPU使用率增加

  • 運行計算密集型任務:例如,執行大量數學計算、加密解密操作或圖像處理。

  • 運行多個并發應用程序:同時運行多個應用程序或服務,尤其是需要大量計算資源的應用程序,可能會導致CPU使用率增加。

  • 資源競爭:如果系統上運行了多個高優先級的任務或進程,它們可能會競爭CPU資源,導致CPU使用率上升。

內存使用率增加

  • 運行內存密集型應用程序:例如,大型數據庫、緩存服務或虛擬機。

  • 創建大型數據結構:例如,加載大型文件或數據集到內存中。

  • 內存泄漏:如果應用程序存在內存泄漏問題,內存使用率可能會持續增加,直到系統耗盡可用內存。

磁盤使用率增加

  • 寫入大量數據:例如,進行大規模的日志記錄、數據庫寫入操作或文件傳輸。

  • 讀取大量數據:例如,從磁盤加載大型文件或執行大型數據庫查詢。

  • 運行IO密集型應用程序:例如,視頻編碼、解碼或批量文件處理。

  • 文件系統碎片化:如果文件系統碎片化嚴重,可能會導致文件讀取和寫入操作變慢,進而導致磁盤使用率增加。

  • 查看某個端口是否開放:netstat -lnt | grep 80

  • 查看nginx配置是否正確:nginx -t

  • 查看nginx是否正常啟動:ps -ef | grep nginx

  • 查看防火墻狀態: systemctl status firewalld

  • 啟動防火墻: systemctl start firewalld

  • 停止防火墻: systemctl stop firewalld

  • 永久停用: systemctl disable firewalld

  • 啟用防火墻: systemctl enable firewalld

  • 查看某個端口占用情況:netstat –apn | grep 8080

  • 升級版本內核: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.7docker?run?-p?8080:8080?--name?gourdtomcat?\
--restart=always?-e?TZ="Asia/Shanghai"?\
-v?/docker/tomcat/test:/usr/local/tomcat/webapps/test?-d?tomcatdocker?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?yesdocker?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
//?查看運行中的容器
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]
//?強制刪除容器
docker?rm?-f?[容器名/容器ID]
//?刪除鏡像
docker?rmi?鏡像id
//?查看容器日志
docker?logs?[容器名/容器ID]
//?查看容器運行狀態信息
docker?stats
//?獲取容器/鏡像的元數據
docker?inspect?[OPTIONS]?NAME|ID?[NAME|ID...]
//?查看容器中運行的進程信息,支持?ps?命令參數
docker?top?[OPTIONS]?CONTAINER?[ps?OPTIONS]
//?將宿主機目錄拷貝到容器目錄
docker?cp?[path1]?[容器ID]:[path2]
//?將容器目錄拷貝到宿主機目錄
docker?cp?[容器ID]:[path2]?[path1]
  1. Web 應用程序,如 Nginx、Apache、Node.js、Tomcat 等。

  2. 數據庫,如 MySQL、PostgreSQL、MongoDB 等。

  3. 消息隊列,如 RabbitMQ、Kafka 等。

  4. 緩存,如 Redis、Memcached 等。

  5. 日志管理,如 ELK(Elasticsearch、Logstash、Kibana) 等。

  6. 容器管理,如 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/postgresdocker?run?--name?postgresql?--privileged?-e?POSTGRES_PASSWORD=password?-p?15433:5432?-v?/data/postgres:/var/lib/postgresql/data?-d?postgresdocker?ps?-adocker?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?<鏡像名稱>:<標簽>
3?運行容器?docker?run?<選項>?<鏡像名稱>:<標簽>
4?配置容器?docker?exec?<容器名稱>?<命令>
5?保存容器?docker?commit?<容器名稱>?<新鏡像名稱>:<標簽>
6?導出容器?docker?save?-o?<文件名稱>?<鏡像名稱>:<標簽>
7?導入容器?docker?load?-i?<文件名稱>
405e71bab4ca1f8f9171f9249e30b8e6.png
image.png

Navicat for PostgreSQL 是一個簡單易用的 PostgreSQL 數據庫開發圖形工具。從編寫簡單的 SQL 查詢到開發復雜的數據庫,Navicat for PostgreSQL 旨在滿足廣泛的用戶需求,從 PostgreSQL 初學者到經驗豐富的開發人員。連接到本地/遠程 PostgreSQL 服務器,并與 Amazon Redshift、Amazon Aurora、Amazon RDS、Google Cloud 和 Microsoft Azure 等云數據庫以及所有 PostgreSQL 數據庫對象兼容。

1de207155f3b846dc1e3f178697cbd84.png
image.png
  1. Apache Bench (ab) :Apache Bench是一個簡單而強大的HTTP性能測試工具,它通常隨著Apache Web服務器一起提供。您可以使用Homebrew來安裝它:brew install ab

  2. Wrk:Wrk是一個現代的HTTP性能測試工具,具有線程化設計和支持Lua腳本等特性。您可以使用Homebrew來安裝它:brew install wrk

  3. Siege:Siege是另一個流行的HTTP性能測試工具,具有簡單易用的特性。您可以使用Homebrew來安裝它:brew install siege

  4. Vegeta:Vegeta是一個命令行工具,用于基于HTTP進行負載測試和性能分析。您可以使用Homebrew來安裝它:brew install vegeta

  5. JMeter:Apache JMeter是一個功能強大的Java應用程序,用于執行各種負載測試和性能測量,不僅限于HTTP。您可以從官方網站下載并手動安裝它:Apache JMeter。

創建MQTT pub Sampler錄入要發送MQTT的topic,如果需要發送不同數據,可以創建一個CVS,從表里獲取數據。這時候在Pub sampler 里就需要使用${}來獲取數據,字符串要加“”。

如果要模擬多個設備,那就創建多個線程組即可。如果想要測試MQTT服務能承受多大的并發, 可以根據需要設置線程數和間隔時間,不過這個數量如果特別大的話,并發量會不精準,但總體上還是可以達到我們的測試目的。

21b6392293b5c93d75b40fbc3b3d6cbc.png
image.png
23b3376d42d39f38aa8f5581e62de431.png
image.png
  • 最好設置一個定時器,控制發送的頻率。比如設置10毫秒一次,相當于1個線程1秒發送100次數據

6719f30c9e8bf4750a89a9a2ecfc0a32.png
image.png

注意超時時間,這里默認的是10毫秒,如果MQTT服務不穩定,可能會出現偶爾連不上的問題,建議1000毫秒

8059acea756955e05a28c82bbfaca786.png
image.png
943b7fb202d465123a7950f673d8bb7b.png
image.png
8852012ed313e682f890b696ff8f4f47.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,?"沒有操作權限/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啟動請實現該方法@Overrideprotected?SpringApplicationBuilder?configure(SpringApplicationBuilder?builder)?{return?builder.sources(SecurityApplication.class);}
}
b7fba5f26d582d8b444f0210477a892b.png
image.png
013e69d21e289f698756204450a6f92b.png
image.png
702e451f0c004e033c86e390e7a22d47.png
image.png
c58368e24ff093413fc36a4a37fa866b.png
image.png
79683c4e72cdea4e69c81120052581d2.png
image.png
afb686b12ef8ccb7a1abe31bb4ac5664.png
image.png
aaab2799d9476ef9c0c91e5a87639f32.png
image.png
326f2bcb4628d8773628249a2eddb5c4.png
image.png
093a9945a91ed5e5f0a0c20c778b6602.png
image.png
faf42bba3708e86eb6722e1e6adb7d4d.png
image.png
0735640289f0c7fe982cb52c94806c72.png
image.png

Docker Compose是一個用于定義和運行多個Docker容器的工具。它允許您使用YAML文件來配置應用程序的服務、網絡和卷,并使用單個命令啟動、停止和管理整個應用程序。通過Docker Compose,您可以在一個命令中啟動包含多個容器的應用程序,而無需手動運行多個docker run命令。

Docker Compose的核心概念包括:

  1. 服務(Services) :指應用程序中的不同組件,每個服務通常對應一個容器。

  2. 項目(Project) :指由一組關聯的服務組成的完整應用程序。

  3. YAML文件:用于定義項目結構、服務配置和依賴關系的文本文件,通常稱為docker-compose.yml

使用Docker Compose,您可以輕松地在開發、測試和生產環境中部署和管理復雜的容器化應用程序。

全局參數

filter

監測數據項統一過濾,保留兩位小數。

{{10.23123|montionFilter?}}

掃碼登錄流程講解、獲取授權登錄二維碼

08b2da7d4fd2b43c4d40b43aa4c8af66.png
image.png

微信開放平臺的方式應該是最舒服的微信掃碼登陸了,但是前提需要交認證300元的認證費用,網站的話還需要提交《微信開放平臺網站信息登記表》,也是審核最麻煩的方式,只好先pass啦

c6971f784a565b92d502039f8b305c86.png
開發者認證
eaec2bcab8dd5bebeabe9339ebdc09bd.png
網站審核
96fc3138a300f7a4b3df3cd321ebe50a.png
image.png

時序圖總結流程:

1、用戶點擊網站微信登陸圖標。

2、網站帶上AppID和AppSecret和回調域名參數請求微信OAuth2.0授權登陸。

3、第二步通過后,微信返回二維碼供用戶掃碼。

4、用戶掃碼確定授權。

5、微信帶上code參數回調java后端相關接口。

6、java后端獲取到code后,在帶上帶上AppID和AppSecret和code再去調微信接口。

7、獲取access_token后就可以解析用戶的一些基本信息,比如:微信用戶頭像、用戶名、性別、城市等一些基本參數。

準備工作

網站應用微信登錄是基于OAuth2.0協議標準構建的微信OAuth2.0授權登錄系統。 在進行微信OAuth2.0授權登錄接入之前,在微信開放平臺注冊開發者賬號,并擁有一個已審核通過的網站應用,并獲得相應的AppID和AppSecret,申請微信登錄且通過審核后,可開始接入流程。

授權流程說明

微信OAuth2.0授權登錄讓微信用戶使用微信身份安全登錄第三方應用或網站,在微信用戶授權登錄已接入微信OAuth2.0的第三方應用后,第三方可以獲取到用戶的接口調用憑證(access_token),通過access_token可以進行微信開放平臺授權關系接口調用,從而可實現獲取微信用戶基本開放信息和幫助用戶實現基礎開放功能等。 微信OAuth2.0授權登錄目前支持authorization_code模式,適用于擁有server端的應用授權。該模式整體流程為:

1.?第三方發起微信授權登錄請求,微信用戶允許授權第三方應用后,微信會拉起應用或重定向到第三方網站,并且帶上授權臨時票據code參數;
2.?通過code參數加上AppID和AppSecret等,通過API換取access_token;
3.?通過access_token進行接口調用,獲取用戶基本數據資源或幫助用戶實現基本操作。

第一步:請求CODE

第三方使用網站應用授權登錄前請注意已獲取相應網頁授權作用域(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 若提示“該鏈接無法訪問”,請檢查參數是否填寫錯誤,如redirect_uri的域名與審核時填寫的授權域名不一致或scope不為snsapi_login。

831056940c1827d5b90eef14444b5ab1.png
image.png
0edff8ff81e55400ca08bfbc8c29a17e.png
image.png
1.?若access_token已超時,那么進行refresh_token會獲取一個新的access_token,新的超時時間;
2.?若access_token未超時,那么進行refresh_token不會改變access_token,但超時時間會刷新,相當于續期access_token。

請求方法

獲取第一步的code后,請求以下鏈接進行refresh_token:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
1、Appsecret?是應用接口使用密鑰,泄漏后將可能導致應用數據泄漏、應用的用戶數據泄漏等高風險后果;存儲在客戶端,極有可能被惡意竊取(如反編譯獲取Appsecret);
2、access_token?為用戶授權第三方應用發起接口調用的憑證(相當于用戶登錄態),存儲在客戶端,可能出現惡意獲取access_token?后導致的用戶數據泄漏、用戶微信相關接口功能被惡意發起等行為;
3、refresh_token?為用戶授權第三方應用的長效憑證,僅用于刷新access_token,但泄漏后相當于access_token?泄漏,風險同上;
4、如無特別業務需求,建議開發者自行管理業務登錄態并合理設置過期時間,減少用戶重新授權登錄次數,優化用戶體驗。建議將secret、用戶數據(如access_token)放在App云端服務器,由云端中轉接口調用請求。

對于接口作用域(scope),能調用的接口有以下:

授權作用域(scope)接口接口說明
snsapi_base/sns/oauth2/access_token通過code換取access_token、refresh_token和已授權scope
snsapi_base/sns/oauth2/refresh_token刷新或續期access_token使用
snsapi_base/sns/auth檢查access_token有效性
snsapi_userinfo/sns/userinfo獲取用戶個人信息
  1. 什么是授權臨時票據(code)? 答:第三方通過code進行獲取access_token的時候需要用到,code的超時時間為10分鐘,一個code只能成功換取一次access_token即失效。code的臨時性和一次保障了微信授權登錄的安全性。第三方可通過使用https和state參數,進一步加強自身授權登錄的安全性。

  2. 什么是授權作用域(scope)? 答:授權作用域(scope)代表用戶授權給第三方的接口權限,第三方應用需要向微信開放平臺申請使用相應scope的權限后,使用文檔所述方式讓用戶進行授權,經過用戶授權,獲取到相應access_token后方可對接口進行調用。

a8c47a8d221c760911842d06c6d27905.png
image.png
735e002637a72f7f660735341d25ce81.png
image.png
e006fd805352678cd4e7795cae284e0e.png
image.png
  1. 當認證完成之后,我們即可以創建網站應用

058f6bed1916039fef763a72e9aa626d.png
Spring學習筆記(二十三)——實現網站微信掃碼登錄獲取微信用戶信息Demo-左眼會陪右眼哭の博客
b2c8ffd52e12c0d5e7ddb0ea199bd7e1.png
image.png

1、微信開放平臺介紹(申請里面的網站應用需要企業資料) 微信開放平臺網站:https://open.weixin.qq.com/

2、什么是appid、appsecret、授權碼code appid和appsecret是 資源所有者向申請人分配的一個id和秘鑰 code是授權憑證,A->B 發起授權,想獲取授權用戶信息,那a必須攜帶授權碼,才可以向B獲取授權信息 (你要從我這里拿東西出去,就必須帶身份證)

3、先仔細閱讀下微信開放平臺 官方給出的微信登錄開發指南: 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:公眾號唯一標識appsecret:公眾號的秘鑰mch_id:商戶號,申請微信支付的時候分配的key:支付交易過程生成簽名的秘鑰,設置路徑?微信商戶平臺(pay.weixin.qq.com)-->賬戶中心-->賬戶設置-->API安全-->密鑰設置
#????3、和微信支付交互方式1、post方式提交2、xml格式的協議3、簽名算法MD54、交互業務規則?先判斷協議字段返回,再判斷業務返回,最后判斷交易狀態5、接**易單位為?分6、交易類型:JSAPI--公眾號支付、NATIVE--原生掃碼支付、APP--app支付

微信支付業務流程說明:

(1)商戶后臺系統根據用戶選購的商品生成訂單。

(2)用戶確認支付后調用微信支付【統一下單API】生成預支付交易;

(3)微信支付系統收到請求后生成預支付交易單,并返回交易會話的二維碼鏈接code_url。

(4)商戶后臺系統根據返回的code_url生成二維碼。

(5)用戶打開微信“掃一掃”掃描二維碼,微信客戶端將掃碼內容發送到微信支付系統。

(6)微信支付系統收到客戶端請求,驗證鏈接有效性后發起用戶支付,要求用戶授權。

(7)用戶在微信客戶端輸入密碼,確認支付后,微信客戶端提交授權。

(8)微信支付系統根據用戶授權完成支付交易。

(9)微信支付系統完成支付交易后給微信客戶端返回交易結果,并將交易結果通過短信、微信消息提示用戶。微信客戶端展示支付交易結果頁面。

(10)微信支付系統通過發送異步消息通知商戶后臺系統支付結果。商戶后臺系統需回復接收情況,通知微信后臺系統不再發送該單的支付通知。

(11)未收到支付通知的情況,商戶后臺系統調用【查詢訂單API】。

(12)商戶確認訂單已支付后給用戶發貨。

加群聯系作者vx:xiaoda0423

倉庫地址:https://github.com/webVueBlog/JavaGuideInterview

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713957.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713957.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713957.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux系統Jenkins工具添加自由項目和maven項目

Jenkins添加自由項目 添加自由項目操作流程代碼遠程代碼郵件標題郵件正文 添加maven項目準備環境操作流程 添加自由項目 gitlab配置基本代碼頁面等&#xff0c;拉取代碼&#xff0c;打包&#xff0c;發布操作流程 代碼 遠程代碼 echo ssh root192.168.188.177 "tar cz…

EasyExcel 自適應列寬、隱藏列、動態列、單元格下拉框選擇數據、單元格文本格式

前言 項目中用到EasyExcel讀寫Excel&#xff0c;用到了一下功能&#xff0c;這里做個筆記&#xff1a; 列寬自適應&#xff1a;自適應寬度隱藏列&#xff1a;隱藏某些列動態列&#xff1a;固定列 動態的生成Excel列單元格下拉框選擇數據&#xff1a;設計單元格下拉數據&…

深搜,LeetCode 2368. 受限條件下可到達節點的數目

一、題目 1、題目描述 現有一棵由 n 個節點組成的無向樹&#xff0c;節點編號從 0 到 n - 1 &#xff0c;共有 n - 1 條邊。 給你一個二維整數數組 edges &#xff0c;長度為 n - 1 &#xff0c;其中 edges[i] [ai, bi] 表示樹中節點 ai 和 bi 之間存在一條邊。另給你一個整數…

WPF的DataGrid設置標題頭

要設置DataGrid標題頭的分割線、背景色和前景色等屬性&#xff0c;您可以使用DataGrid的樣式和模板來自定義標題頭的外觀。下面是詳細解釋以及示例代碼&#xff1a; 分割線設置&#xff1a; 您可以使用DataGrid.ColumnHeaderStyle樣式中的BorderThickness和BorderBrush屬性來設…

Java基礎-java開發入門

(創作不易&#xff0c;感謝有你&#xff0c;你的支持&#xff0c;就是我前行的最大動力&#xff0c;如果看完對你有幫助&#xff0c;請留下您的足跡&#xff09; 目錄 一、什么是Java 二、Java語言的特點 三、什么是JDK 四、第一個Java程序 一、什么是Java Java是由Sun …

electron nsis 安裝包 window下任務欄無法正常固定與取消固定

問題 win10系統下&#xff0c;程序任務欄在固定后取消固定&#xff0c;展示的程序內容異常。 排查 1.通過論壇查詢&#xff0c;應該是與app的api setAppUserModelId 相關 https://github.com/electron/electron/issues/3303 2.electron-builder腳本 electron-builder…

二月打戲最燃的國漫推薦,斗羅大陸2上榜,吞噬星空堪稱第一

2024年開年&#xff0c;國漫就給我們帶來了很大的驚喜&#xff0c;在剛剛過去的2月&#xff0c;有幾部中出現了超燃的打戲&#xff0c;看得人熱血沸騰。尤其是科幻番《吞噬星空》中的一場1V1對決&#xff0c;特效和設計都堪稱第一。還有哪些國漫上榜呢&#xff1f;下面就一起來…

TCP為什么要三次握手?

TCP三次握手協議是為了在不可靠的互聯網環境中可靠地建立起一個連接&#xff0c;三次握手可以確保兩端的發送和接收能力都是正常的。 那么&#xff0c;為什么是三次而不是二次或四次握手呢&#xff1f; 為什么不是二次握手&#xff1f; 如果是二次握手&#xff0c;即客戶端發…

網絡編程 io_uring

io_uring 1、概述 io_uring是Linux&#xff08;內核版本在5.1以后&#xff09;在2019年加入到內核中的一種新型的異步I/O模型&#xff1b; io_uring使用共享內存&#xff0c;解決高IOPS場景中的用戶態和內核態的切換過程&#xff0c;減少系統調用&#xff1b;用戶可以直接向…

vue + cesium初始化地圖 + 鼠標經過地圖(點、線等其他實體)樣式

vue cesium初始化地圖 鼠標經過地圖&#xff08;點、線等其他實體&#xff09;樣式 export function initMap(mapViewer) {Cesium.Ion.defaultAccessToken "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI0OTUzOGJhMy1iNzVjLTQwZjItYWYyNy03YjA4MjM0YWE2MWMiLCJpZ…

Unity(第二十二部)官方的反向動力學一般使用商城的IK插件,這個用的不多

反向動力學&#xff08;Inverse Kinematic&#xff0c;簡稱IK&#xff09;是一種通過子節點帶動父節點運動的方法。 正向動力學 在骨骼動畫中&#xff0c;大多數動畫是通過將骨架中的關節角度旋轉到預定值來生成的&#xff0c;子關節的位置根據父關節的旋轉而改變&#xff0c;這…

編寫腳本一鍵安裝rsyslog

腳本分解 環境檢測部分 檢查操作系統 #!/bin/bash# 檢查是否為 Debian 類型 if [ -f /etc/debian_version ]; thenecho "當前操作系統是 Debian 類型"SYSLOG_SERVICE"rsyslog"INSTALL_COMMAND"apt-get install -y"CONFIG_FILE"/etc/rsys…

Vmware esxi虛擬主機狀態無效,無法注銷重啟等操作修復解決

問題 裝有ESXI系統的服務器在強制關機啟動后&#xff0c;顯示虛擬機狀態是無效的&#xff0c;并且無法進行任何操作。 解決辦法 對出問題的虛擬機重新注冊 1、開啟esxi系統的ssh功能 2、取消注冊出問題的虛擬機 找到問題的虛擬機 [rootlocalhost:~] vim-cmd vmsvc/getal…

燒腦問題解決辦法:如何選擇一款合適自己的手機流量卡

現在社會人們越來越離不開手機了&#xff0c;手機給我們生活帶來了翻天覆地的變化&#xff0c;手機需要最多的就是流量了&#xff0c;所以選擇一款合適自己的手機流量卡就顯得尤為重要了&#xff0c;今天小編就給大家來分享一下我的經驗&#xff0c;希望對大家能有幫助&#xf…

python基礎-基本數據類型深入-2.1

目錄 元組 什么是元組&#xff08;tuple&#xff09; 元組練習-1 元組的基本操作 元組常用內建函數 列表和元組的區別與總結 元組練習-2 元組練習-3 元組 什么是元組&#xff08;tuple&#xff09; 與列表&#xff08;list&#xff09;一樣&#xff0c;元組&#xff0…

【Web安全靶場】sqli-labs-master 54-65 Challenges 與62關二分法和like模糊搜索

sqli-labs-master 54-65 Challenges 其他關卡和靶場見專欄… 文章目錄 sqli-labs-master 54-65 Challenges第五十四關-聯合注入第五十五關-聯合注入第五十六關-聯合注入第五十七關-聯合注入第五十八關-報錯注入第五十九關-報錯注入第六十關-報錯注入第六十一關-報錯注入第六十…

grid的刪除

/u01/11.2.0/grid 為 grid 用戶的安裝主目錄 1、刪除 crs 配置信息 root: cd /u01/11.2.0/grid/crs/install perl rootcrs.pl -deconfig -force 2、刪除 crs 配置信息&#xff0c;并卸載軟件 cd /u01/11.2.0/grid/deinstall ./deinstall grid user: ./deinstall -home /…

Mysql與StarRocks語法上的不同

&#x1f413; 序言 StarRocks 是新一代極速全場景 MPP (Massively Parallel Processing) 數據庫。StarRocks 的愿景是能夠讓用戶的數據分析變得更加簡單和敏捷。用戶無需經過復雜的預處理&#xff0c;可以用StarRocks 來支持多種數據分析場景的極速分析。 &#x1f413; 語法…

嵌入式驅動學習第一周——linux的休眠與喚醒

前言 本文介紹進程的休眠與喚醒。 嵌入式驅動學習專欄將詳細記錄博主學習驅動的詳細過程&#xff0c;未來預計四個月將高強度更新本專欄&#xff0c;喜歡的可以關注本博主并訂閱本專欄&#xff0c;一起討論一起學習。現在關注就是老粉啦&#xff01; 行文目錄 前言1. 阻塞和非阻…

第二節 數學知識補充

一、線性代數 向量的 L 2 L_2 L2?范數&#xff08;Euclidean范數/Frobenius范數&#xff09;&矩陣的元素形式范數 向量的 L 2 L_2 L2?范數&#xff1a; ∣ ∣ x ∣ ∣ 2 ( ∣ x 1 ∣ 2 ? ∣ x m ∣ 2 ) 1 2 ||x||_2(|x_1|^2\cdots|x_m|^2)^{\frac12} ∣∣x∣∣2?(∣…