//
//  XFBPayApi.h
//  XFBPayApi
//
//  Created by chenwei on 15/11/17.
//  Copyright © 2015年 chenwei. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "XFBPayModel.h"

#if !__has_feature(objc_arc)
    #error "必须使用arc模式，非arc工程，在Build Phases中添加-fobjc-arc"
#endif


FOUNDATION_EXPORT NSString * const XFBSuccessFalg; /** 成功    */
FOUNDATION_EXPORT NSString * const XFBFailFalg; /** 失败    */


//-----------------------网络部分--------------------------------------
FOUNDATION_EXPORT NSString * const XFBURLErrorNotConnectedToInternet; /**< 网络连接失败    */
FOUNDATION_EXPORT NSString * const XFBURLErrorUnknown; /**< 网络未知错误    */

//-----------------------微信--------------------------------------
FOUNDATION_EXPORT NSString * const XFBErrorWxNotInstalled; /**< 微信未安装    */
FOUNDATION_EXPORT NSString * const XFBErrorWxAppNotSupported; /**< 微信不支持   */

//-----------------------支付宝--------------------------------------
FOUNDATION_EXPORT NSString * const XFBErrorPayFail;             /**< 订单支付失败  */
FOUNDATION_EXPORT NSString * const XFBErrorPayProcess;          /**< 订单正在处理中  */

FOUNDATION_EXPORT NSString * const XFBErrorPayUnknown;          /**< 支付其他错误  */
FOUNDATION_EXPORT NSString * const XFBErrorCancelled;           /**< 用户取消    */


/**
 *  操作的结果
 *
 *  @param status 状态码(00代表成功，其他代表失败)
 *  @param result 结果
 */
typedef void (^XFBCashierPayCompletion)(NSString *status, NSString *response);


@interface XFBPayApi : NSObject

/**
 *  单例方法
 *
 *  @return XFBPayApi单例
 */
+ (instancetype)defaultService;

/**
 *  版本号
 *
 *  @return         XFBPayApi SDK 版本号
 */
- (NSString *)version;

- (void)setDebugMode:(BOOL)enabled;

/**
 *  查询订单信息
 *  @param payModel         XFBPayModel对象
 *  @return                 NSDictionary  订单状态信息
 */
- (NSDictionary *)inquiryWithPayModel:(XFBPayModel *)payModel;


- (void)inquiryWithPayModel:(XFBPayModel *)payModel complete:(XFBCashierPayCompletion)block;



/**
 *  支付调用接口(支付宝/微信/快捷支付)
 *
 *  @param payModel         payModel 对象(JSON 格式字符串 payModel对象)
 *  @param scheme           URL Scheme，支付宝渠道回调需要
 *  @param completionBlock  支付结果回调 Block
 */
- (void)doPayAction:(XFBPayModel *)payModel appURLScheme:(NSString *)scheme withCompletion:(XFBCashierPayCompletion)completion;


/**
 *  回调结果接口(支付宝/微信)
 *
 *  @param url                结果url
 *  @param sourceApplication  源应用 Bundle identifier
 *  @param completionBlock    支付结果回调 Block，保证跳转支付过程中，当 app 被 kill 掉时，能通过这个接口得到支付结果
 *
 *  @return                   当无法处理 URL 或者 URL 格式不正确时，会返回 NO。
 */
- (BOOL)handleOpenURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication withCompletion:(XFBCashierPayCompletion)completion;

@end
