zoukankan      html  css  js  c++  java
  • IOS 第三方支付的使用:支付宝

     本文转载至 http://blog.csdn.net/u014011807/article/details/47726799

    总结一下支付宝iOS使用步骤:

    1 第三方支付:支付宝

    使用过程:

    1.1  向支付宝申请支付宝使用权限。

    这个步骤一般是以公司的名义,填写各种公司信息,最后审核通过。

    1.2 获取关键参数

    selleder_ID

    parter_ID

    加密信息

    1.3  下载支付宝集成SDK(无线移动版)放到我们的应用中

    1.4 开始编写代码

    1.4.1 编辑商品信息

        AlixPayOrder *order = [[AlixPayOrder alloc] init];

        order.productName = 商品名称;

        order.productDescription = 商品描述;

        order.partner = 合作者身份ID;

        order.seller = 卖家支付宝账号;(卖家唯一标示)

       order.amount = 支付金额;

    1.4.2 订单信息加密

    首先利用商户私钥生成一个对象,然后用这个对象加密订单信息。

        id<DataSigner>signer = CreateRSADataSigner(商户私钥);

    NSString *signedString = [signer signString:[order description]];

    1.4.3 组合订单信息

        NSString *orderString = [NSString stringWithFormat:@"%@&sign="%@"&sign_type="%@"",

                                 [order description], signedString, @"RSA"];

    1.4.4 开始进行订单支付

    参数1 订单信息

    参数2 网页支付 回调APPscheme

    参数3 回调方法

    参数4 回调对象

    [AlixLibService payOrder:orderString AndScheme:@"tuangou" seletor:@selector(getResult:)target:self];

    1.4.5 支付完成处理

    支付完成处理分为两种情况,一种是网页支付处理,一种是客户端支付处理

    如果是客户端版:(意思就是从支付宝的客户端跳转回这个App)

    在AppDelegate中使用回调方法:

    - (BOOL)application:(UIApplication*)application openURL:(NSURL *)urlsourceApplication:(NSString*)sourceApplication annotation:(id)annotation

    在这里处理相应的逻辑:

    支付结果验证逻辑可以参考支付宝的SDKdemo,基本不用修改神马。

    AlixPayResult * result = nil;

        if (url != nil && [[urlhost] compare:@"safepay"] == 0) {

            NSString * query = [[url query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    #if ! __has_feature(objc_arc)

            result = [[[AlixPayResultalloc] initWithString:query] autorelease];

    #else

            result = [[AlixPayResult alloc] initWithString:query];

    #endif

        }

       

        if (result.statusCode == 9000) {

            将支付时候的私钥与现在的公钥进行配对。

            id<DataVerifier> verifier = CreateRSADataVerifier(AlipayPubKey);

            if ([verifier verifyString:result.resultString withSign:result.signString]) {

                 验证信息有效           

            } else { // 失败

           

            }

        } else {

            // 失败

           

        }

        return  YES;

    如果是网页版 回调方法参考1.4.4. 这里就不多说了。处理逻辑参考上面的代码。有一点需要注意:URL Scheme:

    Target info中添加这个Scheme

  • 相关阅读:
    除去String字符串里面指定的字符串
    JSON总结(java篇)
    关于tomcat文件下载配置
    在多行列表中id同名的<a>标签点击事件处理方法
    java Properties异常:Malformed uxxxx encoding.
    关于An association from the table refers to an unmapped class
    Java实现Mysql数据库自动备份
    Could not publish server configuration for Tomcat v6.0 Server at localhost.
    MySQL备份命令mysqldump参数说明与示例
    图解 | 原来这就是网络
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/5526813.html
Copyright © 2011-2022 走看看