# 準備
## 安裝操作證書


## 安裝API證書
[https://pay.weixin.qq.com/index.php/account/api_cert](https://pay.weixin.qq.com/index.php/account/api_cert)

~~~
附件共四份(證書pkcs12格式、證書pem格式、證書密鑰pem格式、CA證書),為接口中強制要求時需要攜帶的證書文件。證書屬于敏感信息,請妥善保管不要泄漏和被他人復制。
不同開發語言下的證書格式不同,以下為說明指引:
歡迎使用微信支付!
微信支付API共四份(證書pkcs12格式、證書pem格式、證書密鑰pem格式、CA證書),為接口中強制要求時需攜帶的證書文件。
證書屬于敏感信息,請妥善保管不要泄露和被他人復制。
不同開發語言下的證書格式不同,以下為說明指引:
證書pkcs12格式(apiclient_cert.p12)
包含了私鑰信息的證書文件,為p12(pfx)格式,由微信支付簽發給您用來標識和界定您的身份
部分安全性要求較高的API需要使用該證書來確認您的調用身份
windows上可以直接雙擊導入系統,導入過程中會提示輸入證書密碼,證書密碼默認為您的商戶ID(如:10010000)
證書pem格式(apiclient_cert.pem)
從apiclient_cert.p12中導出證書部分的文件,為pem格式,請妥善保管不要泄漏和被他人復制
部分開發語言和環境,不能直接使用p12文件,而需要使用pem,所以為了方便您使用,已為您直接提供
您也可以使用openssl命令來自己導出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem
證書密鑰pem格式(apiclient_key.pem)
從apiclient_cert.p12中導出密鑰部分的文件,為pem格式
部分開發語言和環境,不能直接使用p12文件,而需要使用pem,所以為了方便您使用,已為您直接提供
您也可以使用openssl命令來自己導出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
CA證書(rootca.pem)
微信支付api服務器上也部署了證明微信支付身份的服務器證書,您在使用api進行調用時也需要驗證所調用服務器及域名的真實性
該文件為簽署微信支付證書的權威機構的根證書,可以用來驗證微信支付服務器證書的真實性
某些環境和工具已經內置了若干權威機構的根證書,無需引用該證書也可以正常進行驗證,這里提供給您在未內置所必須根證書的環境中載入使用
~~~
## 學習Node.js里的weixin-pay模塊
[https://github.com/tvrcgo/weixin-pay](https://github.com/tvrcgo/weixin-pay)
~~~
npm i -S weixin-pay
~~~
### 創建weixin-pay對象
~~~
var WXPay = require('weixin-pay');
var wxpay = WXPay({
appid: 'xxxxxxxx',
mch_id: '1234567890',
partner_key: 'xxxxxxxxxxxxxxxxx', //微信商戶平臺API密鑰
pfx: fs.readFileSync('./wxpay_cert.p12'), //微信商戶平臺證書
});
~~~
### 創建統一支付訂單
~~~
wxpay.createUnifiedOrder({
body: '掃碼支付測試',
out_trade_no: '20140703'+Math.random().toString().substr(2, 10),
total_fee: 1,
spbill_create_ip: '192.168.2.210',
notify_url: 'http://wxpay_notify_url',
trade_type: 'NATIVE',
product_id: '1234567890'
}, function(err, result){
console.log(result);
});
~~~
- 前言
- 1 skill
- 1.1 Coding WebIDE
- 1.2 git
- 1.3 extra practice
- 1.4 預習
- 2 nodejs入門
- 2.1 入門
- 2.2 安裝
- 2.3 helloworld
- 2.4 commonJS規范
- 2.5 模塊導出
- 2.6 Nodejs代碼調試
- 2.7 編寫Nodejs模塊
- 2.8 最小化問題
- 2.9 隨堂練習
- 3 異步流程控制
- 3.1 什么時候會用到異步流程控制
- 3.2 簡單做法async模塊
- 3.3 Promise/a+規范
- 3.4 Node.js Promise/a+實現
- 3.5 生成器Generators/yield
- 3.6 Async函數/Await
- 3.7 神奇的co
- 3.8 5種 yieldable
- 3.9 學習重點
- 3.10 隨堂練習
- 4 express和微信開發入門
- 4.1 入門
- 4.2 connect
- 4.3 靜態Http服務器
- 4.4 那些預處理器
- 4.5 路由
- 4.6 視圖與模塊引擎
- 4.7 中間件
- 4.8 更多實踐
- 4.9 微信入門
- 4.10 隨堂練習:完成登錄、注冊功能
- 5 微信實例與H5實踐
- 5.1 微信基礎和sandbox
- 5.2 公眾號菜單和自動回復
- 5.3 微信OAuth用戶授權
- 5.4 微信分享
- 5.5 wechat-api
- 5.6 H5-上篇
- 5.7 H5-下篇
- 5.8 隨堂練習
- 6 weui實戰
- 6.1 使用bower
- 6.2 移動端抽象
- 6.3 優化滑動列表
- 6.4 weui
- 6.5 讓weui和iscroll結婚
- 6.6 優化事件
- 6.7 how-to-write-h5
- 6.8 優化無止境
- 6.9 隨堂練習
- 7 微信支付
- 7.1 吹個牛
- 7.2 支付概述
- 7.3 科普幾個概念
- 7.4 準備
- 7.5 調試
- 7.6 公眾號支付(JSAPI)
- 7.7 對賬單
- 7.8 數據處理
- 7.9 隨堂練習
- 8 項目實戰《付費課程系統MVP》
- 8.1 需求分析
- 8.2 ui/ue
- 8.3 技術棧
- 8.4 模型
- 8.5 靜態api
- 8.6 開發
- 8.7 部署
- 8.8 監控
- 8.9 數據統計
- 8.10 demo
- 9 高級篇
- 9.1 前后端分離實踐?
- 9.2 如何展望未來的大前端
- 9.3 容器和微服務
- 10 答疑問題收集