springboot 对接易支付Demo(亲自测试过)

Java易支付的Demo少之又少,没有所谓的易支付官方,都是个人的,而且还会随时跑路的,小编就是被易支付骗了66.6,正好3个6,但是都是个人支付网站,没有一份完整的JavaDemo教程,全都是PHP的,在易支付里,卖一套PHP源码都是一两百块的,90%易支付站长都不懂技术的。小编也不多说什么吧,如果需要对接第四方易支付的话小心点,注意点就好了

Demo

import java.net.URLEncoder;
import java.util.*;
import currency.MySpringBootApplication;
import org.apache.commons.codec.digest.DigestUtils;
import org.junit.jupiter.api.Test;
import org.junit.platform.commons.util.StringUtils;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest(classes = MySpringBootApplication.class)
public class Demo {

    @Test
    public void test()  {

        String webSite="http://pay.xxx.net/";//易支付网站地址
        HashMap<String, String> map = new HashMap<>();
        map.put("pid","1000");//pid或者id
        map.put("type","wxpay");//支付方式,alipay:支付宝,wxpay:微信支付,qqpay:QQ钱包
        map.put("out_trade_no","fhdsfsdndshfdsfsd");//订单号,自己生成
        map.put("notify_url","http://baidu.com");//服务器异步通知地址
        map.put("return_url","http://baidu.com");//页面跳转通知地址
        map.put("name","东泰测试");//商品名称
        map.put("money","0.01");//金额
        map.put("sitename","东泰");//网站名称
        String key="dddddddddddddddd";//易支付秘钥

        //参数排序,不能urlEncode和转小写
        String s = formatUrlMap(map,false,false);
        //加密生成签名
        String sign = DigestUtils.md5Hex(s+key);
        //跳转支付的url地址
        String s1 = webSite + "submit.php?" + s + "&sign="+sign+"&sign_type=MD5";
        System.out.println(s1);
    }



    /**
     *
     * 方法用途: 对所有传入参数按照字段名的Unicode码从小到大排序(字典序),并且生成url参数串<br>
     * 实现步骤: <br>
     *
     * @param paraMap   要排序的Map对象
     * @param urlEncode   是否需要URLENCODE
     * @param keyToLower    是否需要将Key转换为全小写。true:key转化成小写,false:不转化
     * @return
     */
    public static String formatUrlMap(Map<String, String> paraMap, boolean urlEncode, boolean keyToLower) {
        String buff = "";
        Map<String, String> tmpMap = paraMap;
        try {
            List<Map.Entry<String, String>> infoIds = new ArrayList<Map.Entry<String, String>>(tmpMap.entrySet());
            // 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
            Collections.sort(infoIds, new Comparator<Map.Entry<String, String>>() {

                @Override
                public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
                    return (o1.getKey()).toString().compareTo(o2.getKey());
                }
            });
            // 构造URL 键值对的格式
            StringBuilder buf = new StringBuilder();
            for (Map.Entry<String, String> item : infoIds) {
                if (StringUtils.isNotBlank(item.getKey())) {
                    String key = item.getKey();
                    String val = item.getValue();
                    if (urlEncode) {
                        val = URLEncoder.encode(val, "utf-8");
                    }
                    if (keyToLower) {
                        buf.append(key.toLowerCase() + "=" + val);
                    } else {
                        buf.append(key + "=" + val);
                    }
                    buf.append("&");
                }

            }
            buff = buf.toString();
            if (buff.isEmpty() == false) {
                buff = buff.substring(0, buff.length() - 1);
            }
        } catch (Exception e) {
            return null;
        }
        return buff;
    }

}

 

本站资源除特别声明外,转载文章请声明文章出处
东泰博客 » springboot 对接易支付Demo(亲自测试过)

发表评论