集成微信支付的代碼。兼容小程序,掃碼,app,公衆號。h5 支付 ,以及 服務商提現

 基於微信支付可能對於初入者來說是一個有點煩的東西  可能對於不同的場景應用有點繁瑣  下面的分享一個簡易的集成支付代碼  各位可看 勿噴

/**
 * 因爲微信總是很多個商戶號很多和appid。很多個密鑰文件,所以全部改成手動傳值的方式,就可以支持多商戶調用
 *
 * @param appId    商戶的appid
 * @param mchId    商戶的商戶號
 * @param key      商戶的支付用的密鑰
 * @param certPath 商戶的退款用的退款文件地址,非必傳,沒有就傳null,具體看開發文檔是否需退款文件
 * @throws Exception
 */
 
調用示例測試代碼。掃碼支付返回的是一個base64格式的二維碼。需要拼接前綴的(有逗號) :  data:image/jpeg;base64,
 
public static void main(String[] args) throws Exception {
        WXPayEntrance wxPayEntrance = new WXPayEntrance("wxab8acb865bb1637e", "11473623", "2ab9071b06b9f739b950ddb41db2690d", null);
        WXPayVO wxPayVO = new WXPayVO();
        wxPayVO.setBody("1231231666623");
        wxPayVO.setTotalFee("1");
        wxPayVO.setNotifyUrl("https://********/api/wxpayreturn");
        wxPayVO.setTradeType("NATIVE");
        wxPayVO.setOutTradeNo("ty190523151415047046");
        wxPayVO.setUid(123123123);
        wxPayVO.setSpbillCreateIp("192.168.17.214");
        Map<String, String> map = wxPayEntrance.doUnifiedOrder(wxPayVO);
        System.out.println(map);
 
//        PayRefundVo payRefundVo = new PayRefundVo();
//        payRefundVo.setOutRefundNo("A190523155119103");
//        payRefundVo.setOutTradeNo("ty190523155047046");
//        payRefundVo.setRefundDesc("退款");
//        payRefundVo.setRefundFee("10");
//        payRefundVo.setUid(123123123);
//        payRefundVo.setRefundFeeType("CNY");
//        payRefundVo.setTotalFee("120");
//        Map<String, String> map = wxPayEntrance.doRefund(payRefundVo);
//        System.out.println(map);
    }
異步回調代碼如下:
 
package com.huis.portal.controller;
 
import com.huis.portal.weixinpay.WXPayUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
 
@RestController
@Api(description = "支付模塊模塊")
@CrossOrigin(origins = "*", maxAge = 3600)
@Transactional(rollbackFor = Exception.class)
public class PayRestController {
 
 
   @ApiOperation(value = "微信回調接口", notes = "微信回調接口")
   @RequestMapping(value = "/api/wxpayreturn", method = RequestMethod.POST)
   public String WeixinParentNotifyPage(HttpServletRequest request, HttpServletResponse response) throws Exception {
      // 返回給微信的處理結果
      String result = null;
      String inputLine;
      String notityXml = "";
      request.setCharacterEncoding("UTF-8");
      response.setCharacterEncoding("UTF-8");
      response.setContentType("text/html;charset=UTF-8");
      response.setHeader("Access-Control-Allow-Origin", "*");
      // 微信給返回的東西
      try {
         while ((inputLine = request.getReader().readLine()) != null) {
            notityXml += inputLine;
         }
         request.getReader().close();
      } catch (Exception e) {
         e.printStackTrace();
         result = setXml("fail", "xml獲取失敗");
         return result;
      }
      if (StringUtils.isEmpty(notityXml)) {
         result = setXml("fail", "xml爲空");
         return result;
      }
      Map<String, String> map = WXPayUtil.xmlToMap(notityXml);
      String out_trade_no = (String) map.get("out_trade_no");// 獲取商戶訂單號
      String result_code = (String) map.get("result_code");// 業務結果
      String total_fee = (String) map.get("total_fee");// 獲取訂單金額
      String appid = (String) map.get("appid");// 獲取訂單金額
      if (map.get("result_code").equals("SUCCESS")) {
         //TODO
 
 
         result = setXml("SUCCESS", "OK");
         return result;
      }else {
         result = setXml("fail", "xml爲空");
         return result;
      }
 
   }
   // 通過xml 發給微信消息
   public static String setXml(String return_code, String return_msg) {
      SortedMap<String, String> parameters = new TreeMap<String, String>();
      parameters.put("return_code", return_code);
      parameters.put("return_msg", return_msg);
      return "<xml><return_code><![CDATA[" + return_code + "]]>" + "</return_code><return_msg><![CDATA[" + return_msg
            + "]]></return_msg></xml>";
   }
 
}

微信支付代碼下載地址:鏈接:https://pan.baidu.com/s/1kZs5hxQuzxmRR50N-DOKSg  密碼:u4rj

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章