package com.nova.sankuai.service;
|
|
import com.alipay.api.AlipayApiException;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.nova.sankuai.domain.dto.*;
|
import com.nova.sankuai.domain.entity.AlipayRefundRecord;
|
import com.nova.sankuai.domain.entity.SysAlipayAccount;
|
import com.nova.sankuai.domain.vo.AlipayOrderInfoVO;
|
import com.nova.sankuai.security.UserDetail;
|
|
import java.math.BigDecimal;
|
import java.util.Map;
|
|
public interface IAlipayPlatformService {
|
|
/**
|
* 创建支付宝订单,返回手机网页支付的表单内容
|
*/
|
String orderCreate(AlipayOrderCreateDTO createDTO);
|
|
/**
|
* 生成支付宝订单创建的表单
|
*
|
* @param account 要使用的支付宝账户实例
|
* @param orderId 商户订单号
|
* @param amount 订单金额
|
* @param subject 订单主体
|
* @param returnURL 页面返回URL
|
* @param notifyURL 回调URL
|
* @return 表单
|
* @throws AlipayApiException 生成支付表单时产生的异常
|
*/
|
String generateAlipayForm(SysAlipayAccount account,
|
String orderId, String amount, String subject,
|
String returnURL, String notifyURL) throws AlipayApiException;
|
|
/**
|
* 判断支付宝账户是否达到当日限额,若没有达到则检查是否需要满额预警,然后返回生成的usageId;否则抛出异常
|
*
|
* @param orderId 订单号
|
* @param amount 金额
|
* @return 返回 usageID
|
*/
|
long accountDecision(String orderId, BigDecimal amount);
|
|
/**
|
* 处理支付宝回调
|
*
|
* @param paramMap 支付宝回调参数
|
*/
|
void handleNotify(Map<String, String[]> paramMap);
|
|
/**
|
* RSA私钥解密
|
*
|
* @param encodedString 加密字符串
|
* @param type 解密后 JSON 解析类型
|
* @param <T> 类型泛型
|
* @return 解密后实例
|
*/
|
<T> T decode(String encodedString, Class<T> type);
|
|
/**
|
* RSA私钥加密
|
*
|
* @param inst 原始内容
|
* @return 解密后实例
|
*/
|
String encode(String inst);
|
|
/**
|
* 订单查询
|
*
|
* @param queryDTO 查询参数
|
* @return 查询后结果
|
*/
|
AlipayOrderInfoVO orderQuery(AlipayOrderQueryDTO queryDTO);
|
|
/**
|
* 序列化为JSON字符串
|
*
|
* @param obj 实例
|
* @return 字符串
|
*/
|
String toJsonString(Object obj);
|
|
/**
|
* 对入参加签,然后返回结构体
|
*
|
* @param content 内容
|
* @return 结构体
|
*/
|
Map<String, String> sign(String content);
|
|
/**
|
* 商户向指定支付宝账户转账
|
*
|
* @param param 入参
|
*/
|
void transferAccount(AlipayTransferAccountDTO param);
|
|
/**
|
* 用户退款
|
*
|
* @param refundDTO 入参
|
*/
|
void refund(AlipayRefundDTO refundDTO);
|
|
/**
|
* 分页查询退款记录
|
*
|
* @param queryDTO 入参
|
* @return 结果页
|
*/
|
IPage<AlipayRefundRecord> refundList(AlipayRefundQueryDTO queryDTO);
|
|
/**
|
* 退款处理提交
|
*
|
* @param finishDTO 入参
|
*/
|
void refundFinish(AlipayRefundFinishDTO finishDTO);
|
|
/**
|
* 查询当前登录用户会员有效期内可退款金额
|
*
|
* @param user 当前登录用户
|
* @return 金额(分)
|
*/
|
BigDecimal refundAmountCalculate(UserDetail user);
|
|
/**
|
* RSA公钥解密
|
*
|
* @param encodedString 加密字符串
|
* @param type 解密后 JSON 解析类型
|
* @param <T> 类型泛型
|
* @return 解密后实例
|
*/
|
<T> T decodeByPublicKey(String encodedString, Class<T> type);
|
}
|