BBASMPaymentAdapterProtocol.h 4.83 KB
//
//  BBASMPaymentAdapterProtocol.h
//  BBAMNP
//
//  Created by baidu on 2019/5/7.
//  Copyright © 2019 Baidu. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BBASMAdapterBaseImplement.h"

NS_ASSUME_NONNULL_BEGIN

/**
 * @brief 支付类型
 */
typedef NS_ENUM(NSUInteger, BBASMPaymentType) {
    BBASMPaymentTypeBDWallet,  // 百度钱包
    BBASMPaymentTypeAlipay     // 支付宝
};

/**
 * @brief 支付结果状态
 */
typedef NS_ENUM(NSUInteger, BBASMPaymentStatus) {
    BBASMPaymentStatusSuccess,
    BBASMPaymentStatusLoading,
    BBASMPaymentStatusCanceled,
    BBASMPaymentStatusFailed
};

/**
 * @brief 支付相关协议
 */
@protocol BBASMPaymentAdapterProtocol <NSObject>

/**
 * @brief 糯米聚合收银台
 *
 * @discussion 调起聚合收银台,小程序可以配置收银台的支付渠道。
 * @param params          调起参数,包含订单信息、宿主信息以及场景值等。宿主app不需要做额外处理,直接透传给收银台API即可
 * @param bannedChannels  收银台需要屏蔽的渠道列表,宿主app不需要做额外处理,直接透传给收银台API即可
 * @param completionBlock 支付回调,其中payResult需要宿主app通过kBDNCashierWalletPayResultPayDescsKey取出后直接透传给小程序框架
 */
+ (void)requestBainuoPolymerPaymentWithParams:(NSDictionary *)params
                               bannedChannels:(nullable NSArray *)bannedChannels
                                   completion:(void (^)(BBASMPaymentStatus status, NSString *payResult))completionBlock;

/**
 * @brief 糯米聚合收银台新接口,支持更多信息的返回
 *
 * @discussion 调起聚合收银台,小程序可以配置收银台的支付渠道。
 * @param params          调起参数,包含订单信息、宿主信息以及场景值等。宿主app不需要做额外处理,直接透传给收银台API即可
 * @param bannedChannels  收银台需要屏蔽的渠道列表,宿主app不需要做额外处理,直接透传给收银台API即可
 * @param detailResultCallback 支付回调,其中payResult需要宿主app通过BDNCashierPaymentRespMsgKey取出,data通过BDNCashierPaymentRespDataKey取出后直接透传给小程序框架
 */
+ (void)requestBainuoPolymerPaymentWithParams:(NSDictionary *)params
                               bannedChannels:(nullable NSArray *)bannedChannels
                         detailResultCallback:(void (^)(BBASMPaymentStatus status, NSString *payResult, NSDictionary *data))detailResultCallback;

/**
 * @brief 糯米聚合收银台支付渠道信息(含支付渠道列表、优惠券列表)
 *
 * @param params  调起参数
 * @param completionBlock 回调
 */
+ (void)requestBainuoPolymerPaymentChannelInfoWithParams:(NSDictionary *)params
                                              completion:(void (^)(NSDictionary *info, NSError *error))completionBlock;

/**
 * @brief 糯米聚合收银台算价接口
 *
 * @param params  调起参数
 * @param completionBlock 回调
 */
+ (void)calculateBainuoPolymerPaymentPriceWithParams:(NSDictionary *)params
                                          completion:(void (^)(NSDictionary *info, NSError *error))completionBlock;

/**
 * @brief 展示糯米聚合支付收银台优惠券面板
 * @param params 展示所需参数
 * @param fromViewController 承接面板展示的vc
 * @param callback callback
 */
+ (void)showBainuoCashierCouponPannel:(NSDictionary *)params
                   fromViewController:(UIViewController *)fromViewController
                             callback:(void (^)(NSDictionary *info))callback;

/**
 * @brief 直连支付
 *
 * @param type 支付方式
 * @param orderInfo 订单信息
 * @param completion 完成回调
 */
+ (void)requestPaymentWithType:(BBASMPaymentType)type
                     orderInfo:(NSString *)orderInfo
                    completion:(void (^)(BBASMPaymentStatus status, NSDictionary *result))completion;

/**
* @brief 百度钱包直连支付时,需要请求钱包风控信息
*
* @param parameter 参数
* @param source 来源
* @param controller 当前topController
* @param completion 完成回调
*/
+ (void)requestWalletRiskInfo:(NSString *)parameter
                       source:(NSString *)source
                   controller:(UIViewController *)controller
                   completion:(void (^)(NSInteger status, NSString *message))completion;


@optional

/**
 * @brief 生成一个唯一的payID
 *
 * @param appID 小程序 or 小游戏 ID
 * @param completionBlock 完成回调
 */
+ (void)requestPayIDWithAppID:(NSString *)appID
                   completion:(void (^)(NSString *payID))completionBlock;

/**
 * @brief 向服务端发送带货分佣信息
 *
 * @param params 带货分佣信息
*/
+ (void)requestRebateInfoWithParams:(NSDictionary *)params;

/**
 * @brief 批量上传本地存储的带货信息
*/
+ (void)requestBatchRebateInfo;

@end

NS_ASSUME_NONNULL_END