相信很多个人开发者都没有资质去申请微信、支付宝、支付。那么这时候只有使用第三方支付了。
第三方支付也有很多种,那么这个文章只介绍彩虹易支付。
通常他们官方接口文档只有PHP SDK,并没有Java的。
刚开始我对接的时候也想在网上找个Java 的SDK并没有找到~
此文章只写了对接发起支付部分,希望可以帮助一些小白。
直接上代码
import org.springframework.util.DigestUtils;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
String url = "";//支付地址
String pid = "";//商户id
String type = "";//支付类型
String outTradeNo = "";//商户单号
String notifyUrl = "";//异步通知
String returnUrl = "";//跳转地址
String name = "";//商品名
String money = "";//价格
String signType = "MD5";//签名类型
String key = "";//商户密钥
//参数存入 map
Map<String,String> sign = new HashMap<>();
sign.put("pid",pid);
sign.put("type",type);
sign.put("out_trade_no",outTradeNo);
sign.put("notify_url",notifyUrl);
sign.put("return_url",returnUrl);
sign.put("name",name);
sign.put("money",money);
//根据key升序排序
sign = sortByKey(sign);
String signStr = "";
//遍历map 转成字符串
for(Map.Entry<String,String> m :sign.entrySet()){
signStr += m.getKey() + "=" +m.getValue()+"&";
}
//去掉最后一个 &
signStr = signStr.substring(0,signStr.length()-1);
//最后拼接上KEY
signStr += key;
//转为MD5
signStr = DigestUtils.md5DigestAsHex(signStr.getBytes());
sign.put("sign_type",signType);
sign.put("sign",signStr);
System.out.println("<form id='paying' action='"+url+"/submit.php' method='post'>");
for(Map.Entry<String,String> m :sign.entrySet()){
System.out.println("<input type='hidden' name='"+m.getKey()+"' value='"+m.getValue()+"'/>");
}
System.out.println("<input type='submit' value='正在跳转'>");
System.out.println("</form>");
System.out.println("<script>document.forms['paying'].submit();</script>");
}
public static <K extends Comparable<? super K>, V > Map<K, V> sortByKey(Map<K, V> map) {
Map<K, V> result = new LinkedHashMap<>();
map.entrySet().stream()
.sorted(Map.Entry.<K, V>comparingByKey()).forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
return result;
}
}
代码输出
直接运行此htm代码l就可以跳转到支付了
感谢阅读,如有不足 望指出 ~