国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
java微信公共賬號支付(JS支付)

最近公司需要開發(fā)微信商城,然后各種作微信的東西啊,各種看API,頭大,這里先記錄下來以免后面忘記了~

首先是微信提供的api地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

效果圖:




還是那句話,第三方的東西做一遍跟做一百遍效果是一樣的,直接上代碼咯~

=================================老司機(jī)開車咯==============================

order.jsp頁面的關(guān)鍵代碼:

[javascript] view plain copy
print?
  1. var appId = "";  
  2. var timeStamp = "";    
  3. var nonceStr = "";  
  4. var pg = "";  
  5. var signType = "";   
  6. var paySign = "";  
  7.   
  8. //開始支付  
  9. function paymentOrder(){  
  10.     var sta = $("#sta").val();  
  11.       
  12.     if(sta==0){  
  13.         var addressId = $("#addressId").val();  
  14.           
  15.         if(addressId==''||addressId==null){  
  16.             alert("請先選擇收貨地址");  
  17.             return;  
  18.         }  
  19.           
  20.         var pm = $("#selPayWays").val();  
  21.           
  22.         if(pm==0){  
  23.             //賬戶余額  
  24.             var userAccount = $("#userAccount").val();  
  25.             var main_price = $(".main-price").html();  
  26.               
  27.             if(parseInt(userAccount)<parseInt(main_price)){  
  28.                 alert("賬戶余額不足,請選擇其它的支付方式!");  
  29.                 return false;  
  30.             }  
  31.             $("#form1").submit();  
  32.         }else if(pm==2){  
  33.             //微信支付  
  34.             var oids = '${oids}';  
  35.             //ajax獲取到相關(guān)參數(shù)  
  36.             $.ajax({  
  37.                 url: '/***/***/wxpayOrder?addressId='+addressId+"&oids="+oids,  
  38.                 type: 'GET',  
  39.                 cache:false,   
  40.                 async:false,   
  41.                 dataType: 'JSON',  
  42.                 timeout: 5000,  
  43.                 error: function(textStatus){alert('系統(tǒng)錯誤~');},  
  44.                 success: function(msg){  
  45.                       
  46.                     if(msg!=null){  
  47.                         appId = msg.appId;  
  48.                         timeStamp = msg.timeStamp;    
  49.                         nonceStr = msg.nonceStr;  
  50.                         pg = msg.prepay_id;  
  51.                         signType = msg.signType;   
  52.                         paySign = msg.sign;  
  53.                     }  
  54.                 }  
  55.             });  
  56.             //喚起微信支付  
  57.             if(appId!=''){  
  58.                 pay();  
  59.             }  
  60.               
  61.         }  
  62.               
  63.     }else{  
  64.         alert("訂單已關(guān)閉");  
  65.     }  
  66.       
  67.       
  68. }  
  69.   
  70. //喚起微信支付  
  71. function pay(){    
  72.     if (typeof WeixinJSBridge == "undefined"){    
  73.        if( document.addEventListener ){    
  74.            document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);    
  75.        }else if (document.attachEvent){    
  76.            document.attachEvent('WeixinJSBridgeReady', onBridgeReady);     
  77.            document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);    
  78.        }    
  79.     }else{    
  80.        onBridgeReady();    
  81.     }     
  82.         
  83. }    
  84.   
  85. //開始支付  
  86. function onBridgeReady(){    
  87.     WeixinJSBridge.invoke(    
  88.         'getBrandWCPayRequest', {    
  89.             "appId" : appId,     //公眾號名稱,由商戶傳入         
  90.             "timeStamp": timeStamp+"",         //時(shí)間戳,自1970年以來的秒數(shù)         
  91.             "nonceStr" : nonceStr, //隨機(jī)串         
  92.             "package" : "prepay_id=" + pg,         
  93.             "signType" : signType,         //微信簽名方式:         
  94.             "paySign" : paySign    //微信簽名     
  95.         },    
  96.             
  97.         function(res){         
  98.             if(res.err_msg == "get_brand_wcpay_request:ok" ) {    
  99.                 alert("支付成功");  // 使用以上方式判斷前端返回,微信團(tuán)隊(duì)鄭重提示:res.err_msg將在用戶支付成功后返回    ok,但并不保證它絕對可靠。     
  100.                 //回到用戶訂單列表  
  101.                 window.location.);  
  102.             }else{  
  103.                //支付失敗  
  104.                alert(res.err_msg)  
  105.             }       
  106.         }    
  107.     );     
  108.  }   
后臺生成預(yù)支付id的關(guān)鍵代碼:

[java] view plain copy
print?
  1. UnifiedorderResult unifiedorderResult = null;  
  2.             //getSumTotal 微信的價(jià)格單位是分(x100),所以intValue 不存在精度丟失的問題  
  3.             int total_fee = (trans.getTotal().intValue() - userBonus - userYqh)*100;  
  4.             total_fee = 1;//一分錢測試  
  5.             unifiedorderResult = WxPay.getWxPayUnifiedResult(body, detail, attach,trans.getId()+CommonUtils.getRandByNum(6), total_fee, spbill_create_ip,loginUser.getThirdLoginWXId());  
  6.             String timestamp = String.valueOf(new Date().getTime()/1000);  
  7.             String nonceStr = unifiedorderResult.getNonce_str();  
  8.             String prepay_id = unifiedorderResult.getPrepay_id();  
  9.   
  10.             jsonObject.put("appId", WxConfig.appid);  
  11.             jsonObject.put("timeStamp", timestamp);  
  12.             jsonObject.put("signType", "MD5");  
  13.             jsonObject.put("nonceStr", nonceStr);  
  14.             jsonObject.put("package", "prepay_id="+prepay_id);  
  15.   
  16.             //參數(shù):開始生成簽名  
  17.             SortedMap<Object,Object> parameters = new TreeMap<Object,Object>();  
  18.             parameters.put("appId", WxConfig.appid);  
  19.             parameters.put("timeStamp", timestamp);  
  20.             parameters.put("signType", "MD5");  
  21.             parameters.put("nonceStr", nonceStr);  
  22.             parameters.put("package", "prepay_id="+prepay_id);  
  23.   
  24.             String sign = WXSignUtils.createSign("UTF-8", parameters);  
  25.             jsonObject.put("sign", sign);  
  26.             jsonObject.put("prepay_id", prepay_id);  
  27.   
  28.             writer.write(jsonObject.toString());  
  29.             System.out.println("預(yù)支付id相關(guān)參數(shù)是:"+jsonObject.toString());  
  30.             if(writer!=null){  
  31.                 writer.close();  
  32.             }  
total=1;//1分錢測試,這里設(shè)置了后所有的商品都是1分錢的東西了,切記上線之前要注釋掉!!否則你老板就要叫你去他辦公室聊人生,談理想了~
生成簽名的關(guān)鍵代碼:之前做app支付的時(shí)候貼過源代碼的,現(xiàn)在再貼一次,唯一不同的是,這里簽名一定需要傳openid

[java] view plain copy
print?
  1. /** 
  2.      * 統(tǒng)一下單得到prepay_id(預(yù)支付id) 
  3.      * @param body 
  4.      * @param detail 
  5.      * @param attach 
  6.      * @param out_trade_no 
  7.      * @param total_fee 
  8.      * @param spbill_create_ip 
  9.      * @return 
  10.      */  
  11.     public static UnifiedorderResult getWxPayUnifiedResult(String body,String detail,String attach,String out_trade_no,int total_fee,String spbill_create_ip,String openid){  
  12.         try{  
  13.             //應(yīng)用APPID【appid】  
  14.             String appid = WxConfig.appid;  
  15.             //System.out.println("appid是:"+appid);  
  16.             //微信支付商戶號【mch_id】  
  17.             String mch_id = WxConfig.mch_id;  
  18.             //System.out.println("mch_id是:"+mch_id);  
  19.             //回調(diào)地址  
  20.             String notify_url = WxConfig.notify_url;  
  21.             //隨機(jī)字符串  
  22.             String nonce_str = RandCharsUtils.getRandomString(16);  
  23.             //System.out.println("隨機(jī)字符串是:"+nonce_str);  
  24.             //交易起始時(shí)間  
  25.             String time_start = RandCharsUtils.timeStart();  
  26.             //System.out.println(time_start);  
  27.             //交易結(jié)束時(shí)間  
  28.             String time_expire = RandCharsUtils.timeExpire();  
  29.             //System.out.println(time_expire);  
  30.             //交易類型  
  31.             String trade_type = "JSAPI";//JSAPI--公眾號支付、NATIVE--原生掃碼支付、APP--app支付,統(tǒng)一下單接口trade_type的傳參可參考這里  
  32.               
  33.             //body = "黑色手拿包";  
  34.               
  35.             //參數(shù):開始生成簽名  
  36.             SortedMap<Object,Object> parameters = new TreeMap<Object,Object>();  
  37.             parameters.put("appid", appid);  
  38.             parameters.put("mch_id", mch_id);  
  39.             parameters.put("nonce_str", nonce_str);  
  40.             //body = Utf8EncodeUtils.getUTF8XMLString(body);  
  41.             //System.out.println("body是:"+body);  
  42.             parameters.put("body", body.toString());  
  43.             //detail = Utf8EncodeUtils.getUTF8XMLString(detail);  
  44.             //System.out.println("detail是:"+detail);  
  45.             parameters.put("detail", detail.toString());  
  46.             parameters.put("attach", attach);  
  47.             parameters.put("out_trade_no", out_trade_no);  
  48.             parameters.put("total_fee", total_fee);  
  49.             parameters.put("time_start", time_start);  
  50.             parameters.put("time_expire", time_expire);  
  51.             parameters.put("notify_url", notify_url);  
  52.             parameters.put("trade_type", trade_type);  
  53.             parameters.put("spbill_create_ip", spbill_create_ip);  
  54.             parameters.put("openid", openid);  
  55.               
  56.             //開始簽名  
  57.             String sign = WXSignUtils.createSign("UTF-8", parameters);  
  58.             System.out.println("簽名是:"+sign);  
  59.             log.debug("微信支付簽名:"+sign);  
  60.               
  61.             Unifiedorder unifiedorder = new Unifiedorder();  
  62.             unifiedorder.setAppid(appid);  
  63.             unifiedorder.setMch_id(mch_id);  
  64.             unifiedorder.setNonce_str(nonce_str);  
  65.             unifiedorder.setSign(sign);  
  66.             unifiedorder.setBody(body);  
  67.             unifiedorder.setDetail(detail);  
  68.             unifiedorder.setAttach(attach);  
  69.             unifiedorder.setOut_trade_no(out_trade_no);  
  70.             unifiedorder.setTotal_fee(total_fee);  
  71.             unifiedorder.setSpbill_create_ip(spbill_create_ip);  
  72.             unifiedorder.setTime_start(time_start);  
  73.             unifiedorder.setTime_expire(time_expire);  
  74.             unifiedorder.setNotify_url(notify_url);  
  75.             unifiedorder.setTrade_type(trade_type);  
  76.             unifiedorder.setOpenid(openid);  
  77.               
  78.             //構(gòu)造xml參數(shù)  
  79.             String xmlInfo = HttpXmlUtils.xmlInfo(unifiedorder);  
  80.               
  81.             System.out.println(xmlInfo);  
  82.               
  83.             String wxUrl = UnifiedorderUrl;  
  84.               
  85.             String method = "POST";  
  86.               
  87.             String weixinPost = HttpXmlUtils.httpsRequest(wxUrl, method, xmlInfo).toString();  
  88.               
  89.             System.out.println(weixinPost);  
  90.             log.debug("微信支付返回:"+weixinPost);  
  91.               
  92.             return JdomParseXmlUtils.getUnifiedorderResult(weixinPost);  
  93.         }catch(Exception ex){  
  94.             ex.printStackTrace();  
  95.               
  96.             log.debug("微信支付:"+ex.getMessage());  
  97.         }  
  98.           
  99.         return null;  
  100.     }  


這里會出現(xiàn)的問題也是一直提醒簽名失敗,我擦,為毛每次都是簽名的問題,煩不煩~~~~

拿到與支付id后再次簽名的時(shí)候由于沒有標(biāo)準(zhǔn)的文檔格式,只能靠自己仔細(xì)讀那陀代碼了


額,到此為止,js支付應(yīng)該沒什么問題了,good luck~


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
我的微信開發(fā)代碼集:公眾號管理與微信支付
微信分享轉(zhuǎn)發(fā)實(shí)現(xiàn)
JAVA版微信支付V3-完全版
微信小程序接入微信支付,只需3步
微信支付開發(fā)
微信小程序支付簡單小結(jié)與梳理
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服