WeChat-Scancode-Zahlung (Modus 1)
Probleme bei der WeChat-Scancode-Zahlung
Nativer Zahlungs-URL-Parameterfehler
RückrufSchnittstelleDie URL hat einen Rückruf, aber die Parameter k?nnen nicht empfangen werden
H?ndler-Backend Die zurückgegebene Datenfeldstruktur ist illegal
Zeitüberschreitung beim Abrufen der Bestellinformationen des H?ndlers oder der vom H?ndler zurückgegebene httpcode ist nicht 200
Problem l?sen
Nativer Zahlungs-URL-Parameterfehler
Dieser Fehler tritt im Allgemeinen auf, wenn der QR-Code nach Erhalt der QR-Code-URL auf WeChat generiert und gescannt wird. Wenn Sie auf ein solches Problem sto?en, überprüfen Sie bitte
1, ob Fehler in den Parametern in der Parameterliste vorhanden sind, die zum Generieren des QR-Codes erforderlich sind (Gro?-/Kleinschreibung beachten)
2. Signieren Sie die Signatur in den Parametern. Korrigieren Sie den Signaturalgorithmus zu diesem Zeitpunkt. Tool zur Signaturüberprüfung
Das Folgende ist der Code zum Generieren der QR-Code-URL
/** ?*? ?*?@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); }
-
Callback-Schnittstellen-URL Es gibt einen Callback, aber die Parameter k?nnen nicht empfangen werden
Enumeration
??while?(en.hasMoreElements())?{ ??????Object?o=?en.nextElement(); ??????System.out.println(o.toString()+"="+getPara(o.toString())); ??}
Die im obigen Code ausgegebenen Parameter sind alle NULL
Da die offizielle Dokumentbeschreibung nicht sehr klar ist, denkt jeder, dass die Parameter wie Produkt-ID und Benutzer-OpenID in der Rückrufanforderung die sind Der von diesem Rückruf zurückgegebene Parameter ist tats?chlich ein XMLEingabestream
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");
Ergebnis ist
Versuchen Sie es mit { Das obige ist der detaillierte Inhalt vonWeChat-Scancode-Zahlungsmodus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
< ;return_code> return_code>
httpsservletRequest 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");
????????System.out.println("callback>>>>"+result);
????????/**
?????????*?獲取返回的信息內(nèi)容中各個(gè)參數(shù)的值
?????????*/
????????Map<String, String>?map?=?PaymentKit.xmlToMap(result);
????????for?(String?key?:?map.keySet())?{
???????????????System.out.println("key=?"+?key?+?"?and?value=?"?+?map.get(key));
????????}
????????String?appid=map.get("appid");
????????String?openid?=?map.get("openid");
????????String?mch_id?=?map.get("mch_id");
????????String?is_subscribe?=?map.get("is_subscribe");
????????String?nonce_str?=?map.get("nonce_str");
????????String?product_id?=?map.get("product_id");
????????String?sign?=?map.get("sign");
????????Map<String, String>?packageParams?=?new?HashMap<String, String>();
????????packageParams.put("appid",?appid);
????????packageParams.put("openid",?openid);
????????packageParams.put("mch_id",mch_id);
????????packageParams.put("is_subscribe",is_subscribe);
????????packageParams.put("nonce_str",nonce_str);
????????packageParams.put("product_id",?product_id);
????????String?packageSign?=?PaymentKit.createSign(packageParams,?paternerKey);
????????//?統(tǒng)一下單文檔地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
????????Map<String, String>?params?=?new?HashMap<String, String>();
????????params.put("appid",?appid);
????????params.put("mch_id",?mch_id);
????????params.put("body",?"測(cè)試掃碼支付");
????????String?out_trade_no=Long.toString(System.currentTimeMillis());
????????params.put("out_trade_no",?out_trade_no);
????????int?price=((int)(Float.valueOf(10)*100));
????????params.put("total_fee",?price+"");
????????params.put("attach",?out_trade_no);
????????String?ip?=?IpKit.getRealIp(getRequest());
????????if?(StrKit.isBlank(ip))?{
????????????ip?=?"127.0.0.1";
????????}
????????params.put("spbill_create_ip",?ip);
????????params.put("trade_type",?TradeType.NATIVE.name());
????????params.put("nonce_str",?System.currentTimeMillis()?/?1000?+?"");
????????params.put("notify_url",?notify_url);
????????params.put("openid",?openid);
????????String?paysign?=?PaymentKit.createSign(params,?paternerKey);
????????params.put("sign",?paysign);
????????String?xmlResult?=?PaymentApi.pushOrder(params);
????????System.out.println("prepay_xml>>>"+xmlResult);
????????/**
?????????*?發(fā)送信息給微信服務(wù)器
?????????*/
????????Map<String, String>?payResult?=?PaymentKit.xmlToMap(xmlResult);
????????String?return_code?=?payResult.get("return_code");
????????String?result_code?=?payResult.get("result_code");
????????if?(StrKit.notBlank(return_code)?&&?StrKit.notBlank(result_code)?&&?return_code.equalsIgnoreCase("SUCCESS")&&result_code.equalsIgnoreCase("SUCCESS"))?{
????????????//?以下字段在return_code?和result_code都為SUCCESS的時(shí)候有返回
????????????String?prepay_id?=?payResult.get("prepay_id");
????????????Map<String, String>?prepayParams?=?new?HashMap<String, String>();
????????????prepayParams.put("return_code",?"SUCCESS");
????????????prepayParams.put("appId",?appid);
????????????prepayParams.put("mch_id",?mch_id);
????????????prepayParams.put("nonceStr",?System.currentTimeMillis()?+?"");
????????????prepayParams.put("prepay_id",?prepay_id);
????????????String?prepaySign?=?null;
????????????if?(sign.equals(packageSign))?{
????????????????prepayParams.put("result_code",?"SUCCESS");
????????????}else?{
????????????????prepayParams.put("result_code",?"FAIL");
????????????????prepayParams.put("err_code_des",?"訂單失效");???//result_code為FAIL時(shí),添加該鍵值對(duì),value值是微信告訴客戶的信息
????????????}
????????????prepaySign?=?PaymentKit.createSign(prepayParams,?paternerKey);
????????????prepayParams.put("sign",?prepaySign);
????????????String?xml?=?PaymentKit.toXml(prepayParams);
????????????log.error(xml);
????????????renderText(xml);
????????}
????}?catch?(UnsupportedEncodingException?e)?{
????????//?TODO?Auto-generated?catch?block
????????e.printStackTrace();
????}?catch?(IOException?e)?{
????????//?TODO?Auto-generated?catch?block
????????e.printStackTrace();
????}
}

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)