支付宝正扫
This commit is contained in:
parent
927a0ecc0b
commit
70a3245630
|
|
@ -2,8 +2,10 @@ package com.ghy.common.adapay;
|
||||||
|
|
||||||
import com.ghy.common.adapay.callback.PayCallback;
|
import com.ghy.common.adapay.callback.PayCallback;
|
||||||
import com.ghy.common.adapay.callback.RefundCallback;
|
import com.ghy.common.adapay.callback.RefundCallback;
|
||||||
import com.ghy.common.adapay.callback.reply.PayReplyMapping;
|
import com.ghy.common.adapay.callback.mapping.PayReplyMapping;
|
||||||
import com.ghy.common.adapay.callback.reply.RefundReplyMapping;
|
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.core.exception.BaseAdaPayException;
|
||||||
import com.huifu.adapay.model.Payment;
|
import com.huifu.adapay.model.Payment;
|
||||||
import com.huifu.adapay.model.Refund;
|
import com.huifu.adapay.model.Refund;
|
||||||
|
|
@ -22,6 +24,46 @@ public class AdapayService {
|
||||||
|
|
||||||
AdapayProperties adapayProperties;
|
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对象 方法创建一个退款对象,资金会原路退回用户的支付宝或微信中。
|
* 当您的业务需要发起退款时,可通过 Adapay 系统提供的创建 Refund对象 方法创建一个退款对象,资金会原路退回用户的支付宝或微信中。
|
||||||
|
|
@ -44,31 +86,6 @@ public class AdapayService {
|
||||||
return Refund.create(paymentId, refundParams);
|
return Refund.create(paymentId, refundParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 微信小程序支付
|
|
||||||
*
|
|
||||||
* @param callback [必填项]处理支付结果的回调接口
|
|
||||||
* @param orderNo [必填项]订单号
|
|
||||||
* @param payAmt [必填项]交易金额,必须大于0,保留两位小数点,如0.10、100.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);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付关单
|
* 支付关单
|
||||||
* 针对已经创建的 支付对象,您可以调用关单接口进行交易的关闭。调用此接口后,该用户订单将不再能支付成功。 对于关单功能的使用有如下规则:
|
* 针对已经创建的 支付对象,您可以调用关单接口进行交易的关闭。调用此接口后,该用户订单将不再能支付成功。 对于关单功能的使用有如下规则:
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.ghy.common.adapay.callback;
|
package com.ghy.common.adapay.callback;
|
||||||
|
|
||||||
import com.ghy.common.adapay.callback.reply.PayReplyMapping;
|
import com.ghy.common.adapay.callback.mapping.PayReplyMapping;
|
||||||
import com.ghy.common.adapay.callback.reply.RefundReplyMapping;
|
import com.ghy.common.adapay.callback.mapping.RefundReplyMapping;
|
||||||
import com.huifu.adapay.core.AdapayCore;
|
import com.huifu.adapay.core.AdapayCore;
|
||||||
import com.huifu.adapay.core.util.AdapaySign;
|
import com.huifu.adapay.core.util.AdapaySign;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
|
||||||
|
|
@ -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.alibaba.fastjson.JSON;
|
||||||
import com.ghy.common.adapay.callback.Event;
|
import com.ghy.common.adapay.callback.Event;
|
||||||
|
|
@ -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.alibaba.fastjson.JSON;
|
||||||
import com.ghy.common.adapay.callback.Event;
|
import com.ghy.common.adapay.callback.Event;
|
||||||
|
|
@ -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 元时,必须指定分期数,否则不支持花呗分期支付;
|
||||||
|
* 指定分期数后用户不能更分期数;分期数目前只支持 3、6、12。花呗分期的手续费由用户自己承担。
|
||||||
|
*/
|
||||||
|
@JSONField(name = "hb_fq_num")
|
||||||
|
private PromotionDetail hbFqNum;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.ghy.common.adapay.callback.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author HH 2022/3/31
|
||||||
|
*/
|
||||||
|
public class Expend {
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue