iOS进阶移动开发iOS开发

微信和支付宝支付-看我的,用我的就够了

2016-11-30  本文已影响15957人  gitKong

一、前言

二、支付宝和微信API分析

三、集成

四、封装 API

1、单例模式,项目中唯一,方便统一管理

/**
 *  @author gitKong
 *
 *  单例管理
 */
+ (instancetype)shareManager;

2、处理回调url,需要在AppDelegate中实现

/**
 *  @author gitKong
 *
 *  处理跳转url,回到应用,需要在delegate中实现
 */
- (BOOL)fl_handleUrl:(NSURL *)url;

3、注册app,需要在 didFinishLaunchingWithOptions 中调用,绑定URL Scheme

/**
 *  @author gitKong
 *
 *  注册App,需要在 didFinishLaunchingWithOptions 中调用
 */
- (void)fl_registerApp;

4、发起支付,传入订单参数类型是id,传入如果是字符串,则对应是跳转支付宝支付;如果传入PayReq 对象,这跳转微信支付,注意,不能传入空字符串或者nil,内部有对应断言;统一了回调,不管是支付宝的wap 还是 app,或者是微信支付,都是通过这个block回调,回调状态码都有对应的状态信息

/**
 *  @author gitKong
 *
 *  发起支付
 *
 * @param orderMessage 传入订单信息,如果是字符串,则对应是跳转支付宝支付;如果传入PayReq 对象,这跳转微信支付,注意,不能传入空字符串或者nil
 * @param callBack     回调,有返回状态信息
 */
- (void)fl_payWithOrderMessage:(id)orderMessage callBack:(FLCompleteCallBack)callBack;

五、用法(基于SDK集成后)

1、在AppDelegate处理回调,一般只需要实现后面两个方法即可,为了避免不必要的麻烦,最好三个都写上

/**
 *  @author gitKong
 *
 *  最老的版本,最好也写上
 */
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    
    return [FLPAYMANAGER fl_handleUrl:url];
}

/**
 *  @author gitKong
 *
 *  iOS 9.0 之前 会调用
 */
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    
    return [FLPAYMANAGER fl_handleUrl:url];
}

/**
 *  @author gitKong
 *
 *  iOS 9.0 以上(包括iOS9.0)
 */
- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options{
    
    return [FLPAYMANAGER fl_handleUrl:url];
}

2、在didFinishLaunchingWithOptions中注册 app,内部绑定根据Info中对应的Url Types 绑定 URL Scheme

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    // 注册app
    [FLPAYMANAGER fl_registerApp];
    return YES;
}

3、发起支付

NSString *orderMessage = @"Demo 中 有 可测试的 订单信息";
[FLPAYMANAGER fl_payWithOrderMessage:orderMessage callBack:^(FLErrCode errCode, NSString *errStr) {
   NSLog(@"errCode = %zd,errStr = %@",errCode,errStr);
}];
//调起微信支付
 PayReq* req             = [[PayReq alloc] init];
 req.partnerId           = [dict objectForKey:@"partnerid"];
 req.prepayId            = [dict objectForKey:@"prepayid"];
 req.nonceStr            = [dict objectForKey:@"noncestr"];
 req.timeStamp           = stamp.intValue;
 req.package             = [dict objectForKey:@"package"];
 req.sign                = [dict objectForKey:@"sign"];
                
 [FLPAYMANAGER fl_payWithOrderMessage:req callBack:^(FLErrCode errCode, NSString *errStr) {
     NSLog(@"errCode = %zd,errStr = %@",errCode,errStr);
 }];

六、此工具的优点

七、注意点:

八、总结

上一篇下一篇

猜你喜欢

热点阅读