微信掃碼支付遇到的問題
商家後台傳回的資料欄位結構不合法
取得商家訂單資訊逾時或商家傳回的httpcode非200
原生支付URL參數錯誤這個錯誤一般會出現在取得到二維碼URL之後產生二維碼微信掃碼的時候。如果你出現此類型的問題請檢查
2、參數中簽章sign時候正確簽章演算法 簽章校驗工具
/** * * @author Javen * 2016年5月14日 * 扫码支付获取二维码URL(模式一) */ public String getCodeUrl(){ String url="weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXX&time_stamp=XXXXX&nonce_str=XXXXX"; String product_id="001"; String timeStamp=Long.toString(System.currentTimeMillis() / 1000); String nonceStr=Long.toString(System.currentTimeMillis()); Map<String, String> packageParams = new HashMap<String, String>(); packageParams.put("appid", appid); packageParams.put("mch_id", partner); packageParams.put("product_id",product_id); packageParams.put("time_stamp", timeStamp); packageParams.put("nonce_str", nonceStr); String packageSign = PaymentKit.createSign(packageParams, paternerKey); return StringUtils.replace(url, "XXXXX", packageSign,appid,partner,product_id,timeStamp,nonceStr); }
Enumeration
while (en.hasMoreElements()) { Object o= en.nextElement(); System.out.println(o.toString()+"="+getPara(o.toString())); }
NULL
由於官方的文檔描述不是很清楚,大家都以為回呼請求將帶productid和用戶的openid等參數是以普通的參數一樣,其實這個回調返回的參數是一個
XML
輸入流
HttpServletRequest request = getRequest(); /** * 获取用户扫描二维码后,微信返回的信息 */ InputStream inStream = request.getInputStream(); ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outSteam.write(buffer, 0, len); } outSteam.close(); inStream.close(); String result = new String(outSteam.toByteArray(),"utf-8");
取得商家訂單資訊逾時或商家傳回的httpcode非200(沒有回傳的資料包)
如果以上都沒有問題,就剩下最後一個步驟了 商戶後台系統將prepay_id回傳給微信支付系統 以下是詳細的程式碼
/** * @author Javen * 2016年5月14日 * 扫码支付回调(模式一) */
以上是微信掃碼支付模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!