ios支付宝app支付开发的简单介绍

支付宝

支付宝开发步骤:

  1. 创建应用
  2. 配置应用
  3. 设计
  4. 开发
  5. 调试
  6. 上线

创建应用

接入App支付能力,需要在开放平台创建一个应用,通过该应用来接入各种能力。

配置应用

配置应用一般分为三个部分

  • 第一部分:给应用添加相应的功能
  • 第二部分:签约
  • 第三部分:配置秘钥

这些一般都是TeamLeader和运营总监来做

设计

设计一般分为:

  • 架构设计
    架构设计一般采用支付宝推荐设计架构,附上一张图片吧


    支付宝基本设计架构
  • 安全设计
  • 采用HTTPS协议传输交易数据,防止数据被截获,解密。
  • 采用RSA非对称秘钥,明确交易双方的身份,保证交易主体的正确性和唯一性

开发

开发就先上图了,让大家了解一下支付的基本流程:

支付宝基本支付流程

了解基本流程后就要开始进行服务端和客户端的开发集成了.
后台的开发任务相比客户端相对来说繁琐一些,因为后台要做订单的订单信息的拼接和签名,将签好名的订单串给客户端,这样做是因为原则上不允许将签名放在客户端进行,不安全.
客户端的任务是调起支付宝并监听回调结果,并展示给用户支付结果.
具体的支付状态一定要以服务端的回调为准.

ios客户端配置
  • 导入支付宝SDK和bundle文件
AlipaySDK.bundle
AlipaySDK.framework
  • 集成第三方的第一个步骤导入依赖库
支付宝依赖库
  • 配置info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

<key>CFBundleURLTypes</key>
    <array>
             <!-- 支付宝 用来应用之间跳转的 -->
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLName</key>
            <string>alipay</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>DovAlipayDemo</string>
            </array>
        </dict>
    </array>

Show me the code!
导入头文件
    
#import <AlipaySDK/AlipaySDK.h>

/**
发起支付,调起支付宝应用
orderString 从后天获取的拼接好的签过名的订单串
schemes 用来进行应用跳转的schemes,支付成功或者失败跳回应用
callback 支付回调(但是我并没有发现有什么软用) 原因:【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效】
*/
[[AlipaySDK defaultService] payOrder:orderString
                          fromScheme:@"DovAlipayDemo" //这个一定要和info.plist里面配置的一样,并确保唯一性
                            callback:^(NSDictionary *resultDic) {
        //这里的回调是供网页支付使用的
        if ([[resultDic objectCheckForKey:@"resultStatus"] isEqualToString:@"9000"]) {
            //支付成功
        }
        else {
            //支付失败
        }
        
 }];

//支付接口的回调是不管用了,我们一下面的方式进行回调结果的监听

//ios 9.0 以下使用此方法进行回调监听
- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    //支付宝
    if ([url.host isEqualToString:@"safepay"]) {
       [self alipayCallbackWithUrl:url];
    }
    return YES;
}

//ios 9.0 以上使用此方法进行回调监听
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    //支付宝
    if ([url.host isEqualToString:@"safepay"]) {
       [self alipayCallbackWithUrl:url];
    }
    return YES;
    
}

- (void)alipayCallbackWithUrl:(NSURL *)url {

        //跳转支付宝钱包进行支付,处理支付结果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            
            if ([[resultDic objectForKey:@"resultStatus"] integerValue] == 9000) {
               //代表你支付成功了 
            }
            else {
                //失败了
            }
            
        }];
        
    }

调试

支付宝推出了一个沙盒测试,我们开发的时候基本没有使用,因为测试的时候使用的小金额测试.

上线

商户本身应用上线时候,也要把支付宝开放平台的应用上线.

扩展介绍

订单信息签名过程模拟(这个一定要放在服务端来做)

    //================== 生成支付订单信息 =================//
    /*
     *生成订单信息及签名
     */
    //将商品信息赋予AlixPayOrder的成员变量
    Order *order = [[Order alloc] init];
    order.partner = alipayParterID;  //合作商ID (支付宝开发平台里面)
    order.sellerID = alipaySellerID; //商家ID
    order.outTradeNO = @"78797348634858734673899"; //订单ID(由商家自行制定)
    order.subject = @"篮球"; //商品标题
    order.body = @"室内室外两用"; //商品描述
    order.totalFee = [NSString stringWithFormat:@"%.2f",100.5]; //商品价格
    order.notifyURL =  @"http://www.baidu.com"; //回调URL

    //这些值是固定值不用修改
    order.service = @"mobile.securitypay.pay";
    order.paymentType = @"1";
    order.inputCharset = @"utf-8";
    order.itBPay = @"30m";
    order.showURL = @"m.alipay.com";


    //将商品信息拼接成字符串
    NSString *orderSpec = [order description];
    NSLog(@"orderSpec = %@",orderSpec);

    //================== 签名 =================//
    //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
    id<DataSigner> signer = CreateRSADataSigner(@"私钥");
    NSString *signedString = [signer signString:orderSpec];

    //将签名成功字符串格式化为订单字符串,请严格按照该格式
    NSString *orderString = nil;
    if (signedString != nil) {
        orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
                       orderSpec, signedString, @"RSA"];

        [[AlipaySDK defaultService] payOrder:orderString fromScheme:self.scheme callback:^(NSDictionary *resultDic) {
            
        }];
    }

注意事项

  • 支付宝的签名过程一定要在服务端完成
  • 支付宝的回调以服务端的为准,客户端的只是做参考
  • 支付宝的发起支付方法附带的回调是当你没有安装支付宝app的时候,使用网页支付时候用到,安装支付宝APP后需要使用url的回调
  • 如果是Xcode 7.0之后的版本,需要添加libc++.tbd、libz.tbd;如果是Xcode7.0之前的版本,需要添加libc++.dylib、libz.dylib

参考文献

支付宝文档中心

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容