支付宝正扫

This commit is contained in:
HH 2022-03-31 10:38:34 +08:00
parent 927a0ecc0b
commit 70a3245630
8 changed files with 162 additions and 31 deletions

View File

@ -2,8 +2,10 @@ package com.ghy.common.adapay;
import com.ghy.common.adapay.callback.PayCallback;
import com.ghy.common.adapay.callback.RefundCallback;
import com.ghy.common.adapay.callback.reply.PayReplyMapping;
import com.ghy.common.adapay.callback.reply.RefundReplyMapping;
import com.ghy.common.adapay.callback.mapping.PayReplyMapping;
import com.ghy.common.adapay.callback.mapping.RefundReplyMapping;
import com.ghy.common.adapay.callback.model.Expend;
import com.ghy.common.adapay.callback.model.WxLiteExpend;
import com.huifu.adapay.core.exception.BaseAdaPayException;
import com.huifu.adapay.model.Payment;
import com.huifu.adapay.model.Refund;
@ -22,6 +24,46 @@ public class AdapayService {
AdapayProperties adapayProperties;
/**
* 支付宝正扫支付
*/
public Map<String, Object> alipayQrPay(PayCallback callback, WxLiteExpend expend, String orderNo, String payAmt, String goodsTittle, String goodsDesc, String description) throws BaseAdaPayException {
return pay(callback, PayChannelEnum.ALIPAY_QR.getCode(), expend, orderNo, payAmt, goodsTittle, goodsDesc, description);
}
/**
* 微信小程序支付
*/
public Map<String, Object> wxLitePay(PayCallback callback, WxLiteExpend expend, String orderNo, String payAmt, String goodsTittle, String goodsDesc, String description) throws BaseAdaPayException {
return pay(callback, PayChannelEnum.WX_LITE.getCode(), expend, orderNo, payAmt, goodsTittle, goodsDesc, description);
}
/**
* @param callback [必填项]处理支付结果的回调接口
* @param orderNo [必填项]订单号
* @param payAmt [必填项]交易金额必须大于0保留两位小数点"0.10""100.05"
* @param goodsTittle [必填项]商品名称
* @param goodsDesc [必填项]商品描述信息微信小程序和微信公众号该字段最大长度42个字符
* @param payChannel [必填项]支付渠道详见 https://docs.adapay.tech/api/appendix.html#id2
* @param expend 支付渠道额外参数条件可输入详见 https://docs.adapay.tech/api/appendix.html#expend
* @param description 订单附加说明
* @return 同步返回一个 支付对象详见 https://docs.adapay.tech/api/trade.html#id2
*/
public Map<String, Object> pay(PayCallback callback, String payChannel, Expend expend, String orderNo, String payAmt, String goodsTittle, String goodsDesc, String description) throws BaseAdaPayException {
Map<String, Object> paymentParams = new HashMap<>(16);
paymentParams.put("app_id", adapayProperties.getAppId());
paymentParams.put("notify_url", adapayProperties.getNotifyUrl());
paymentParams.put("order_no", orderNo);
paymentParams.put("pay_channel", payChannel);
paymentParams.put("pay_amt", payAmt);
paymentParams.put("goods_title", goodsTittle);
paymentParams.put("goods_desc", goodsDesc);
paymentParams.put("description", description);
paymentParams.put("expend", expend);
PayReplyMapping.putCallback(orderNo, callback);
return Payment.create(paymentParams);
}
/**
* 发起退款
* 当您的业务需要发起退款时可通过 Adapay 系统提供的创建 Refund对象 方法创建一个退款对象资金会原路退回用户的支付宝或微信中
@ -44,31 +86,6 @@ public class AdapayService {
return Refund.create(paymentId, refundParams);
}
/**
* 微信小程序支付
*
* @param callback [必填项]处理支付结果的回调接口
* @param orderNo [必填项]订单号
* @param payAmt [必填项]交易金额必须大于0保留两位小数点如0.10100.05等
* @param goodsTittle [必填项]商品名称
* @param goodsDesc [必填项]商品描述信息微信小程序和微信公众号该字段最大长度42个字符
* @param description 订单附加说明
* @return 同步返回一个 支付对象 Payment
*/
public Map<String, Object> wxLitePay(PayCallback callback, String orderNo, String payAmt, String goodsTittle, String goodsDesc, String description) throws BaseAdaPayException {
Map<String, Object> paymentParams = new HashMap<>(16);
paymentParams.put("app_id", adapayProperties.getAppId());
paymentParams.put("notify_url", adapayProperties.getNotifyUrl());
paymentParams.put("order_no", orderNo);
paymentParams.put("pay_channel", PayChannelEnum.WX_LITE.getCode());
paymentParams.put("pay_amt", payAmt);
paymentParams.put("goods_title", goodsTittle);
paymentParams.put("goods_desc", goodsDesc);
paymentParams.put("description", description);
PayReplyMapping.putCallback(orderNo, callback);
return Payment.create(paymentParams);
}
/**
* 支付关单
* 针对已经创建的 支付对象您可以调用关单接口进行交易的关闭调用此接口后该用户订单将不再能支付成功 对于关单功能的使用有如下规则

View File

@ -1,7 +1,7 @@
package com.ghy.common.adapay.callback;
import com.ghy.common.adapay.callback.reply.PayReplyMapping;
import com.ghy.common.adapay.callback.reply.RefundReplyMapping;
import com.ghy.common.adapay.callback.mapping.PayReplyMapping;
import com.ghy.common.adapay.callback.mapping.RefundReplyMapping;
import com.huifu.adapay.core.AdapayCore;
import com.huifu.adapay.core.util.AdapaySign;
import lombok.extern.slf4j.Slf4j;

View File

@ -1,4 +1,4 @@
package com.ghy.common.adapay.callback.reply;
package com.ghy.common.adapay.callback.mapping;
import com.alibaba.fastjson.JSON;
import com.ghy.common.adapay.callback.Event;

View File

@ -1,4 +1,4 @@
package com.ghy.common.adapay.callback.reply;
package com.ghy.common.adapay.callback.mapping;
import com.alibaba.fastjson.JSON;
import com.ghy.common.adapay.callback.Event;

View File

@ -0,0 +1,30 @@
package com.ghy.common.adapay.callback.model;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 支付宝正扫支付时的expend参数
*
* @author HH 2022/3/31
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AlipayQrExpend extends Expend {
/**
* 优惠信息
*/
@JSONField(name = "promotion_detail")
private PromotionDetail promotionDetail;
/**
* 花呗分期数
* 支付金额大于等于 100 元时可不指定分期数用户可自由选择分期数
* 支付金额小于 100 元时必须指定分期数否则不支持花呗分期支付
* 指定分期数后用户不能更分期数分期数目前只支持 3612花呗分期的手续费由用户自己承担
*/
@JSONField(name = "hb_fq_num")
private PromotionDetail hbFqNum;
}

View File

@ -0,0 +1,7 @@
package com.ghy.common.adapay.callback.model;
/**
* @author HH 2022/3/31
*/
public class Expend {
}

View File

@ -0,0 +1,35 @@
package com.ghy.common.adapay.callback.model;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
/**
* 优惠信息
*
* @author HH 2022/3/31
*/
@Data
public class PromotionDetail {
/**
* 订单原价
* 商户侧一张小票订单可能被分多次支付订单原价用于记录整张小票的交易金额
* 当订单原价与支付金额不相等则不享受优惠
* 该字段主要用于防止同一张小票分多次支付以享受多次优惠的情况正常支付订单不必上传此参数
*/
@JSONField(name = "cost_price")
private String costPrice;
/**
* 商家小票 id
*/
@JSONField(name = "receipt_id")
private String receiptId;
/**
* 订单包含的商品列表信息
* 详见 GoodsDetail对象 https://docs.adapay.tech/api/appendix.html#goodsdetail
*/
@JSONField(name = "goods_detail")
private String goodsDetail;
}

View File

@ -0,0 +1,42 @@
package com.ghy.common.adapay.callback.model;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 微信小程序支付时的expend参数
*
* @author HH 2022/3/31
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WxLiteExpend extends Expend{
/**
* [必填]微信用户关注商家公众号的 openid
*/
@JSONField(name = "open_id")
private String openId;
/**
* 当前微信小程序的 appid
*/
@JSONField(name = "wx_app_id")
private String wxAppId;
/**
* 是否原生态1-0-
*/
@JSONField(name = "is_raw")
private String isRaw;
/**
* 值为 1 时禁止使用信用卡支付
*/
@JSONField(name = "limit_pay")
private String limitPay;
/**
* 优惠信息
*/
@JSONField(name = "promotion_detail")
private PromotionDetail promotionDetail;
}