當前位置:編程學習大全網 - 源碼下載 - 怎麽用java調用微信支付接口

怎麽用java調用微信支付接口

java調用微信支付接口方法:\x0d\RequestHandlerrequestHandler=newRequestHandler(super.getRequest(),super.getResponse());\x0d\\x0d\//獲取token//兩小時內有效,兩小時後重新獲取\x0d\\x0d\Token=requestHandler.GetToken();\x0d\\x0d\//更新token到應用中\x0d\\x0d\requestHandler.getTokenReal();\x0d\\x0d\System.out.println("微信支付獲取token=======================:"+Token);\x0d\\x0d\\x0d\\x0d\//requestHandler初始化\x0d\\x0d\requestHandler.init();\x0d\\x0d\requestHandler.init(appid,appsecret,appkey,partnerkey,key);\x0d\\x0d\\x0d\\x0d\//--------------------------------本地系統生成訂單-------------------------------------\x0d\\x0d\//設置package訂單參數\x0d\\x0d\SortedMappackageParams=newTreeMap();\x0d\\x0d\packageParams.put("bank_type","WX");//支付類型\x0d\\x0d\packageParams.put("body","xxxx");//商品描述\x0d\\x0d\packageParams.put("fee_type","1");//銀行幣種\x0d\\x0d\packageParams.put("input_charset","UTF-8");//字符集\x0d\\x0d\packageParams.put("notify_url","/xxxx/wxcallback");//通知地址這裏的通知地址使用外網地址測試,註意80端口是否打開。\x0d\\x0d\packageParams.put("out_trade_no",no);//商戶訂單號\x0d\\x0d\packageParams.put("partner",partenerid);//設置商戶號\x0d\\x0d\packageParams.put("spbill_create_ip",super.getRequest().getRemoteHost());//訂單生成的機器IP,指用戶瀏覽器端IP\x0d\\x0d\packageParams.put("total_fee",String.valueOf(rstotal));//商品總金額,以分為單位\x0d\\x0d\\x0d\\x0d\//設置支付參數\x0d\\x0d\SortedMapsignParams=newTreeMap();\x0d\\x0d\signParams.put("appid",appid);\x0d\\x0d\signParams.put("noncestr",noncestr);\x0d\\x0d\signParams.put("traceid",PropertiesUtils.getOrderNO());\x0d\\x0d\signParams.put("timestamp",timestamp);\x0d\\x0d\signParams.put("package",packageValue);\x0d\\x0d\signParams.put("appkey",this.appkey);\x0d\\x0d\\x0d\\x0d\//生成支付簽名,要采用URLENCODER的原始值進行SHA1算法!\x0d\\x0d\Stringsign="";\x0d\\x0d\try{\x0d\\x0d\sign=Sha1Util.createSHA1Sign(signParams);\x0d\\x0d\}catch(Exceptione){\x0d\\x0d\e.printStackTrace();\x0d\\x0d\}\x0d\\x0d\\x0d\\x0d\//增加非參與簽名的額外參數\x0d\\x0d\signParams.put("sign_method","sha1");\x0d\\x0d\signParams.put("app_signature",sign);\x0d\\x0d\\x0d\\x0d\\x0d\\x0d\//api支付拼包結束------------------------------------\x0d\\x0d\\x0d\\x0d\//獲取prepayid\x0d\\x0d\Stringprepayid=requestHandler.sendPrepay(signParams);\x0d\\x0d\System.out.println("prepayid:"+prepayid);\x0d\\x0d\\x0d\\x0d\\x0d\\x0d\\x0d\\x0d\//--------------------------------生成完成---------------------------------------------\x0d\\x0d\\x0d\\x0d\//生成預付快訂單完成,返回給android,ios掉起微信所需要的參數。\x0d\\x0d\SortedMappayParams=newTreeMap();\x0d\\x0d\payParams.put("appid",appid);\x0d\\x0d\payParams.put("noncestr",noncestr);\x0d\\x0d\payParams.put("package","Sign=WXPay");\x0d\\x0d\payParams.put("partnerid",partenerid);\x0d\\x0d\payParams.put("prepayid",prepayid);\x0d\\x0d\payParams.put("appkey",this.appkey);\x0d\\x0d\//這裏除1000是因為參數長度限制。\x0d\\x0d\inttime=(int)(System.currentTimeMillis()/1000);\x0d\\x0d\payParams.put("timestamp",String.valueOf(time));\x0d\\x0d\\x0d\\x0d\System.out.println("timestamp:"+time);\x0d\\x0d\\x0d\\x0d\//簽名\x0d\\x0d\Stringpaysign="";\x0d\\x0d\try{\x0d\\x0d\paysign=Sha1Util.createSHA1Sign(payParams);\x0d\\x0d\}catch(Exceptione){\x0d\\x0d\e.printStackTrace();\x0d\\x0d\}\x0d\\x0d\payParams.put("sign",paysign);\x0d\\x0d\\x0d\\x0d\//拼json數據返回給客戶端\x0d\\x0d\BasicDBObjectbackObject=newBasicDBObject();\x0d\\x0d\backObject.put("appid",appid);\x0d\\x0d\backObject.put("noncestr",payParams.get("noncestr"));\x0d\\x0d\backObject.put("package","Sign=WXPay");\x0d\\x0d\backObject.put("partnerid",payParams.get("partnerid"));\x0d\\x0d\backObject.put("prepayid",payParams.get("prepayid"));\x0d\\x0d\backObject.put("appkey",this.appkey);\x0d\\x0d\backObject.put("timestamp",payParams.get("timestamp"));\x0d\\x0d\backObject.put("sign",payParams.get("sign"));\x0d\\x0d\\x0d\\x0d\Stringbackstr=dataObject.toString();\x0d\\x0d\System.out.println("backstr:"+backstr);\x0d\\x0d\\x0d\\x0d\returnbackstr;\x0d\\x0d\\x0d\\x0d\====================到此為止,預付款訂單已生成,並且已返回客戶端====================\x0d\\x0d\\x0d\\x0d\//坐等微信服務器通知,通知的地址就是生成預付款訂單的notify_url\x0d\\x0d\\x0d\\x0d\ResponseHandlerresHandler=newResponseHandler(request,response);\x0d\\x0d\resHandler.setKey(partnerkey);\x0d\\x0d\//創建請求對象\x0d\\x0d\//RequestHandlerqueryReq=newRequestHandler(request,response);\x0d\\x0d\//queryReq.init();\x0d\\x0d\if(resHandler.isTenpaySign()==true){\x0d\\x0d\//商戶訂單號\x0d\\x0d\Stringout_trade_no=resHandler.getParameter("out_trade_no");\x0d\\x0d\System.out.println("out_trade_no:"+out_trade_no);\x0d\\x0d\//財付通訂單號\x0d\\x0d\Stringtransaction_id=resHandler.getParameter("transaction_id");\x0d\\x0d\System.out.println("transaction_id:"+transaction_id);\x0d\\x0d\//金額,以分為單位\x0d\\x0d\Stringtotal_fee=resHandler.getParameter("total_fee");\x0d\\x0d\//如果有使用折扣券,discount有值,total_fee+discount=原請求的total_fee\x0d\\x0d\Stringdiscount=resHandler.getParameter("discount");\x0d\\x0d\//支付結果\x0d\\x0d\Stringtrade_state=resHandler.getParameter("trade_state");\x0d\\x0d\\x0d\\x0d\//判斷簽名及結果\x0d\\x0d\if("0".equals(trade_state)){\x0d\\x0d\//------------------------------\x0d\\x0d\//即時到賬處理業務開始\x0d\\x0d\//------------------------------\x0d\\x0d\\x0d\\x0d\System.out.println("----------------業務邏輯執行-----------------");\x0d\\x0d\\x0d\\x0d\//——請根據您的業務邏輯來編寫程序(以上代碼僅作參考)——\x0d\\x0d\System.out.println("----------------業務邏輯執行完畢-----------------");\x0d\\x0d\System.out.println("success");//請不要修改或刪除\x0d\\x0d\\x0d\\x0d\System.out.println("即時到賬支付成功");\x0d\\x0d\//給財付通系統發送成功信息,財付通系統收到此結果後不再進行後續通知\x0d\\x0d\resHandler.sendToCFT("success");\x0d\\x0d\\x0d\\x0d\//給微信服務器返回success否則30分鐘通知8次\x0d\\x0d\return"success";\x0d\\x0d\}else{\x0d\\x0d\System.out.println("通知簽名驗證失敗");\x0d\\x0d\resHandler.sendToCFT("fail");\x0d\\x0d\response.setCharacterEncoding("utf-8");\x0d\\x0d\}\x0d\\x0d\}else{\x0d\\x0d\System.out.println("fail-Md5failed");

  • 上一篇:dynamo core1.2.2是什麽軟件
  • 下一篇:後三金叉是什麽意思?
  • copyright 2024編程學習大全網