美文网首页
ios 支付宝支付集成

ios 支付宝支付集成

作者: 爱迪生的小跟班 | 来源:发表于2018-11-15 17:48 被阅读0次

客户端集成支付宝、微信支付,所限还是需要后台的配合,后台做一些逻辑数据处理,客户端只需要进行第三方集成、授权、调起支付接口就行了,其实从客户端来讲还是比较简单的。先讲讲支付宝支付的集成,后续再讲微信支付。

1、注册支付宝开发者账号、创建应用 https://openhome.alipay.com/ (这一步就不细讲了,使用第三方不备步骤)。

创建应用后,需要授权应用支持的功能:支付、登录等功能。

2、从官网上下载SDK,并导入到工程中

下载SDK解压后如下文件:


导入SDK文件.png

将上面文件拖入工程后,下一步添加依赖库:


添加依赖库.png

3、写个单例类,实现支付宝支付功能,方便APP中各个地方的调用

创建HCAlipayManager 类:

.h文件:
#import <AlipaySDK/AlipaySDK.h>

NS_ASSUME_NONNULL_BEGIN

@interface HCAlipayManager : NSObject

//生成支付宝单例类
+(id)sharePayManager;

//支付宝支付
//aParam 后端返回支付信息
-(void)handleOrderPayWithParams:(NSString *)aParam;

@end

NS_ASSUME_NONNULL_END

.m文件:

@implementation HCAlipayManager

+ (id)sharePayManager{
    static HCAlipayManager *asAlixPay = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        asAlixPay = [[HCAlipayManager alloc] init];
    });
    return asAlixPay;
}

/**
 支付宝支付

 @param aParam <#aParam description#>
 */
- (void)handleOrderPayWithParams:(NSString *)aParam{
    NSLog(@"aParm = %@",aParam);
    NSString *appScheme = @"alipayredpag";//appScheme是你在项目中添加的URL Type(别写错)
    NSString *orderString = aParam;//aParam[@"payInfo"];
    
    
    // NOTE: 调用支付结果开始支付
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        NSLog(@"reslut = %@",resultDic);
        int statusCode = [resultDic[@"resultStatus"]  intValue];
        
        if (statusCode == 9000){
            //订单支付
            [[HCToast shareInstance] showToast:@"支付成功"];
            [[NSNotificationCenter defaultCenter] postNotificationName:@"alipay_paySuccess" object:nil];
            
        }else{
            //交易失败
            // [[NSNotificationCenter defaultCenter] postNotificationName:@"PAY_STATUS" object:@"0"];
            [[HCToast shareInstance] showToast:@"支付异常"];
        }
    }];
}
@end

4、支付成功后跳转

在AppDelegate.m中写拦截跳转协议:

#pragma mark - openURL Delegate
///ios9.0之后实现该方法
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:
    //支付宝支付跳转
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"支付宝支付跳转 result = %@",resultDic);
            int statusCode = [resultDic[@"resultStatus"]  intValue];
            
            if (statusCode == 9000){
                //订单支付
                [[HCToast shareInstance] showToast:@"支付成功"];
                [[NSNotificationCenter defaultCenter] postNotificationName:@"alipay_paySuccess" object:nil];
                
            }else{
                //交易失败
                // [[NSNotificationCenter defaultCenter] postNotificationName:@"PAY_STATUS" object:@"0"];
                [[HCToast shareInstance] showToast:@"支付异常"];
            }
        }];
    }
    
    
    return YES;
}

///ios9.0之前实现该方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    
    //支付宝支付跳转
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"支付宝支付跳转 result = %@",resultDic);
            int statusCode = [resultDic[@"resultStatus"]  intValue];
            
            if (statusCode == 9000){
                //订单支付
                [[HCToast shareInstance] showToast:@"支付成功"];
                [[NSNotificationCenter defaultCenter] postNotificationName:@"alipay_paySuccess" object:nil];
                
            }else{
                //交易失败
                // [[NSNotificationCenter defaultCenter] postNotificationName:@"PAY_STATUS" object:@"0"];
                [[HCToast shareInstance] showToast:@"支付异常"];
            }
        }];
    }
    
    return YES;
}

///ios9.0之前实现该方法
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{

    //支付宝支付跳转
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"支付宝支付跳转 result = %@",resultDic);
            int statusCode = [resultDic[@"resultStatus"]  intValue];
            
            if (statusCode == 9000){
                //订单支付
                [[HCToast shareInstance] showToast:@"支付成功"];
                [[NSNotificationCenter defaultCenter] postNotificationName:@"alipay_paySuccess" object:nil];
                
            }else{
                //交易失败
                // [[NSNotificationCenter defaultCenter] postNotificationName:@"PAY_STATUS" object:@"0"];
                [[HCToast shareInstance] showToast:@"支付异常"];
            }
        }];
    }
    
    return YES;
}

5、在需要支付的地方,调用支付方法

///调起支付宝支付
- (void)doAlipayWithParams:(NSString *)params{
    NSLog(@"支付宝支付信息:%@",params);
    ///没错,只需要调用单例方法 一句话搞定。但是需要注意,params:一般是后台给你的支付所需的信息,拼接成字符串传给支付宝就可以了。
    [[HCAlipayManager sharePayManager] handleOrderPayWithParams:params];
}

结束了,感谢阅读~

相关文章

  • iOS Alipay -支付宝

    iOS 集成Alipay -支付宝支付 集成 AliPay - 支付宝

  • 支付宝支付流程(I)

    参考资料:支付宝支付集成支付宝支付集成实现蚂蚁金服iOS支付集成

  • ios支付宝签名

    支付宝: iOS 支付功能概述 - 简书 1.iOS集成支付宝 - 简书 2.iOS 集成支付宝 - 简书 3.i...

  • 文章汇总

    ios iOS 网络篇 网络基础总结 支付宝集成 iOS支付宝支付集成 - demo例子集 - 博客园 理解 iO...

  • ## [iOS 支付宝支付]

    [iOS开发系列-支付宝支付] 概述 开发中支付通常都会集成支付宝支付,下面讲解支付宝的整体流程。 集成支付宝支付...

  • iOS支付宝功能集成

    iOS快速集成支付宝详解/支付宝集成获取私钥与公钥 在集成支付宝功能前,我们必须了解下什么支付宝流程,下图是支付宝...

  • iOS集成支付宝-Swift版

    iOS集成支付宝-Swift版 如果要了解整个支付流程可以阅读文章《手机App集成微信支付&支付宝-iOS&And...

  • 集成支付、第三方登录知识总结

    1、玩转iOS开发:集成 WeChat SDK - 支付篇2、玩转iOS开发:集成 AliPay - 支付宝

  • iOS&Android集成支付宝-server篇(PHP

    iOS&Android集成支付宝-server篇(PHP) 在上一篇文章《iOS集成支付宝-Swift版》中,我介...

  • iOS 支付宝集成流程

    iOS 集成支付宝支付 SDK下载 集成支付宝首先是去官网下载SDK https://doc.open.alipa...

网友评论

      本文标题:ios 支付宝支付集成

      本文链接:https://www.haomeiwen.com/subject/onzyfqtx.html