package com.walker.pay; import com.walker.infrastructure.arguments.Variable; import com.walker.pay.callback.OrderCallBack; import com.walker.pay.exception.NotifyException; import com.walker.pay.exception.OrderException; import com.walker.pay.response.OrderStatusResponsePay; import java.util.Map; /** * 支付引擎提供者,抽象最基本的支付操作。 * @author 时克英 * @date 2023-01-12 */ public interface PayEngineProvider { /** * 设置当前支付引擎的 '支付定义' 对象。 * @param payDefinition * @date 2023-02-17 */ void setPayDefinition(PayDefinition payDefinition); /** * 设置当前支付引擎需要的配置参数。 * @param configuration */ void setConfiguration(Map configuration); /** * 返回服务提供商信息。 * @return */ ServiceProvider getServiceProvider(); /** * 返回该提供商支付对接的版本号。

* 例如:微信支付存在多个版本,因此服务商+版本号 确定唯一的提供者实现。 * @return */ String getVersion(); /** * 返回渠道信息 * @return */ PayChannel getPayChannel(); /** * 返回支付定义ID,应该是支付提供者来确定该定义ID,然后与定义集合对比。 * @return * @date 2023-01-17 */ String getPayDefinitionId(); /** * 返回第三方支付类型字符串,如: app/jsapi/native等,这些是第三方支付类型区别。 * @return */ String getProviderPayType(PayType payType); /** * 生成预下单的订单对象。 * @param platformOrder * @return ResponseValue 返回调用结果 * @throws OrderException 订单获取异常 * @date 2023-01-16 更新返回结果 */ ResponsePay generatePrepareOrder(Order platformOrder) throws OrderException; /** * 查询支付订单状态。 * @param order 系统内部订单对象 * @return * @date 2023-02-23 * @date 2023-08-30 输入参数改为订单对象 */ // OrderStatusResponsePay searchOrderStatus(String orderId); OrderStatusResponsePay searchOrderStatus(Order order); /** * 订单结果通知,业务在接收到第三方通知后,需要调用该方法处理具体流程。 * @param notifyData 通知消息 // * @param callBack 业务回调函数 * @throws NotifyException * @date 2023-01-16 * @date 2023-02-20 把 OrderCallback 放到引擎中,统一在引擎创建时配置。 */ void notifyOrder(Object notifyData // , OrderCallBack callBack ) throws NotifyException; /** * 生成接收通知后,给第三方的响应内容。 // * @param payDefinitionId 支付定义ID * @param success 是否成功 * @return * @date 2023-02-17 */ String generateNotifyResponse(boolean success); /** * 设置订单操作的回调实现,该接口定义了支付订单过程的一个关键节点的入口回调,
* 业务通过实现接口,避免支付与业务的耦合,起到分离作用。 * @param orderCallBack * @date 2023-02-20 */ void setOrderCallback(OrderCallBack orderCallBack); }