Spring Boot对接xorpay个人免签支付
xorpay支持的支付方式挺多,个人站长福音,使用起来很方便。不过官方给的demo都不怎么样,这里分享一下对接过程:xorpay
1、前期准备
首先需要申请开通微信支付,注册完成后跟着网站提示操作就行,有问题直接问客服,客服除了回消息慢还是很不错的。
官网有客服联系方式
2、创建控制器,填写基本信息
String name = "测试商品"; //商品名称
String payType = "native"; /支付方式,一般为 native
String price = "0.01"; //价格
String orderId = new Date().toString(); //平台订单号,需要唯一
String notifyUrl = "https://xorpay.com/main"; //回调地址,测试可以用这个,实际项目中需要修改
String appSecret = "youAppSecret"; //你得appSecret-xorpay后台查看
3、设置请求体参数
// 设置请求体参数
MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
requestBody.add("name", name);
requestBody.add("pay_type", payType);
requestBody.add("price", price);
requestBody.add("order_id", orderId);
requestBody.add("notify_url", notifyUrl);
4、生成MD5签名
// 拼接参数值
StringBuilder sb = new StringBuilder();
for (List<String> value : requestBody.values()) {
sb.append(value.get(0));
}
sb.append(appSecret);
// 计算MD5签名
String sign = DigestUtils.md5DigestAsHex(sb.toString().getBytes());
5、补全参数
requestBody.add("sign", sign); //设置sign
requestBody.add("order_uid", "api-test-user"); //订单用户-可以不传
requestBody.add("more", ""); //订单其他信息,回调时原样传回-可以不传
6、发送请求
// 创建RestTemplate对象
RestTemplate restTemplate = new RestTemplate();
// 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 发送POST请求
String url = "http://xorpay.com/api/pay/XXX"; //XXX需要替换成你的aid,xorpay后台查看
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST,
new HttpEntity<>(requestBody, headers), String.class);
7、封装Vo类接收返回数据
@Data
public class XorpayVo {
private String status;
private Map<String, String> info;
private String expires_in;
private String aoid;
}
8、处理返回数据
// 处理响应
if (response.getStatusCode().is2xxSuccessful()) {
String responseBody = response.getBody();
// 将字符串解析为JSONObject对象
JSONObject jsonObject = JSONObject.parseObject(responseBody);
// 将JSONObject对象转换为Map对象
XorpayVo xorpayVo = jsonObject.toJavaObject(XorpayVo.class);
return xorpayVo.getInfo().get("qr");
} else {
return "";
}
9、前端页面-index.html
<img />
<script src="https://cdn.bootcss.com/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function() {
$.get("/getQr/getSrc", function(data) {
// 在成功回调函数中设置img元素的src属性
$("img").attr("src", "http://xorpay.com/qr?data=" + data);
});
});
</script>
项目启动后访问:http://localhost:8080/indexl.html即可看到支付二维码
10、源码获取
关注公众号回复 xorpay 即可领取