微信支付宝收款码转账H5免签出码带备注可回调成功率99.9%支持重复支付多种轮询规则提高存活率
        本收款系统,可使用支付宝个人码 企业支付宝收款码 微信个人码收款,可以完成即时到账收款接口,并能实时通知到您的自定义网址。达到充值自动上分 增加金币自动发货等通知功能。免签接口高并发可以灵活配置风控规则,并支持一键升级省去后顾之忧,成功率稳定。支持支付

package com.zjy.xzlive.util;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.jdom.Element;
import org.jdom.Document;
import org.jdom.input.SAXBuilder;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.*;
import java.net.ConnectException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.util.*;
 
public class WXAllUitls {
 
    public static final String allChar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
 
    /**
     * 创建md5摘要,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。
     */
    public static String createSign(String characterEncoding, SortedMap<String, Object> parameters, String apiKey) {
        StringBuffer sb = new StringBuffer();
        Set es = parameters.entrySet();
        Iterator it = es.iterator();
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            String k = (String) entry.getKey();
            Object v = entry.getValue();
            if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
                sb.append(k + "=" + v + "&");
            }
        }
        sb.append("key=" + apiKey);
        System.out.println(sb.toString());
        String sign = MD5Encode(sb.toString(), characterEncoding).toUpperCase();
        return sign;
    }
 
    public static String getRequestXml(SortedMap<String, Object> parameters) {
        StringBuffer sb = new StringBuffer();
        sb.append("<xml>");
        Set es = parameters.entrySet();
        Iterator it = es.iterator();
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            String key = (String) entry.getKey();
            String value = (String) entry.getValue();
            if ("attach".equalsIgnoreCase(key) || "body".equalsIgnoreCase(key) || "sign".equalsIgnoreCase(key)) {
                sb.append("<" + key + ">" + "<![CDATA[" + value + "]]></" + key + ">");
            } else {
                sb.append("<" + key + ">" + value + "</" + key + ">");
            }
        }
        sb.append("</xml>");
        return sb.toString();
    }
 
    public static String MD5Encode(String origin, String charsetname) {
        String resultString = null;
        try {
            resultString = new String(origin);
            MessageDigest md = MessageDigest.getInstance("MD5");
            if (charsetname == null || "".equals(charsetname))
                resultString = byteArrayToHexString(md.digest(resultString
                        .getBytes()));
            else
                resultString = byteArrayToHexString(md.digest(resultString
                        .getBytes(charsetname)));
        } catch (Exception exception) {
        }
        return resultString;
    }
 
    private static String byteArrayToHexString(byte b[]) {
        StringBuffer resultSb = new StringBuffer();
        for (int i = 0; i < b.length; i++)
            resultSb.append(byteToHexString(b[i]));
 
        return resultSb.toString();
    }
 
    private static String byteToHexString(byte b) {
        int n = b;
        if (n < 0)
            n += 256;
        int d1 = n / 16;
        int d2 = n % 16;
        return hexDigits[d1] + hexDigits[d2];
    }
 
    private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
 
    //请求方法
    public static String httpsRequest(String requestUrl, String requestMethod, String outputStr) {
        try {
 
            URL url = new URL(requestUrl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
 
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            // 设置请求方式(GET/POST)
            conn.setRequestMethod(requestMethod);
            conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
            // 当outputStr不为null时向输出流写数据
            if (null != outputStr) {
                OutputStream outputStream = conn.getOutputStream();
                // 注意编码格式
                outputStream.write(outputStr.getBytes("UTF-8"));
                outputStream.close();
            }
            // 从输入流读取返回内容
            InputStream inputStream = conn.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String str = null;
            StringBuffer buffer = new StringBuffer();
            while ((str = bufferedReader.readLine()) != null) {
                buffer.append(str);
            }
            // 释放资源
            bufferedReader.close();
            inputStreamReader.close();
            inputStream.close();
            inputStream = null;
            conn.disconnect();
            return buffer.toString();
        } catch (ConnectException ce) {
            System.out.println("连接超时:{}" + ce);
        } catch (Exception e) {
            System.out.println("https请求异常:{}" + e);
        }
        return null;
    }
 
    //随机字符串生成
    public static String getRandomString(int length) { //length表示生成字符串的长度
        String base = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(base.length());
            sb.append(base.charAt(number));
        }
        return sb.toString();
    }
 
    public static Map doXMLParse(String strxml) throws Exception {
        strxml = strxml.replaceFirst("encoding=\".*\"", "encoding=\"UTF-8\"");
 
        if (null == strxml || "".equals(strxml)) {
            return null;
        }
 
        Map m = new HashMap();
 
        InputStream in = new ByteArrayInputStream(strxml.getBytes("UTF-8"));
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(in);
        Element root = doc.getRootElement();
        List list = root.getChildren();
        Iterator it = list.iterator();
        while (it.hasNext()) {
            Element e = (Element) it.next();
            String k = e.getName();
            String v = "";
            List children = e.getChildren();
            if (children.isEmpty()) {
                v = e.getTextNormalize();
            } else {
                v = getChildrenText(children);
            }
 
            m.put(k, v);
        }
 
        //关闭流
        in.close();
 
        return m;
    }
 
    public static String getChildrenText(List children) {
        StringBuffer sb = new StringBuffer();
        if (!children.isEmpty()) {
            Iterator it = children.iterator();
            while (it.hasNext()) {
                Element e = (Element) it.next();
                String name = e.getName();
                String value = e.getTextNormalize();
                List list = e.getChildren();
                sb.append("<" + name + ">");
                if (!list.isEmpty()) {
                    sb.append(getChildrenText(list));
                }
                sb.append(value);
                sb.append("</" + name + ">");
            }
        }
 
        return sb.toString();
    }
 
    /**
     * XML格式字符串转换为Map
     *
     * @param strXML XML字符串
     * @return XML数据转换后的Map
     * @throws Exception
     */
    public static Map<String, String> xmlToMap(String strXML) throws Exception {
        Map<String, String> data = new HashMap<String, String>();
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder= documentBuilderFactory.newDocumentBuilder();
        InputStream stream = new ByteArrayInputStream(strXML.getBytes("UTF-8"));
        org.w3c.dom.Document doc = documentBuilder.parse(stream);
        doc.getDocumentElement().normalize();
        NodeList nodeList = doc.getDocumentElement().getChildNodes();
        for (int idx=0; idx<nodeList.getLength(); ++idx) {
            Node node = nodeList.item(idx);
            if (node.getNodeType() == Node.ELEMENT_NODE) {
                org.w3c.dom.Element element = (org.w3c.dom.Element) node;
                data.put(element.getNodeName(), element.getTextContent());
            }
        }
        try {
            stream.close();
        }
        catch (Exception ex) {
 
        }
        return data;
    }
 
    public static String generateString(int length) {
        StringBuffer sb = new StringBuffer();
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            sb.append(allChar.charAt(random.nextInt(allChar.length())));
        }
        return sb.toString();
    }
 
    public static JSONObject httpsRequestALiYun(String url){
        URL uri = null;
        JSONObject result = null;
        try {
            uri = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) uri.openConnection();
            conn.connect();
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String lines = "";
            while ((lines = reader.readLine()) != null) {
                result = JSON.parseObject(lines);
            }
            reader.close();
            conn.disconnect();
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }
 
    public static String querySjNum(){
        String a = "0123456789abcdefghijklmnopqrstuvwxyz";
        String sjNumber="";
        char[] rands = new char[32];
        for (int i = 0; i < rands.length; i++)
        {
            int rand = (int) (Math.random() * a.length());
            rands[i] = a.charAt(rand);
        }
        for(int i=0;i<rands.length;i++){
            sjNumber += rands[i];
        }
        return sjNumber;
    }
 
 
}
微信扫码支付和H5的签名

//获取微信sign--H5支付
    public String querySignH5(PayWechat payWechat,String price,String ip,String WXNonceStr,String WXOutTradeNo){
        String sign = "";
        SortedMap<String, Object> mapSign = new TreeMap<>();
        mapSign.put("appid", payWechat.getAppid());
        mapSign.put("mch_id", payWechat.getMchId());
        mapSign.put("nonce_str", WXNonceStr);
        mapSign.put("body", WXBody);
        mapSign.put("out_trade_no", WXOutTradeNo);
        mapSign.put("total_fee", price);
        mapSign.put("spbill_create_ip", ip);
        mapSign.put("notify_url", WXNotifyUrl);
        mapSign.put("trade_type", trade_type_H5);
        sign = WXAllUitls.createSign("UTF-8", mapSign, payWechat.getApiKey());
        return sign;
    }
 
    //获取微信sign--扫码支付
    public String querySignSaoma(PayWechat payWechat,String price,String ip,String WXNonceStr,String WXOutTradeNo){
        String sign = "";
        SortedMap<String, Object> mapSign = new TreeMap<>();
        mapSign.put("appid", payWechat.getAppid());
        mapSign.put("mch_id", payWechat.getMchId());
        mapSign.put("nonce_str", WXNonceStr);
        mapSign.put("body", WXBody);
        mapSign.put("out_trade_no", WXOutTradeNo);
        mapSign.put("total_fee", price);
        mapSign.put("spbill_create_ip", ip);
        mapSign.put("notify_url", WXNotifyUrl);
        mapSign.put("trade_type", trade_type_SM);
        sign = WXAllUitls.createSign("UTF-8", mapSign, payWechat.getApiKey());
        return sign;
    }
 
//获取公网ip,注意格式
    public static String getPublicIp() {
        try {
            String path = "http://2018.ip138.com/ic.asp";// 要获得html页面内容的地址
            //String path = "https://www.jiatui.com/new/js/city-picker.data.js";
            URL url = new URL(path);//
            // 创建url对象
 
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 打开连接
 
            conn.setRequestProperty("contentType", "GBK"); // 设置url中文参数编码
 
            conn.setConnectTimeout(5 * 1000);// 请求的时间
 
            conn.setRequestMethod("GET");// 请求方式
 
            InputStream inStream = conn.getInputStream();
            // readLesoSysXML(inStream);
 
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    inStream, "GBK"));
            StringBuffer buffer = new StringBuffer();
            String line = "";
            // 读取获取到内容的最后一行,写入
            while ((line = in.readLine()) != null) {
                buffer.append(line);
            }
            String str = buffer.toString();
            Document doc = Jsoup.parse(str);
            Elements e = doc.select("center");
//            System.out.println("str======"+str);
//            String ipString1 = str.substring(str.indexOf("您的IP是:["));
//            // 获取你的IP是中间的[182.149.82.50]内容
//            String ipsString2 = ipString1.substring(ipString1.indexOf("[") + 1,
//                    ipString1.lastIndexOf("]"));
//            //获取当前IP地址所在地址
//            String ipsString3=ipString1.substring(ipString1.indexOf(": "),ipString1.lastIndexOf("</center>"));
//            System.err.println(ipsString3);
 
            // 返回公网IP值
            return e.text();
 
        } catch (Exception e) {
            System.out.println("获取公网IP连接超时");
            return "";
        }
    }
发起支付

@ResponseBody
    @RequestMapping("/sendWXpay")
    public WXPayDto sendWXpay(String userGid, String price, String type, String loginName){
        WXPayDto wXPayDto = new WXPayDto();
        wXPayDto.setUserGid(userGid);
        Double money = 0.0;
        String code_url = null;
        String ip = PublicInterIp.getPublicIp();
        int first = ip.lastIndexOf("[");
        int last = ip.lastIndexOf("]");
        ip = ip.substring(first+1,last);
        String WXNonceStr = WXAllUitls.getRandomString(32);
        wXPayDto.setWXNonceStr(WXNonceStr);
        String WXOutTradeNo =String.valueOf(System.currentTimeMillis());
        wXPayDto.setWXOutTradeNo(WXOutTradeNo);
        SortedMap<String, Object> mapSign = new TreeMap<String, Object>();
        PayWechat payWechat = payWechatService.selectByPrimaryKey();
        mapSign.put("appid", payWechat.getAppid());
        mapSign.put("mch_id", payWechat.getMchId());
        mapSign.put("nonce_str", WXNonceStr);
        mapSign.put("body", WXBody);
        mapSign.put("out_trade_no", WXOutTradeNo);//订单号(我方)
        mapSign.put("total_fee", price);
        mapSign.put("spbill_create_ip", ip);
        mapSign.put("notify_url", WXNotifyUrl);
        if(type.equals("1")){//扫码支付
            String sign = querySignSaoma(payWechat,price,ip,WXNonceStr,WXOutTradeNo);
            mapSign.put("trade_type", trade_type_SM);
            mapSign.put("sign",sign);
            String requestXML = WXAllUitls.getRequestXml(mapSign);
            System.out.println(requestXML);
            String result = WXAllUitls.httpsRequest(WXPayUrl, "POST", requestXML);
            System.out.println(result);
            Map<String, String> map = new HashMap<>();
            try {
                map = WXAllUitls.doXMLParse(result);
                String return_code = map.get("return_code");
                if (return_code.contains("SUCCESS")) {
                    code_url = map.get("code_url");//获取到code_url
                    code_url = imgUrl(code_url,userGid);
                    wXPayDto.setCodeUrl(code_url);
                }
            }catch (Exception e){
                e.printStackTrace();
            }finally {
            }
        }else{//H5支付
            String sign = querySignH5(payWechat,price,ip,WXNonceStr,WXOutTradeNo);
            mapSign.put("trade_type", trade_type_H5);
            mapSign.put("sign",sign);//scene_info
            //mapSign.put("scene_info",scene_info);
            String requestXML = WXAllUitls.getRequestXml(mapSign);
            System.out.println(requestXML);
            String result = WXAllUitls.httpsRequest(WXPayUrl, "POST", requestXML);
            System.out.println(result);
            Map<String, String> map = new HashMap<>();
            try {
                map = WXAllUitls.doXMLParse(result);
                String return_code = map.get("return_code");
                if (return_code.contains("SUCCESS")) {
                    code_url = map.get("mweb_url");//获取到mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟
                    wXPayDto.setCodeUrl(code_url);
                }
            }catch (Exception e){
                e.printStackTrace();
            }finally {
            }
 
        }
         //处理业务信息
       return null;
 
    }
回调
推荐一个内网穿透地址https://www.ngrok.cc/

//支付完成回调
    @RequestMapping("/WXCallBack")
    public String payReturnRequest(HttpServletRequest request,HttpServletResponse response){
        System.out.println("进入回调");
        String tradState = "";
        String xmlString = "";
        String resXml = "";
        try {
            xmlString = getXmlString(request);
            System.out.println("微信返回的回调结果是:::::::" + xmlString);
            // 先解析返回的数据
            Map<String, String> dataMap = WXAllUitls.xmlToMap(xmlString);
            String returnCode = dataMap.get("return_code");//返回码
            String outTradeNo = dataMap.get("out_trade_no");//商户订单号
            String transactionId = dataMap.get("transaction_id");//微信支付订单号
            String nonceStr = dataMap.get("nonce_str");//随机字符串
 
            //
 
            //查询微信订单号状态 tradState
            // SUCCESS—支付成功
            //
            //REFUND—转入退款
            //
            //NOTPAY—未支付
            //
            //CLOSED—已关闭
            //
            //REVOKED—已撤销(刷卡支付)
            //
            //USERPAYING--用户支付中
            //
            //PAYERROR--支付失败(其他原因,如银行返回失败)
            tradState = setQueryWXOrderInfo(userGid, outTradeNo,nonceStr);
            System.out.println("该微信订单号状态:"+tradState);
            // 通知微信闭嘴,交易完成无需回调
            if("SUCCESS".equals(returnCode)){
                resXml = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>"
                        + "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> ";
                //处理业务
            }else{
                resXml = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>"
                        + "<return_msg><![CDATA[报文为空]]></return_msg>" + "</xml> ";
                //处理业务
            }
            BufferedOutputStream out = new BufferedOutputStream(
                    response.getOutputStream());
            out.write(resXml.getBytes());
            out.flush();
            out.close();
 
        }catch (Exception e){
            e.printStackTrace();
        }
 
        return tradState;
    }
 
//查询订单状态
    @RequestMapping("/taskQueryOrderStatu")
    public String setQueryWXOrderInfo(String gid,String WXOutTradeNo,String WXNonceStr){
        String path = ServiceImgUrl+gid+".jpg";
        String trade_state = "";
        SortedMap<String, Object> mapSign = new TreeMap<String, Object>();
        PayWechat payWechat = payWechatService.selectByPrimaryKey();
        mapSign.put("appid", payWechat.getAppid());
        mapSign.put("mch_id", payWechat.getMchId());
        mapSign.put("nonce_str", WXNonceStr);
        mapSign.put("out_trade_no", WXOutTradeNo);//订单号
        String sign = WXAllUitls.createSign("UTF-8", mapSign, payWechat.getApiKey());
        mapSign.put("sign",sign);
        String requestXML = WXAllUitls.getRequestXml(mapSign);
        String result = WXAllUitls.httpsRequest(queryWXOrderInfo, "POST", requestXML);
        System.out.println(result);
        Map<String, String> map = new HashMap<>();
        try {
            map = WXAllUitls.doXMLParse(result);
            String return_code = map.get("return_code");
            if (return_code.contains("SUCCESS")) {
                trade_state = map.get("trade_state");//获取到code_url
                File file = new File(path);
                if(file.exists()){
                    file.delete();
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
        }
        return trade_state;
    }
二维码图片使用流返回即可

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.zjy</groupId>
    <artifactId>xzlive</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
 
    <name>xzlive</name>
    <description>Demo project for Spring Boot</description>
 
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
 
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
        <swagger.version>2.7.0</swagger.version>
        <google.guava>18.0</google.guava>
        <fastjson.version>1.2.47</fastjson.version>
        <poi.version>3.17</poi.version>
        <jwt.version>0.9.0</jwt.version>
        <mybatis.version>1.3.2</mybatis.version>
    </properties>
 
    <dependencies>
        <!-- web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.11.3</version>
        </dependency>
 
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>[7.0.9]</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
        </dependency>
 
        <dependency>
            <groupId>net.glxn.qrgen</groupId>
            <artifactId>javase</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- 支付宝即时到账接口 -->
        <dependency>
            <groupId>com.pentahohub.nexus</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>20150820220052</version>
        </dependency>
 
        <dependency>
            <groupId>org.jdom</groupId>
            <artifactId>jdom</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.3</version>
        </dependency>
 
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>${google.guava}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.8</version>
        </dependency>
 
        <!-- <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>
            </dependency> -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>
        <!--<dependency>-->
        <!--<groupId>org.springframework.boot</groupId>-->
        <!--<artifactId>spring-boot-starter-security</artifactId>-->
        <!--</dependency>-->
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-jexl -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-jexl</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-bean-validators</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>${jwt.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.41</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.5</version>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
 
 
</project>

微信支付宝H5收款码扫码转账个人通道仿原生接口带备注可回调成功率9成以上相关推荐

  1. 微信支付宝H5收款码扫码转账个人通道,灵活配置,仿原生接口,带备注可回调成功率9成以上

    微信支付宝收款码转账H5免签高并发出码带备注可回调成功率99.9%支持重复支付多种轮询规则提高存活率         本收款系统,可使用支付宝个人码 企业支付宝收款码 微信个人码收款,可以完成即时到账 ...

  2. 微信支付宝收款码转账H5免签高并发出码带备注可回调成功率99.9%支持重复支付

    微信支付宝收款码转账H5免签高并发出码带备注可回调成功率99.9%支持重复支付多种轮询规则提高存活率         本收款系统,可使用支付宝个人码 企业支付宝收款码 微信个人码收款,可以完成即时到账 ...

  3. PHP版单文件index.php直接生成QQ微信支付宝三合一收款二维码完整源码

    打开EditPlus 5类似的工具新建一个utf-8格式的php页面,将下面的源码复制进去,然后修改前十二行对应的信息即可,下面的两千多行代码为全自动生成内容无需修改,改好后保存名为index.php ...

  4. 微信、支付宝,收款二维码实时生成,自定义金额 备注生成

    <font size='6px'>微信 支付宝 个人收款二维码实时生成</font> 微信 支付宝-二维码生成,监控系统 软件实现流程: app通过实现,对外提供web接口,访 ...

  5. 新版开运网运势测算网站源码 支持微信/支付宝H5支付 支持分销代理 可封装APP

    源码介绍 我在外面花钱购买的某站VIP资源,就是那种搬砖站,买来没时间调试发给大家看看吧,喜欢的就下去玩玩! 支持微信/支付宝H5和电脑端扫码支付.手机端可以调起微信/支付宝应用支付 支持后台设置价格 ...

  6. MyCnCart 专业版之个人微信二维码扫码转账

    个人微信二维码扫码转账支付方式,适合于国内外没有公司实体申请正常的微信支付渠道接口,但又想通过微信转账进行收款的国内个人商户或国外个人或公司商户. 后台配置: [扩展功能]->[支付方式]-&g ...

  7. 微信,支付宝,收款二维码实时生成订单监控,免签支,付支付系统,个人收款,收款二维码...

    微信,支付宝,收款二维码实时生成订单监控,免签支,付支付系统,个人收款,收款二维码 微信和支付宝个人支付二维码生成与监控!有PHP接口回调,个人收款好助手! 实现收款即时到个人微信或支付宝账户!方便安 ...

  8. 利用xposed自动获得支付宝个人收款二维码链接和收款记录

    一.说明 现在的App一般都会带有支付功能,而现在比较流行的支付一般有支付宝.微信.银行卡等,一般情况下,应用开发者会直接对接支付宝.微信或者第三方支付公司的Api,以完成支付,但是都需要收取不小的费 ...

  9. 手机H5支付和扫码支付的区别是什么?

    H5支付就是网页发起的微信.支付宝唤醒,通过微信自带的微信浏览器内jssdk发起的微信支付.支付宝也可以拉起手机浏览器唤醒支付宝发起支付宝支付. 扫码支付即通过手机app进行扫码付款,最常用的软件如微 ...

最新文章

  1. 怎么计算一个对象占用的内存
  2. 对代理ARP技术的误读、无法完成代理ARP实验的故障分析
  3. Openstack Nova 源码分析 — 使用 VCDriver 创建 VMware Instance
  4. oc 计算 带括号 式子
  5. SQL Server数据库中、获得刚插入新记录的自动ID号
  6. boost::signals2::shared_connection_block相关的测试程序
  7. scrape创建_确实在2分钟内对Scrape公司进行了评论和评分
  8. commons-fileupload实现文件上传下载
  9. python读取数据文件夹_使用python依次读取文件中的所有csv格式的数据
  10. 牛客JS编程大题(一)
  11. 2015年OA选型一览表
  12. ldd -r xxx.so命令 undefined symbol即错误定位c++filt
  13. 傅里叶变换的意义和理解(通俗易懂)
  14. Win11搜索框恢复成放大镜
  15. “幽灵刹车”困扰特斯拉
  16. 浅谈面向对象的编程思想:如何优雅地把大象装进冰箱?
  17. 中国不投美国国债还能投什么?
  18. linux使用教程PDF,腾讯、阿里Java高级面试真题汇总
  19. 网上购车平台蛋蛋订车上私户,汽车之家青少年嘉年华正式开幕
  20. python练习题15:恺撒密码 I

热门文章

  1. AE模板自媒体频道订阅点赞模板网络视频点赞订阅图形动画
  2. WIN11自定义版本镜像下载教程
  3. STC15内部ADC测电压
  4. 主数据管理(MDM)项目建设落地方案
  5. PHP实现小型问卷星,JS实现问卷星自动填问卷脚本并在两秒自动提交功能
  6. python 实现问卷星自动填写多份
  7. R语言绘图:条形图——barplot
  8. 值得推荐的分子动力学模拟入门书籍
  9. 云和恩墨做的是oracle,云和恩墨张中靖:立足Oracle技术,顺应去IOE大势 原创
  10. jekyll 配置环境变量——zsh