真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java微信支付接入流程詳解

背景

彰武ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

由于項目是采用java編寫的,微信包括微信支付大都是php相關,于是微信支付官方文檔對java的支持就不是很友好,在網(wǎng)上找了很多文章,基本上沒有一篇是真正跑的通的,經(jīng)過一番整理,先將java接入微信支付詳細流程總結出來以便后續(xù)使用。

步驟一

準備階段:已認證微信號,且通過微信支付認證,這個可以看微信文檔,很詳細,這里就不再重復。

java微信支付接入流程詳解

步驟二

配置授權目錄,官方推薦使用https類型的url,不知道http能不能行,個人也推薦使用https的保證不會錯。

java微信支付接入流程詳解

配置授權域名

 java微信支付接入流程詳解java微信支付接入流程詳解

java微信支付接入流程詳解

步驟三

微信支付二次開發(fā)所需要的參數(shù):

APP_ID,APP_KEY,PARTNER,PARTNER_KEY(AppSecret)

java微信支付接入流程詳解java微信支付接入流程詳解

APP_ID和PARTNER_KEY(AppSecret)

java微信支付接入流程詳解

PARTNER

 java微信支付接入流程詳解java微信支付接入流程詳解

APP_KEY(自行設置32位字符)

步驟四

4.1通過頁面跳轉到確認支付頁面,其中的redirect_uri必須是配置授權目錄下的


 
 支付測試
 
 
 支付測試
 

4.2 獲取到openid,再經(jīng)服務器向微信請求獲取prepay_id,封裝字段并進行簽名后通過jsapi調起微信支付

網(wǎng)頁端

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>








測試支付



 
微信js支付測試
  • 測試支付信息[]

立即支付

<% String code = request.getParameter("code"); %>

code:<%out.print(code); %>

服務器端

@RequestMapping("/pay/payparm")
 public void payparm(HttpServletRequest request, HttpServletResponse response){
 try {
 // 獲取openid
 String openId = (String) request.getSession().getAttribute("openId");
 if (openId == null) {
 openId = getUserOpenId(request);
 }
 
 String appid = WXConfig.APP_ID;
 String paternerKey = WXConfig.PERTNER_KEY;
 
 String out_trade_no = getTradeNo();
 Map paraMap = new HashMap();
 paraMap.put("appid", appid);
 paraMap.put("attach", "測試");
 paraMap.put("body", "測試購買支付");
 paraMap.put("mch_id", WXConfig.PARTNER);
 paraMap.put("nonce_str", create_nonce_str());
 paraMap.put("openid", openId);
 paraMap.put("out_trade_no", out_trade_no);
 paraMap.put("spbill_create_ip", getAddrIp(request));
 paraMap.put("total_fee", "1");
 paraMap.put("trade_type", "JSAPI");
 paraMap.put("notify_url", "http://m.ebiaotong.com/WXPay/notify");// 此路徑是微信服務器調用支付結果通知路徑
 String sign = getSign(paraMap, paternerKey);
 paraMap.put("sign", sign);
 // 統(tǒng)一下單 https://api.mch.weixin.qq.com/pay/unifiedorder
 String url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
 
 String xml = ArrayToXml(paraMap);
 
 String xmlStr = HttpKit.post(url, xml);
 
 // 預付商品id
 String prepay_id = "";
 
 if (xmlStr.indexOf("SUCCESS") != -1) {
 Map map = doXMLParse(xmlStr);
 prepay_id = (String) map.get("prepay_id");
 }
 
 String timeStamp = create_timestamp();
 String nonceStr = create_nonce_str();
 Map payMap = new HashMap();
 payMap.put("appId", appid);
 payMap.put("timeStamp", timeStamp);
 payMap.put("nonceStr", nonceStr);
 payMap.put("signType", "MD5");
 payMap.put("package", "prepay_id=" + prepay_id);
 String paySign = getSign(payMap, paternerKey);
 
 payMap.put("pg", prepay_id);
 payMap.put("paySign", paySign);
 
 // 拼接并返回json
 StringBuilder sBuilder = new StringBuilder("[{");
 sBuilder.append("appId:'").append(appid).append("',")
  .append("timeStamp:'").append(timeStamp).append("',")
  .append("nonceStr:'").append(nonceStr).append("',")
  .append("pg:'").append(prepay_id).append("',")
  .append("signType:'MD5',")
  .append("paySign:'").append(paySign).append("'");
 sBuilder.append("}]");
 response.getWriter().print(sBuilder.toString());
 response.getWriter().close();
 } catch (Exception e) {
 e.printStackTrace();
 }
 }

測試結果

java微信支付接入流程詳解java微信支付接入流程詳解

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


分享標題:java微信支付接入流程詳解
分享URL:http://weahome.cn/article/pohcoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部