Spring Boot对接xorpay个人免签支付

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 即可领取
扫码关注

猜你喜欢

转载自blog.csdn.net/kkwyting/article/details/132690447