iOS支付技术支付宝奔跑吧 iOS

支付宝支付——统一wap和支付宝钱包回调

2016-10-15  本文已影响1504人  gitKong

一、前言

/**
 *  处理钱包或者独立快捷app支付跳回商户app携带的支付结果Url
 *
 *  @param resultUrl        支付结果url
 *  @param completionBlock  支付结果回调
 */
- (void)processOrderWithPaymentResult:(NSURL *)resultUrl
                      standbyCallback:(CompletionBlock)completionBlock;

/**
 *  支付接口
 *
 *  @param orderStr       订单信息
 *  @param schemeStr      调用支付的app注册在info.plist中的scheme
 *  @param compltionBlock 支付结果回调Block,用于wap支付结果回调(非跳转钱包支付)
 */
- (void)payOrder:(NSString *)orderStr
      fromScheme:(NSString *)schemeStr
        callback:(CompletionBlock)completionBlock;

二、问题

三、解决方案

四、上代码😁,这里只给出API,完整在这 gitHub地址

统一回调,需要手动实现,支付后就在此回调

/**
 *  @author 孔凡列, 16-09-21 08:09:06
 *
 *  统一支付宝的回调,支付后可以实现回调
 */
@property (nonatomic,copy)FLAlipayCallback fl_callback;

单例模式,保证项目中唯一

+ (instancetype)shareManager;

支付宝授权,需要在AppDelegate中实现,详情请看Demo

/**
 *  @author 孔凡列, 16-09-21 08:09:06
 *
 *  支付宝授权支付-AppDelegate中实现
 */
- (void)fl_alipayWithUrl:(NSURL *)url;

发起支付宝支付,需要订单信息以及appScheme(就是在info中配置的),详情请看Demo

/**
 *  @author 孔凡列, 16-09-21 08:09:06
 *
 *  发起支付,任意地方
 */
- (void)fl_alipayWithOrderStr:(NSString *)orderStr appScheme:(NSString *)appScheme;

添加新方法:发起支付,带支付完毕回调(2016.11.29更新)

/**
 *  @author 孔凡列
 *
 *  发起支付,带支付后回调
 */
- (void)fl_alipayWithOrderStr:(NSString *)orderStr appScheme:(NSString *)appScheme callBack:(FLAlipayCallback)callBack;

五、调用

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    if ([url.host isEqualToString:@"safepay"]) {
        // 支付跳转支付宝钱包进行支付,处理支付结果
        return [self aliPay:url];
    }
    return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    if ([url.host isEqualToString:@"safepay"]) {
        // 支付跳转支付宝钱包进行支付,处理支付结果
        return [self aliPay:url];
    }
    return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options{
    if ([url.host isEqualToString:@"safepay"]) {
        // 支付跳转支付宝钱包进行支付,处理支付结果
        return [self aliPay:url];
    }
    return YES;
}

- (BOOL)aliPay:(NSURL *)url{
    // 支付跳转支付宝钱包进行支付,处理支付结果
    
    [[FLAlipayManager shareManager] fl_alipayWithUrl:url];
    
    return YES;
}
NSString *orderString = @"订单信息(签名后)";
    NSString *appScheme = @"FLAlipayDemo";
    /**
     *  @author 孔凡列, 16-09-21 08:09:06
     *
     *  发起支付
     */
    [[FLAlipayManager shareManager] fl_alipayWithOrderStr:orderString appScheme:appScheme];
    
    /**
     *  @author 孔凡列, 16-09-21 08:09:06
     *
     *  支付回调
     */
    [FLAlipayManager shareManager].fl_callback = ^(NSDictionary *result){
        if ([result[@"resultStatus"] isEqualToString:@"9000"]){
            NSLog(@"支付成功");
        }
        else{
            NSLog(@"支付失败");
        }
    };

六、总结

上一篇下一篇

猜你喜欢

热点阅读