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 paramMap); /** * RSA私钥解密 * * @param encodedString 加密字符串 * @param type 解密后 JSON 解析类型 * @param 类型泛型 * @return 解密后实例 */ T decode(String encodedString, Class 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 sign(String content); /** * 商户向指定支付宝账户转账 * * @param param 入参 */ void transferAccount(AlipayTransferAccountDTO param); /** * 用户退款 * * @param refundDTO 入参 */ void refund(AlipayRefundDTO refundDTO); /** * 分页查询退款记录 * * @param queryDTO 入参 * @return 结果页 */ IPage refundList(AlipayRefundQueryDTO queryDTO); /** * 退款处理提交 * * @param finishDTO 入参 */ void refundFinish(AlipayRefundFinishDTO finishDTO); /** * 查询当前登录用户会员有效期内可退款金额 * * @param user 当前登录用户 * @return 金额(分) */ BigDecimal refundAmountCalculate(UserDetail user); /** * RSA公钥解密 * * @param encodedString 加密字符串 * @param type 解密后 JSON 解析类型 * @param 类型泛型 * @return 解密后实例 */ T decodeByPublicKey(String encodedString, Class type); }