1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      java中怎么實(shí)現(xiàn)微信支付功能

      這篇文章將為大家詳細(xì)講解有關(guān)java中怎么實(shí)現(xiàn)微信支付功能,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

      10年積累的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有阿巴嘎免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

      具體內(nèi)容如下

      package com.fengdi.lianmeng.zhifu.weixin;import com.fengdi.lianmeng.util.MD5;import java.lang.reflect.Field;import java.util.HashMap;import java.util.Map;/** *  * 類說明:除被掃支付場(chǎng)景以外,店鋪系統(tǒng)先調(diào)用該接口在微信支付服務(wù)后臺(tái)生成預(yù)支付交易單, * 返回正確的預(yù)支付交易回話標(biāo)識(shí)后再按掃碼、JSAPI、APP等不同場(chǎng)景生成交易串調(diào)起支付。 * @author 聶楓 * 2016年1月8日上午11:33:21 */public class UnifiedorderReq{ /** * 公眾賬號(hào)ID */ private String appid; /** * 店鋪號(hào) */ private String mch_id; /** * 設(shè)備號(hào) */ private String device_info; /** * 隨機(jī)字符串 */ private String nonce_str; /** * 簽名 */ private String sign; /** * 商品描述 */ private String body; /** * 商品詳情 */ private String detail; /** * 附加數(shù)據(jù) */ private String attach; /** * 店鋪訂單號(hào) */ private String out_trade_no; /** * 貨幣類型 */ private String fee_type; /** * 總金額 */ private Integer total_fee; /** * 終端IP */ private String spbill_create_ip; /** * 交易起始時(shí)間 */ private String time_start; /** * 交易結(jié)束時(shí)間 */ private String time_expire; /** * 商品標(biāo)記 */ private String goods_tag; /** * 通知地址 */ private String notify_url; /** * 交易類型 */ private String trade_type; /** * 商品ID */ private String product_id; /** * 指定支付方式 */ private String limit_pay; /** * 用戶標(biāo)識(shí) */ private String openid; public String getAppid() { return appid; } public void setAppid(String appid) { this.appid = appid; } public String getMch_id() { return mch_id; } public void setMch_id(String mch_id) { this.mch_id = mch_id; } public String getDevice_info() { return device_info; } public void setDevice_info(String device_info) { this.device_info = device_info; } public String getNonce_str() { return nonce_str; } public void setNonce_str(String nonce_str) { this.nonce_str = nonce_str; } public String getSign() { return sign; } public void setSign(String sign) { this.sign = sign; } public String getBody() { return body; } public void setBody(String body) { this.body = body.length()>40?body.substring(0, 40):body; } public String getDetail() { return detail; } public void setDetail(String detail) { this.detail = detail; } public String getAttach() { return attach; } public void setAttach(String attach) { this.attach = attach; } public String getOut_trade_no() { return out_trade_no; } public void setOut_trade_no(String out_trade_no) { this.out_trade_no = out_trade_no; } public String getFee_type() { return fee_type; } public void setFee_type(String fee_type) { this.fee_type = fee_type; } public Integer getTotal_fee() { return total_fee; } public void setTotal_fee(Integer total_fee) { this.total_fee = total_fee; } public String getSpbill_create_ip() { return spbill_create_ip; } public void setSpbill_create_ip(String spbill_create_ip) { this.spbill_create_ip = spbill_create_ip; } public String getTime_start() { return time_start; } public void setTime_start(String time_start) { this.time_start = time_start; } public String getTime_expire() { return time_expire; } public void setTime_expire(String time_expire) { this.time_expire = time_expire; } public String getGoods_tag() { return goods_tag; } public void setGoods_tag(String goods_tag) { this.goods_tag = goods_tag; } public String getNotify_url() { return notify_url; } public void setNotify_url(String notify_url) { this.notify_url = notify_url; } public String getTrade_type() { return trade_type; } public void setTrade_type(String trade_type) { this.trade_type = trade_type; } public String getProduct_id() { return product_id; } public void setProduct_id(String product_id) { this.product_id = product_id; } public String getLimit_pay() { return limit_pay; } public void setLimit_pay(String limit_pay) { this.limit_pay = limit_pay; } public String getOpenid() { return openid; } public void setOpenid(String openid) { this.openid = openid; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("UnifiedorderReq [appid="); builder.append(appid); builder.append(", mch_id="); builder.append(mch_id); builder.append(", device_info="); builder.append(device_info); builder.append(", nonce_str="); builder.append(nonce_str); builder.append(", sign="); builder.append(sign); builder.append(", body="); builder.append(body); builder.append(", detail="); builder.append(detail); builder.append(", attach="); builder.append(attach); builder.append(", out_trade_no="); builder.append(out_trade_no); builder.append(", fee_type="); builder.append(fee_type); builder.append(", total_fee="); builder.append(total_fee); builder.append(", spbill_create_ip="); builder.append(spbill_create_ip); builder.append(", time_start="); builder.append(time_start); builder.append(", time_expire="); builder.append(time_expire); builder.append(", goods_tag="); builder.append(goods_tag); builder.append(", notify_url="); builder.append(notify_url); builder.append(", trade_type="); builder.append(trade_type); builder.append(", product_id="); builder.append(product_id); builder.append(", limit_pay="); builder.append(limit_pay); builder.append(", openid="); builder.append(openid); builder.append("]"); return builder.toString(); }  public String toSignString(){ Class clz = this.getClass(); Field[] fields = clz.getDeclaredFields(); StringBuilder builder = new StringBuilder(); for (Field field : fields) {  builder.append(field.getName()); } return builder.toString(); }  public String signString(){ StringBuilder builder = new StringBuilder(); builder.append("appid="+appid); if(attach!=null){  builder.append("&attach="+attach); } builder.append("&body="+body); builder.append("&mch_id="+mch_id); builder.append("&nonce_str="+nonce_str); builder.append("¬ify_url="+notify_url); if(!trade_type.equals("APP")) {  builder.append("&openid="+openid); } builder.append("&out_trade_no="+out_trade_no); builder.append("&spbill_create_ip="+spbill_create_ip); builder.append("&total_fee="+total_fee); builder.append("&trade_type="+trade_type); builder.append("&key="+FgWxConfig.mobilekey); return builder.toString(); }  public String wapSignString(){ StringBuilder builder = new StringBuilder(); builder.append("appid="+appid); if(attach!=null){  builder.append("&attach="+attach); } builder.append("&body="+body); builder.append("&mch_id="+mch_id); builder.append("&nonce_str="+nonce_str); builder.append("¬ify_url="+notify_url); if(!trade_type.equals("APP")) {  builder.append("&openid="+openid); } builder.append("&out_trade_no="+out_trade_no); builder.append("&spbill_create_ip="+spbill_create_ip); builder.append("&total_fee="+total_fee); builder.append("&trade_type="+trade_type); builder.append("&key="+FgWxConfig.key); return builder.toString(); }  public String toXml(){ return "" +      ""+appid+""+      (attach != null? ""+attach+"" : "")+         ""+body+""+         ""+mch_id+""+         ""+nonce_str+""+         ""+notify_url+""+         (trade_type.equals("APP") == true?"":""+openid+"")+         ""+out_trade_no+""+         ""+spbill_create_ip+""+         ""+total_fee+""+         ""+trade_type+""+         ""+MD5.encryptByMD5(signString()).toUpperCase()+""+         ""; }  public String toWapXml(){ return "" +      ""+appid+""+      (attach != null? ""+attach+"" : "")+         ""+body+""+         ""+mch_id+""+         ""+nonce_str+""+         ""+notify_url+""+         (trade_type.equals("APP") == true?"":""+openid+"")+         ""+out_trade_no+""+         ""+spbill_create_ip+""+         ""+total_fee+""+         ""+trade_type+""+         ""+MD5.encryptByMD5(wapSignString()).toUpperCase()+""+         ""; }  /*支付查詢簽名字符串*/ public String signQueryString(String transaction_id){ StringBuilder builder = new StringBuilder(); builder.append("appid="+appid); builder.append("&body="+body); builder.append("&mch_id="+mch_id); builder.append("&nonce_str="+nonce_str); builder.append("&transaction_id="+transaction_id); builder.append("&key="+FgWxConfig.mobilekey); return builder.toString(); }  /*支付查詢*/ public String toQueryXml(String transaction_id){ StringBuilder sBuilder=new StringBuilder(); sBuilder.append(""); sBuilder.append(""+appid+""); sBuilder.append(""+body+""); sBuilder.append(""+mch_id+""); sBuilder.append(""+nonce_str+""); sBuilder.append(""+transaction_id+""); sBuilder.append(""+MD5.encryptByMD5(signQueryString(transaction_id)).toUpperCase()+""); sBuilder.append(""); return sBuilder.toString(); }  public Map toMap(){ Map params = new HashMap(); params.put("appid", appid); if(attach!=null){  params.put("attach", attach); } params.put("body", body); params.put("mch_id", mch_id); params.put("nonce_str", nonce_str); params.put("notify_url", notify_url); if(!trade_type.equals("APP")) {  params.put("openid", openid); } params.put("out_trade_no", out_trade_no); params.put("spbill_create_ip", spbill_create_ip); params.put("total_fee", total_fee); params.put("trade_type", trade_type); params.put("sign", MD5.encryptByMD5(signString()).toUpperCase()); return params; }

      組裝工具類數(shù)據(jù)

      private AppWeixinPayResponse appUnifiedorderReq(Order order, Member member, HttpServletRequest request) {    // 獲取支付參數(shù)    UnifiedorderReq unifiedorderReq = new UnifiedorderReq();    unifiedorderReq.setBody(order.getOrderName().length() > 50 ? order.getOrderName().substring(0, 50) : order.getOrderName());    log.error(unifiedorderReq.getBody().length() + "--" + unifiedorderReq.getBody());    unifiedorderReq.setAttach(order.getOrderNo());    unifiedorderReq.setTotal_fee(order.getRealAmt().intValue());    unifiedorderReq.setTrade_type("APP");//此處可修改為JSAPI    unifiedorderReq.setOut_trade_no(order.getOrderNo() + RandomUtils.nextInt(100, 1000));    unifiedorderReq.setSpbill_create_ip(getIpAddr(request));    unifiedorderReq.setOpenid(member.getOpenid());    return payService.appUnifiedorderReq(unifiedorderReq, PayCategory.order.toString());  }

      微信統(tǒng)一下單

      public AppWeixinPayResponse appUnifiedorderReq(UnifiedorderReq unifiedorderReq, String payCategory)  throws FdServiceException { unifiedorderReq.setAppid(FgWxConfig.appid_app); unifiedorderReq.setMch_id(FgWxConfig.mchId); unifiedorderReq.setNonce_str(Random2Utils.generateString(20)); if (payCategory.equals(PayCategory.order.toString())) {  unifiedorderReq.setNotify_url(fgProperties.getDomainUrl() + FgWxConfig.weixinOrderNotifyCallBack); } else if (payCategory.equals(PayCategory.recharge.toString())) {  unifiedorderReq.setNotify_url(fgProperties.getDomainUrl() + FgWxConfig.weixinRechargeNotifyCallBack); } else {  throw new FdServiceException(ErrorCode.ILLEGAL_ARGUMENT, "微信參數(shù)類型[" + payCategory + "]異常"); } unifiedorderReq.setSign(MD5.encryptByMD5(unifiedorderReq.wapSignString()).toUpperCase()); logger.info("unifiedorder返回?cái)?shù)據(jù)unifiedorderReq:" + unifiedorderReq); String unifiedorder = FgHttp.sendPost(FgWxConfig.unifiedorderUrl, unifiedorderReq.toWapXml()); logger.info("unifiedorder返回?cái)?shù)據(jù)unifiedorder:" + unifiedorder); AppWeixinPayResponse appWeixinPayResponse = new AppWeixinPayResponse(); try {  Map map = XmlHelper.parseResXML(unifiedorder);  if ("SUCCESS".equals(map.get("return_code")) && "SUCCESS".equals(map.get("result_code"))) {  logger.info("微信統(tǒng)一下單返回成功:" + map);  appWeixinPayResponse.setAppid(FgWxConfig.appid_app);  appWeixinPayResponse.setNoncestr((String) map.get("nonce_str"));  appWeixinPayResponse.setPartnerid(FgWxConfig.mchId);  appWeixinPayResponse.setPrepayid((String) map.get("prepay_id"));  appWeixinPayResponse.setTimestamp((System.currentTimeMillis() + "").substring(0, 10));  appWeixinPayResponse.setSign(MD5.encryptByMD5(appWeixinPayResponse.wapSignString()).toUpperCase());  } else {  logger.info("微信統(tǒng)一下單返回失敗:" + map);  throw new FdServiceException(ErrorCode.ILLEGAL_ARGUMENT, "微信統(tǒng)一下單返回失敗:" + map.get("return_msg"));  } } catch (IOException e) {  e.printStackTrace(); } catch (ParserConfigurationException e) {  e.printStackTrace(); } catch (SAXException e) {  e.printStackTrace(); } return appWeixinPayResponse;//直接將參數(shù)返回給前端,發(fā)起支付 }

      關(guān)于java中怎么實(shí)現(xiàn)微信支付功能就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


      分享題目:java中怎么實(shí)現(xiàn)微信支付功能
      轉(zhuǎn)載源于:http://www.ef60e0e.cn/article/gehggg.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        桃源县| 遵化市| 宁陕县| 赫章县| 封丘县| 吴江市| 白山市| 彩票| 榆中县| 海丰县| 商都县| 抚宁县| 张家川| 莱阳市| 宁蒗| 绿春县| 云和县| 永济市| 勃利县| 遂平县| 平果县| 扎赉特旗| 龙南县| 泸定县| 雷山县| 岳池县| 潜江市| 炉霍县| 濉溪县| 九龙县| 和静县| 高阳县| 会泽县| 印江| 德昌县| 松滋市| 始兴县| 萍乡市| 格尔木市| 六盘水市| 兰西县|