国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java實(shí)現(xiàn)微信支付(服務(wù)端)

2019-11-26 14:44:43
字體:
供稿:網(wǎng)友

廢話不多說,直接看代碼。

RequestHandler requestHandler = new RequestHandler(super.getRequest(),super.getResponse()); //獲取token //兩小時(shí)內(nèi)有效,兩小時(shí)后重新獲取 Token = requestHandler.GetToken(); //更新token 到應(yīng)用中 requestHandler.getTokenReal(); System.out.println("微信支付獲取token=======================:" +Token); //requestHandler 初始化 requestHandler.init(); requestHandler.init(appid,appsecret, appkey,partnerkey, key);

代碼:本地系統(tǒng)生成訂單 

// 設(shè)置package訂單參數(shù)    SortedMap<String, String> packageParams = new TreeMap<String, String>();    packageParams.put("bank_type", "WX"); // 支付類型    packageParams.put("body", "xxxx"); // 商品描述    packageParams.put("fee_type", "1"); // 銀行幣種    packageParams.put("input_charset", "UTF-8"); // 字符集    packageParams.put("notify_url", "http://xxxx.com/xxxx/wxcallback"); // 通知地址 這里的通知地址使用外網(wǎng)地址測(cè)試,注意80端口是否打開。   packageParams.put("out_trade_no", no); // 商戶訂單號(hào)    packageParams.put("partner", partenerid); // 設(shè)置商戶號(hào)    packageParams.put("spbill_create_ip", super.getRequest().getRemoteHost()); // 訂單生成的機(jī)器IP,指用戶瀏覽器端IP    packageParams.put("total_fee", String.valueOf(rstotal)); // 商品總金額,以分為單位    // 設(shè)置支付參數(shù)    SortedMap<String, String> signParams = new TreeMap<String, String>();    signParams.put("appid", appid);    signParams.put("noncestr", noncestr);    signParams.put("traceid", PropertiesUtils.getOrderNO());    signParams.put("timestamp", timestamp);    signParams.put("package", packageValue);    signParams.put("appkey", this.appkey);     // 生成支付簽名,要采用URLENCODER的原始值進(jìn)行SHA1算法!    String sign ="";     try {     sign = Sha1Util.createSHA1Sign(signParams);     } catch (Exception e) {     e.printStackTrace();     }      // 增加非參與簽名的額外參數(shù)    signParams.put("sign_method", "sha1");    signParams.put("app_signature", sign);      // api支付拼包結(jié)束------------------------------------    //獲取prepayid   String prepayid = requestHandler.sendPrepay(signParams);   System.out.println("prepayid :" + prepayid);

代碼:生成預(yù)付快訂單完成 

 //生成預(yù)付快訂單完成,返回給android,ios 掉起微信所需要的參數(shù)。   SortedMap<String, String> payParams = new TreeMap<String, String>();    payParams.put("appid", appid);   payParams.put("noncestr", noncestr);   payParams.put("package", "Sign=WXPay");   payParams.put("partnerid", partenerid);   payParams.put("prepayid", prepayid);   payParams.put("appkey", this.appkey);   //這里除1000 是因?yàn)閰?shù)長(zhǎng)度限制。   int time = (int) (System.currentTimeMillis() / 1000);   payParams.put("timestamp",String.valueOf(time));      System.out.println("timestamp:" + time);      //簽名   String paysign ="";   try {         paysign = Sha1Util.createSHA1Sign(payParams);   } catch (Exception e) {     e.printStackTrace();   }   payParams.put("sign", paysign);     //拼json 數(shù)據(jù)返回給客戶端   BasicDBObject backObject = new BasicDBObject();   backObject.put("appid", appid);   backObject.put("noncestr", payParams.get("noncestr"));   backObject.put("package", "Sign=WXPay");   backObject.put("partnerid", payParams.get("partnerid"));   backObject.put("prepayid", payParams.get("prepayid"));   backObject.put("appkey", this.appkey);   backObject.put("timestamp",payParams.get("timestamp"));   backObject.put("sign",payParams.get("sign"));      String backstr = dataObject.toString();   System.out.println("backstr:" + backstr);   return backstr;

到此為止,預(yù)付款訂單已生成,并且已返回客戶端,坐等微信服務(wù)器通知,通知的地址就是生成預(yù)付款訂單的notify_url

 ResponseHandler resHandler = new ResponseHandler(request, response);   resHandler.setKey(partnerkey);   //創(chuàng)建請(qǐng)求對(duì)象   //RequestHandler queryReq = new RequestHandler(request, response);   //queryReq.init();   if (resHandler.isTenpaySign() == true) {       //商戶訂單號(hào)       String out_trade_no = resHandler.getParameter("out_trade_no");       System.out.println("out_trade_no:" + out_trade_no);       //財(cái)付通訂單號(hào)       String transaction_id = resHandler.getParameter("transaction_id");       System.out.println("transaction_id:" + transaction_id);       //金額,以分為單位       String total_fee = resHandler.getParameter("total_fee");       //如果有使用折扣券,discount有值,total_fee+discount=原請(qǐng)求的total_fee       String discount = resHandler.getParameter("discount");       //支付結(jié)果       String trade_state = resHandler.getParameter("trade_state");          //判斷簽名及結(jié)果       if ("0".equals(trade_state)) {         //------------------------------         //即時(shí)到賬處理業(yè)務(wù)開始         //------------------------------                 System.out.println("----------------業(yè)務(wù)邏輯執(zhí)行-----------------");                //――請(qǐng)根據(jù)您的業(yè)務(wù)邏輯來編寫程序(以上代碼僅作參考)――         System.out.println("----------------業(yè)務(wù)邏輯執(zhí)行完畢-----------------");         System.out.println("success"); // 請(qǐng)不要修改或刪除                 System.out.println("即時(shí)到賬支付成功");         //給財(cái)付通系統(tǒng)發(fā)送成功信息,財(cái)付通系統(tǒng)收到此結(jié)果后不再進(jìn)行后續(xù)通知         resHandler.sendToCFT("success");            //給微信服務(wù)器返回success 否則30分鐘通知8次        return "success";      }else{             System.out.println("通知簽名驗(yàn)證失敗");       resHandler.sendToCFT("fail");       response.setCharacterEncoding("utf-8");     }    }else {       System.out.println("fail -Md5 failed");    }

以上就是java實(shí)現(xiàn)微信支付服務(wù)端所要提供的代碼,希望大家仔細(xì)研究,實(shí)現(xiàn)微信支付。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 河西区| 绍兴县| 梅州市| 临邑县| 秦安县| 普兰店市| 彭山县| 铁力市| 买车| 靖江市| 古交市| 江津市| 巧家县| 屏东县| 延长县| 资兴市| 平果县| 微山县| 合水县| 廊坊市| 常宁市| 莒南县| 调兵山市| 四会市| 九台市| 四川省| 安新县| 苍溪县| 尚志市| 灵台县| 堆龙德庆县| 舞阳县| 嘉禾县| 大渡口区| 崇仁县| 北海市| 察雅县| 衡南县| 固镇县| 蕲春县| 敦化市|