无忧付
This commit is contained in:
parent
95147c8fa4
commit
29fce0c40e
|
|
@ -0,0 +1,17 @@
|
|||
package com.sqx.modules.pay.wuyou;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author GYJ
|
||||
*/
|
||||
@Data
|
||||
public class BaseResp {
|
||||
private Integer code;
|
||||
private Integer status;
|
||||
private String msg;
|
||||
private OrderResp data;
|
||||
@JSONField(name = "pay_status")
|
||||
private String payStatus;
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package com.sqx.modules.pay.wuyou;
|
||||
|
||||
/**
|
||||
* @author GYJ
|
||||
*/
|
||||
public class Constants {
|
||||
final static String APP_SECRET = "3MWSBmyKDeQDLXzoLr53tKVqiJv4Fm0KdsEhbpXW9YWvh35VgozL5S3rpUz4EjSb";
|
||||
final static String MERCHANT_ID = "100360";
|
||||
|
||||
final static String BASE_URL = "http://47.113.117.120";
|
||||
|
||||
final static String PAY_URL = BASE_URL + "/api/order";
|
||||
final static String QUERY_URL = BASE_URL + "/api/queryOrder";
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package com.sqx.modules.pay.wuyou;
|
||||
|
||||
import com.alibaba.druid.util.Utils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.sqx.modules.pay.wuyou.Constants.APP_SECRET;
|
||||
|
||||
/**
|
||||
* 无忧支付 签名加密
|
||||
* @author GYJ
|
||||
*/
|
||||
public class Encrypt {
|
||||
|
||||
|
||||
public static String getParamsSign(Map<String, Object> params) {
|
||||
// 将参数按照key=value的格式拼接在一起, key按照字典序排序
|
||||
StringBuilder sb = new StringBuilder();
|
||||
params.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(entry -> {
|
||||
sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
|
||||
});
|
||||
sb.append("key=").append(APP_SECRET);
|
||||
String signStr = sb.toString();
|
||||
System.out.println("signStr: " + signStr);
|
||||
return Utils.md5(signStr).toUpperCase();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("a", "1");
|
||||
params.put("b", "2");
|
||||
String sign = getParamsSign(params);
|
||||
System.out.println(sign);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package com.sqx.modules.pay.wuyou;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author GYJ
|
||||
*/
|
||||
@Data
|
||||
public class OrderResp {
|
||||
@JSONField(name = "mch_id")
|
||||
private String mchId;
|
||||
|
||||
@JSONField(name = "out_trade_no")
|
||||
private String outTradeNo;
|
||||
|
||||
private Double total;
|
||||
|
||||
private String type;
|
||||
|
||||
// 如果支付订单则返回订单创建时间,如果是查询订单则返回订单支付时间
|
||||
private long timestamp;
|
||||
|
||||
@JSONField(name = "qr_url")
|
||||
private String qrUrl;
|
||||
|
||||
@JSONField(name = "h5_url")
|
||||
private String h5Url;
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
package com.sqx.modules.pay.wuyou;
|
||||
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author GYJ
|
||||
*/
|
||||
public class WuyouPay {
|
||||
public static BaseResp payOrder(String orderNo, String amount, String userAgent) {
|
||||
Map<String, Object> params = getBaseParams();
|
||||
params.put("out_trade_no", orderNo);
|
||||
params.put("total", amount);
|
||||
|
||||
String sign = Encrypt.getParamsSign(params);
|
||||
params.put("sign", sign);
|
||||
|
||||
String body = request(Constants.PAY_URL, params, userAgent);
|
||||
|
||||
return JSONObject.parseObject(body, BaseResp.class);
|
||||
}
|
||||
|
||||
private static BaseResp queryOrder(String orderNo, String amount, String userAgent) {
|
||||
Map<String, Object> params = getBaseParams();
|
||||
params.put("out_trade_no", orderNo);
|
||||
params.put("total", amount);
|
||||
|
||||
String sign = Encrypt.getParamsSign(params);
|
||||
params.put("sign", sign);
|
||||
|
||||
String body = request(Constants.QUERY_URL, params, userAgent);
|
||||
return JSONObject.parseObject(body, BaseResp.class);
|
||||
}
|
||||
|
||||
private static Map<String, Object> getBaseParams() {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("mch_id", Constants.MERCHANT_ID);
|
||||
params.put("timestamp", System.currentTimeMillis() / 1000);
|
||||
params.put("type", "6001");
|
||||
params.put("notify_url", Constants.BASE_URL + "/api/notify");
|
||||
params.put("is_code", "1");
|
||||
return params;
|
||||
}
|
||||
|
||||
private static String request(String url, Map<String, Object> params, String userAgent) {
|
||||
String body = HttpRequest.post(url)
|
||||
.header("Content-Type", "application/x-www-form-urlencoded")
|
||||
.header("User-Agent", userAgent)
|
||||
.body(JSONObject.toJSONString(params))
|
||||
.execute()
|
||||
.body();
|
||||
|
||||
return body;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
payOrder("20221118123456791", "0.1", "Mozilla/5.0");
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue