接口文檔:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1php
【模式二】:商戶後臺系統調用微信支付【統一下單API】生成預付交易,將接口返回的連接生成二維碼,用戶掃碼後輸入密碼完成支付交易。注意:該模式的預付單有效期爲2小時,過時後沒法支付。java
設置支付目錄api
主要填寫好支付回調URL微信
URL地址:https://api.mch.weixin.qq.com/pay/unifiedorderapp
/** * 掃碼支付 統一下單 模式二 * @param body 商品簡單描述 * @param outTradeNo 訂單號 * @param totalFee 總金額 分 * @param spbillCreateIp 下單人ip * @param productId 商品 id * @return 微信返回的xml */ public static Map<String, String> unifiedorderOfScan(String body, String outTradeNo, Integer totalFee, String spbillCreateIp, String productId, SetBean setBean){ Map<String, String> params = new HashMap<String, String>(); params.put("appid", setBean.getAppId()); params.put("mch_id", setBean.getMchId()); params.put("body", body); // 商品ID trade_type=NATIVE,此參數必傳。此id爲二維碼中包含的商品ID,商戶自行定義。 params.put("product_id", productId); // 商戶訂單號 商戶系統內部的訂單號,32個字符內、可包含字母, 其餘說明見商戶訂單號 params.put("out_trade_no",outTradeNo); params.put("total_fee", String.valueOf(totalFee));//支付總金額 單位 分 params.put("spbill_create_ip", spbillCreateIp);//下單用戶的客戶端ip params.put("trade_type","NATIVE"); params.put("nonce_str", nonceStr());//隨機字符串 params.put("notify_url", setBean.getNotifyUrl());//支付成功後的通知地址 String sign=createSign(params,setBean.getPayKey());//生成請求籤名 params.put("sign",sign); String xmlResult= HttpKit.post(unifiedOrderUrl,toXml(params));//統一下單返回的結果 Map<String, String> result = xmlToMap(xmlResult); return result; //返回的map // nonce_str YhXsQPviD5PCbivy // code_url weixin://wxpay/bizpayurl?pr=Xeb9VH5 將此連接生成二維碼 用戶掃碼便可支付 // appid wxbXXXXXXXXXXXX // sign C89118E990BE0A3132670CB269E33937 // trade_type NATIVE // return_msg OK // result_code SUCCESS // mch_id 12345678914 // return_code SUCCESS // prepay_id wx201704281819305c471c92810030210111 }