配置文件中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);//单位为秒