BDNCashierSDK.h 6.52 KB
//
//  BDNCashierSDK.h
//  BainuoCashierSDK
//
//  Created by Jack on 2019/7/30.
//  Copyright © 2019 Baidu. All rights reserved.
//

#import "BDNCashierSDKObject.h"

#pragma mark - 收银台接口方法
@interface BDNCashierSDK : NSObject
/**
 * @brief 获取SDK版本号
 *
 * @return SDK版本号
 */
+ (NSString *)SDKVersion;

/**
 * @brief 获取当前运行环境
 *
 * @return 当前运行环境,默认为线上正式环境
 */
+ (BDNCashierEnvironment)environment;

/**
 * @brief 设置SDK运行环境
 *
 * @param environment 运行环境
 */
+ (void)setEnvironment:(BDNCashierEnvironment)environment;

#pragma mark - 支付业务接口
/**
 * @brief 注册支付能力
 *
 * @param services 宿主需要的支付能力
 */
+ (void)registerPaymentServices:(NSArray<id<BDNCashierSDKPaymentServiceProtocol>> *)services;

/**
 * @brief 调起聚合收银台服务
 *
 * @param dealReq 调起收银台服务所需数据的模型封装
 */
+ (void)showCashierDesk:(BDNCashierDealReq *)dealReq;

/**
 * @brief 调起收银台优惠券页面
 *
 * @param couponReq 调起收银台优惠券页面所需数据的模型封装
 */
+ (void)showCashierCoupon:(BDNCashierCouponReq *)couponReq;

/**
 * @brief 免密/周期代扣签约(跳转支付渠道App)
 *
 * @param params 请求参数
 * @param responseBlock 成功回调
 * @param failedBlock 失败回调
 */
+ (void)startSignWithParams:(NSDictionary *)params responseBlock:(void(^)(NSDictionary *response))responseBlock failedBlock:(void(^)(NSError *error))failedBlock;

/**
 * @brief 处理某些支付服务的回调信息(通过URL回调)
 * @note 在AppDelegate方法:`- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation`中调用,用于透传url给相关支付能力处理
 *
 * @param url 第三方支付回调信息
 * @return 是否能被处理
 */
+ (BOOL)handleOpenURL:(NSURL *)url;

/**
 * @brief 处理某些支付服务的回调信息(通过UniversalLink回调)
 * @note 在AppDelegate方法:`- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray *restorableObjects))restorationHandler`中调用,用于透传userActivity给相关支付能力处理
 *
 * @param userActivity 第三方支付回调信息
 * @return 是否能被处理
 */
+ (BOOL)handleUniversalLink:(NSUserActivity *)userActivity;


#pragma mark - 网络数据请求接口(直接向支付 server 请求/发送相关业务数据)

/**
 * @brief 获取支付渠道列表(channelAllInfo)
 *
 * @param params 请求参数
 * @param responseBlock 成功回调
 * @param failedBlock 失败回调
 */
+ (void)requestChannelInfoWithParams:(NSDictionary *)params responseBlock:(void(^)(NSDictionary *response))responseBlock failedBlock:(void(^)(NSError *error))failedBlock;

/**
 * @brief 算价(calcMoney)
 *
 * @param params 请求参数
 * @param responseBlock 成功回调
 * @param failedBlock 失败回调
 */
+ (void)calculatePriceWithParams:(NSDictionary *)params responseBlock:(void(^)(NSDictionary *response))responseBlock failedBlock:(void(^)(NSError *error))failedBlock;

/**
 * @brief 上报单次分佣数据(带货分佣 )
 *
 * @param data 分佣数据
 * @param completion 完成回调,标识上报是否成功
 */
+ (void)reportCommisionData:(NSDictionary *)data completion:(void(^)(BOOL))completion;

/**
 * @brief 触发批量上报分佣数据(SDK内部存储的单次上报失败的带货分佣数据)
 *
 * @param completion 完成回调,标识上报是否成功
 */
+ (void)reportBatchedCommisionData:(void(^)(BOOL))completion;

/**
 * @brief 触发统计数据上报
 */
+ (void)reportStatisticalData;

/**
 * @brief 支付设置-免密支付、周期代扣的签约信息、状态查询
 *
 * @param params 请求参数
 * @param responseBlock 成功回调
 * @param failedBlock 失败回调
 */
+ (void)querySignInfoWithParams:(NSDictionary *)params responseBlock:(void(^)(NSDictionary *response))responseBlock failedBlock:(void(^)(NSError *error))failedBlock;

/**
 * @brief 支付设置-免密支付签约/解约
 *
 * @param params 请求参数
 * @param responseBlock 成功回调
 * @param failedBlock 失败回调
 */
+ (void)operateSignWithParams:(NSDictionary *)params responseBlock:(void(^)(NSDictionary *response))responseBlock failedBlock:(void(^)(NSError *error))failedBlock;

/**
 * @brief 支付设置-免密支付开关
 *
 * @param params 请求参数
 * @param responseBlock 成功回调
 * @param failedBlock 失败回调
 */
+ (void)operatePlatSignWithParams:(NSDictionary *)params responseBlock:(void(^)(NSDictionary *response))responseBlock failedBlock:(void(^)(NSError *error))failedBlock;
@end

#pragma mark - 收银台代理方法
@protocol BDNCashierSDKDelegate <NSObject>
/**
 * 预留协议,便于后期扩展
 */
@end

#pragma mark - 支付服务协议(自行实现指定支付渠道的支付能力时使用)
@protocol BDNCashierSDKPaymentServiceProtocol <NSObject>

@required
/**
 * @brief 设置支付能力的渠道标示
 *
 * @return 支付渠道
 */
- (BDNCashierPaymentChannel *)paymentChannel;

/**
 * @brief 使用该支付渠道进行支付
 *
 * @param orderInfo 订单信息
 * @param completion 回调block 内部返回的字典结构必须包含:@{ BDNCashierPaymentRespCodeKey: @(BDNCashierPaymentRespCode), BDNCashierPaymentRespMsgKey: @"描述信息" }
 */
- (void)doPay:(NSString *)orderInfo completion:(BDNCashierPaymentCallback)completion;

@optional
/**
 * @brief 处理AppDelegate中的支付回调信息(通过URL回调)
 *
 * @param url 支付回调信息 从方法:`- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation`中取得的url
 * @return 是否能被处理
 */
- (BOOL)handleOpenURL:(NSURL *)url;

/**
 * @brief 处理AppDelegate中的支付回调信息(通过UniversalLink回调)
 *
 * @param userActivity 支付回调信息 从方法:`- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray *restorableObjects))restorationHandler`中取得的userActivity
 * @return 是否能被处理
 */
- (BOOL)handleUniversalLink:(NSUserActivity *)userActivity;

/**
 * @brief 调起该支付渠道免密签约
 *
 * @param params 签约所需参数
 * @param completion 回调block 透传支付渠道返回的签约信息
 */
- (void)doSignNoScret:(NSDictionary *)params completion:(void (^)(NSDictionary *info, NSError *err))completion;

- (BOOL)isAppInstalled;

@end