美文网首页iOS技术交流收藏
ios支付宝支付集成及实现

ios支付宝支付集成及实现

作者: _Luyouli | 来源:发表于2017-09-26 10:50 被阅读1172次

许久未写博客,趁着这段时间项目比较轻松来写写。最近的项目的遇到了第三方支付,有支付宝支付、微信支付,这里我先写一下支付宝支付的集成和使用,可以给小白们一些帮助。具体的集成流程在官方文档中都有,可以前去参考。

第一步集成

支付宝的集成比较简单,首先进入蚂蚁金服开放平台,注册好开发者账号,然后创建应用

选择自用型应用

在创建应用后会进行完善应用信息,如果要使用支付功能必须要进行签约,签约的话会审核商家也就是应用内支付的收款方的相关信息,只有用过了审核才能使用支付功能。关于签约我们就不细说了,直接先说集成。
步骤1:启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下,并导入到项目工程中。
AlipaySDK.bundleAlipaySDK.framework
在Build Phases选项卡的Link Binary With Libraries中,增加以下依赖:


在导入依赖库后集成就基本完成了。
作为移动端在支付上做的事其实很少,具体的如公钥密钥的配置,商品信息的配置还有价格计算等等都是放在商户服务端完成,从安全的角度来说在移动端代码中是不允许进行商品加密的。所以这交给后台人员就好了,他们处理后我们直接调用支付接口获取组装和签名后的请求串orderString,将获取到的orderString直接传入调用启动支付宝的的SDK中。

第二步使用

首先在Appdelegate中写下以下方法

- (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);
        }];
    }
    return YES;
}

// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
    }
    return YES;
}

在使用支付宝支付前,先写一个支付单列,方便在各个地方调用支付,当然也有其他方式,我这里使用的是单列。
1.首先创建支付单列
在.m文件中

/**
 *  支付单例管理类
 */
+(id)sharePayManager
{
    static SYPayManager *asAlixPay = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        asAlixPay = [[SYPayManager alloc] init];
    });
   

支付宝支付方法

/**
 *  支付宝支付
 */
-(void)handleOrderPayWithParams:(NSDictionary *)aParam
{
 
    
    NSLog(@"aParm = %@",aParam);
    NSString *appScheme = @"alisdkofshuyinHotel";
    NSString *orderString = aParam[@"payInfo"];
    
    
    // NOTE: 调用支付结果开始支付
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        NSLog(@"reslut = %@",resultDic);
        int statusCode = [resultDic[@"resultStatus"]  intValue];
        
        if (statusCode == 9000)
        {
            //订单支付
            [MBProgressHUD showText:@"支付成功"];
            [[NSNotificationCenter defaultCenter] postNotificationName:@"paySuccess" object:nil];
            
        }
        else
        {
            //交易失败
           // [[NSNotificationCenter defaultCenter] postNotificationName:@"PAY_STATUS" object:@"0"];
            [MBProgressHUD showText:@"支付异常"];
        }

        
    }];
}

在.h文件里面

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


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

记得先引用头文件
#import <AlipaySDK/AlipaySDK.h>

单列写好后,在需要支付的地方调用单列就可以了。我这里采用的是字典,在用的地方将从服务端请求下来支付商品信息orderString装入字典,appScheme是在开发平台中得到的。得到这两个后传入调用支付宝的方法中。

 NSString *appScheme = @"alisdkofshuyinHotel";
   NSString *orderString = aParam[@"payInfo"];

调用支付宝

 // NOTE: 调用支付结果开始支付
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        NSLog(@"reslut = %@",resultDic);
        int statusCode = [resultDic[@"resultStatus"]  intValue];
        
        if (statusCode == 9000)
        {
            //订单支付
            [MBProgressHUD showText:@"支付成功"];
            [[NSNotificationCenter defaultCenter] postNotificationName:@"paySuccess" object:nil];
            
        }
        else
        {
            //交易失败
           // [[NSNotificationCenter defaultCenter] postNotificationName:@"PAY_STATUS" object:@"0"];
            [MBProgressHUD showText:@"支付异常"];
        }

        
    }];

在使用单列的地方如下写
[[SYPayManager sharePayManager]handleOrderPayWithParams:responseObject[@"data"]];
以上基本就是移动端所需要做的事了。麻烦的事情都交给服务端去做了,我们简单调用接口就好了,所以支付还是比较简单的。微信支付其实也差不多,有空再写微信支付。

相关文章

  • 支付宝支付流程(I)

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

  • iOS Alipay -支付宝

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

  • ios-支付集成

    iOS开发之第三方支付支付宝支付教程,史上最新最全第三方支付宝支付方式实现、支付宝集成教程,支付宝实现流程 iOS...

  • ios支付宝签名

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

  • 转IOS集成到支付宝的步骤及问题

    转IOS集成到支付宝的步骤及问题 一,在支付宝开放平台下载支付宝SDK(https://openhome.alip...

  • 文章汇总

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

  • ## [iOS 支付宝支付]

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

  • iOS支付宝功能集成

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

  • iOS集成支付宝-Swift版

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

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

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

网友评论

    本文标题:ios支付宝支付集成及实现

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