配置文件中html
1.app_id :是移動端相關的appId,在微信支付平臺中-->產品中心-->APPID受權管理-->裏面的列表中APPID,即時這個java
2.BUSINESS_CODE : 商戶號--即在代碼中獲取的 MchID ,支付平臺(pay.weixin.qq.com....)-->產品中心--> 開發配置 -->商戶信息(在開發配置中,還能夠配置公衆號支付的jsapi支付的目錄,和掃碼支付的回調鏈接)算法
3.API_KEY :在微信支付平臺中-->帳戶中心-->api安全--api祕鑰設置(在API調用時用來按照指定規則對你的請求參數進行簽名,服務器收到你的請求時會進行簽名驗證,既能夠界定你的身份也能夠防止其餘人惡意篡改請求數據。)後端
4.APIV3_KEY:在微信支付平臺中-->帳戶中心--> apiv3祕鑰,(調用APIv3的下載平臺證書接口、處理回調通知中報文時,要經過該密鑰來解密信息,防止報文被他人惡意篡改)api
5.SIGN_TYPE:簽名類型,默認MD5,通常默認便可安全
6.PEM_ADDRESS:證書地址,相似(/wxConfig/apiclient_cert.p12)服務器
7.NOTIFY_URL:異步通知地址,好比(http://test-xxx.com/wxAppPay/notify),不可帶參數微信
8.重點:微信支付的簽名,一共生成2次,第一次是在生成預支付訂單的時候,參數以下app
//生成商戶訂單號,不可重複 String out_trade_no = "wxpay" + System.currentTimeMillis(); data.put("appid", config.getAppID());//應用ID data.put("mch_id", config.getMchID());//商戶號 data.put("nonce_str", WXPayUtil.generateNonceStr());//隨機字符串,不長於32位。推薦隨機數生成算法 String body = "新臉譜微信訂單支付-測試-"+ System.currentTimeMillis(); data.put("body", body); //商品描述 data.put("out_trade_no", out_trade_no); //商戶訂單號 data.put("total_fee", total_fee); //總金額 data.put("spbill_create_ip", spbillCreateIp);//本身的服務器IP地址 ---點擊支付的機器IP data.put("notify_url", NOTIFY_URL);//異步通知地址(請注意必須是外網) data.put("trade_type", TRADE_TYPE_APP);//交易類型 data.put("attach", attach);//附加數據,在查詢API和支付通知中原樣返回,該字段主要用於商戶攜帶訂單的自定義數據 String sign1 = WxMD5Util.getSign(data);------------------------------------------------------------------------在該處生成簽名 data.put("sign", sign1); //簽名
第二次是在返回給移動端以前,參加生成簽名字段有且只能是6個,分別爲appid、partnerid、prepayid、package、noncestr和timestamp,並且都必須是小寫,可能移動端app須要的帶駝峯,可是參加支付的簽名一不是駝峯的那些,以下代碼異步
map = new HashMap<>(); //返回APP端的數據 //參加調起支付的簽名字段有且只能是6個,分別爲 appid、partnerid、prepayid、package、noncestr 和 timestamp,並且都必須是小寫---------start--------------------- map.put("appid", result.get("appid")); map.put("partnerid", result.get("mch_id")); map.put("prepayid", result.get("prepay_id")); map.put("package", "Sign=WXPay"); map.put("noncestr", result.get("nonce_str")); String signTimstamp = String.valueOf(System.currentTimeMillis() / 1000); map.put("timestamp", signTimstamp);//單位爲秒