### 簽名專區
### 1、生成RSA密鑰
支付寶提供一鍵生成工具便于開發者生成一對RSA密鑰,可通過下方鏈接下載密鑰生成工具:
windows:
鏈接:[https://pan.baidu.com/s/1MtTqycjubQKFRrfjzqRniA](https://pan.baidu.com/s/1MtTqycjubQKFRrfjzqRniA) 提取碼:s7d3
mac:
鏈接:[https://pan.baidu.com/s/13QZHGEgND-5jwo6H6s1GZQ](https://pan.baidu.com/s/13QZHGEgND-5jwo6H6s1GZQ) 提取碼:juyx
下載該工具后,解壓打開文件夾,運行“RSA簽名驗簽工具.bat”(WINDOWS)或“RSA簽名驗簽工具.command”(MAC\_OSX)。

~~~
詳細步驟:
~~~
* 1.根據開發語言選擇密鑰格式。
* 2.選擇密鑰長度,新建應用請務必使用2048位。
* 3.點擊 “生成密鑰”,會自動生成商戶應用公鑰和應用私鑰。
* 4.點擊“打開密鑰文件路徑”,即可找到生成的公私鑰。

生成的私鑰需妥善保管,避免遺失,不要泄露。應用私鑰需填寫到代碼中供簽名時使用。應用公鑰需提供給支付寶賬號管理者上傳到支付寶開放平臺。 **TIPS:**除了使用支付寶提供的一鍵生成密鑰工具外,也可以使用OpenSSL工具命令生成密鑰。
### 2、上傳應用公鑰并獲取支付寶私鑰
1. 點擊簽名驗簽工具右下角的“上傳公鑰”會打開支付寶[開放平臺網頁](https://openhome.alipay.com/platform/appManage.htm),輸入賬號登錄。(建議使用IE或Chrome瀏覽器。)
2. 在“我的應用”中,選擇要配置密鑰的應用,點擊“查看”。記錄對應的**APPID**(下圖紅框處),在代碼中使用。

若首次登錄管理中心,請根據引導填寫所需信息完成開發者入駐:
第一步:點擊認證,完成實名認證。

第二步:點擊編輯,完善信息。

根據引導流程,完成手機綁定。

第三步:簽署協議,完成入駐。

3. 在“應用信息”-“接口加簽方式”下方點擊“設置應用公鑰”。
注: 1)接口中的sign\_type參數應與上傳密鑰的加簽方式一致。例如接口參數中sign\_type=RSA2,請求時就會使用此處設置的RSA2(SHA256)公鑰驗簽。 2)新建應用僅支持RSA2加簽方式

根據開發者的條件設置應用公鑰或上傳公鑰證書,常規請點擊設置應用公鑰。

若未綁定手機,請根據引導,完成手機綁定,完成手機短信驗證。

把簽名驗簽工具里“公鑰”的內容復制到此處,點擊“保存”完成密鑰設置。

保存成功后,在同一頁面查看或修改應用公鑰或上傳應用公鑰證書。

保存支付寶公鑰內容,在代碼中驗簽使用。
### 3、使用應用私鑰生成請求簽名
~~~
##### 使用應用私鑰生成請求簽名
~~~
把1).APPID,2).應用私鑰,3).支付寶公鑰,配置在代碼中,對請求內容進行簽名,并對支付寶返回的內容進行驗簽。
支付寶開放平臺SDK封裝了簽名和驗簽過程,只需配置賬號及密鑰參數即可,強烈建議使用。
~~~
##### 使用開放平臺SDK接入
~~~
開放平臺SDK封裝了簽名實現,只需在創建DefaultAlipayClient對象時,設置請求網關(gateway),應用id(app\_id),應用私鑰(private\_key),編碼格式(charset),支付寶公鑰(alipay\_public\_key),簽名類型(sign\_type)即可,報文請求時會自動進行簽名。
~~~
AlipayClient alipayClient = new DefaultAlipayClient(gateway,app_id,private_key,"json",charset,alipay_public_key,sign_type);
?
?
~~~
### 4、使用支付寶公鑰驗簽
支付寶開放平臺SDK封裝了簽名和驗簽過程,只需配置賬號及密鑰參數,強烈建議使用。
##### 使用開放平臺SDK接入
同步返回和異步通知報文格式及驗簽方法有所區別。
##### 同步返回驗簽
開放平臺SDK封裝了同步返回驗簽實現,只需在創建DefaultAlipayClient對象時,設置請求網關(gateway),應用id(app\_id),應用私鑰(private\_key),編碼格式(charset),支付寶公鑰(alipay\_public\_key),簽名類型(sign\_type)即可,同步返回報文時會自動進行驗簽。
~~~
AlipayClient alipayClient = new DefaultAlipayClient(gateway,app_id,private_key,"json",charset,alipay_public_key,sign_type);
~~~
##### 異步通知驗簽
某些情況下(比如掃碼支付成功時),支付寶會給商戶發送異步通知。
如果某商戶設置的通知地址為[https://api.xx.com/receive\_notify.htm](https://api.xx.com/receive_notify.htm),對應接收到通知的示例如下:
~~~
https://api.xx.com/receive_notify.htm?total_amount=2.00&buyer_id=2088102116773037&body=大樂透2.1&trade_no=2016071921001003030200089909&refund_fee=0.00¬ify_time=2016-07-19 14:10:49&subject=大樂透2.1&sign_type=RSA&charset=utf-8¬ify_type=trade_status_sync&out_trade_no=0719141034-6418&gmt_close=2016-07-19 14:10:46&gmt_payment=2016-07-19 14:10:47&trade_status=TRADE_SUCCESS&version=1.0&sign=kPbQIjX+xQc8F0/A6/AocELIjhhZnGbcBN6G4MM/HmfWL4ZiHM6fWl5NQhzXJusaklZ1LFuMo+lHQUELAYeugH8LYFvxnNajOvZhuxNFbN2LhF0l/KL8ANtj8oyPM4NN7Qft2kWJTDJUpQOzCzNnV9hDxh5AaT9FPqRS6ZKxnzM=&gmt_create=2016-07-19 14:10:44&app_id=2015102700040153&seller_id=2088102119685838¬ify_id=4a91b7a78a503640467525113fb7d8bg8e
~~~
開放平臺SDK提供了AlipaySignature.rsaCheckV1方法,可以使用該方法對通知報文驗簽。
~~~
/**
@param params 參數列表(包括待驗簽參數和簽名值sign) key-參數名稱 value-參數值
@param publicKey 驗簽公鑰
@param charset 驗簽字符集
**/
boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset)
~~~
- Linux
- linux常用命令
- awk
- cp
- scp
- mv
- screen工具
- rsync
- Linux設置靜態IP
- vim常用
- ssh免密登錄
- linux掛載磁盤和開機自動掛載
- 文件的時間戳
- 重定向
- 防火墻
- Vultr 服務器利用快照更換IP
- ss
- node-yarn
- ES安裝向導
- lnmp/lamp
- windows安裝mysql
- windows安裝nginx
- Let'sEncrypt 免費通配符/泛域名SSL證書
- 開機自動掛載硬盤
- 普通用戶提權
- ELK日志分析系統
- Docker
- docker
- centos7安裝docker
- Centos7安裝redis
- CentOS 7 使用Docker搭建Nginx
- CentOS 7 使用Docker搭建Jenkins
- CentOS 7 使用Docker搭建Zookeeper
- CentOS 7 使用Docker搭建Tomcat
- CentOS 7 使用Docker搭建Mysql
- CentOS 7 使用Docker搭建PHP環境
- 使用docker搭建Swagger
- docker阿里云私有倉庫
- docker zookeeper集群
- docker部署ES
- docker之java容器運行外置springboot-jar
- docker部署owncloud云盤
- ETCD
- centos7部署etcd節點
- Dockerfile
- Docker-compose
- gitlab.yml
- db.yml
- 安裝docker-compose
- gitlab-docker-compose.yml
- nginx-docker-compose.yml
- Mysql
- mysql開啟遠程訪問及相關權限控制
- mysql授權
- mysql快速導出導入大數據
- mysql單機備份
- binlog日志
- shell
- 經典案例
- 俄羅斯方塊游戲
- 系統初始化
- 服務器監控
- go基礎環境
- shell.監控日志.elk
- shell.檢查各服務腳本
- shell.刪除文件腳本
- shell.守護進程
- shell.數據庫
- shell.Ansible
- shell.dev
- shell.ftp環境
- shell.docker環境
- shell.k8s環境
- k8s.二進制安裝
- K8s.一主多從
- k8s.三主兩從高可用
- k8s.檢查服務與配置
- k8s.jenkins
- k8s.gitlab
- go-install.sh
- jenkins-install.sh
- node-install.sh
- redis-install.sh
- zabbix-install.sh
- zabbix-dockerfile.sh
- nginx-install.sh
- shell變量
- 用戶自定義變量
- 環境變量
- shell特殊變量
- shell條件判斷
- 流程控制
- shell運算符
- Shell _printf
- shell_test
- shell函數
- 輸出重定向
- 網絡相關
- 安全相關
- 堡壘機部署
- 區塊鏈威脅情報共享平臺
- 簽名與驗簽
- 淺談區塊鏈
- 智能合約
- 黃金幣GTF智能合約
- 節點
- 以太坊公鏈私鏈geth同步
- 比特節點同步
- BTC節點錯誤解決方法
- eth硬分叉
- omni錢包節點搭建
- 架構
- K8s
- 搭建k8s集群完整篇
- 二進制部署k8s
- Devops
- git
- Jenkins
- svn
- 禪道
- CI/CD
- docker+jenkins+golang持續集成持續交付(CI/CD)
- 項目部署
- config.env
- docker-compose.yml
- Dockerfile模板
- .dockerignore
- run.sh
- nginx.conf模板
- 跨域
- jenkins配置
- 測試
- Python