必赢亚洲手机app下载


缘何你毕业两年

上帝明日回看了你

IOS开发支付宝集成

付出准备


1.先是新建项目,然后去官网下载最新的开发包:
http://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103563&docType=1,
本来也足以用CocoaPods来下载但是用那些下载的话只会下载到单纯的客户端与网络服务请求的SDK不带有加密的那多少个代码,而略带公司是要把加密做到本地的所以接纳哪一种办法看开发者的习惯于公司须要.
2.下载后打开点击开发包可以打开更新日志来比对当前版本不要去部分非官网的位置下载SDK有可能不是流行版本会出现BUG
3.开辟客户端开发包找到IOS对应的包文件解压得到开发包,包罗三个framework文本叁个bundle文本三个Demo文件夹

相似意况下支付功用的互相流程


诸如大家去有个别APP去付出1个出品,流程为:
1.用户点击支付->
2.客户端请求服务器用户支付->
3.服务器收到请求生成金额订单等要给第贰方支付的总体消息,并生成回调参数传给客户端->
766net必赢亚洲手机版,4.客户端接收音讯(一般会再让用户确认支付或许简直购买后是生成订单,然后才是给付)并将服务器给的音信分级传入SDK须求的参数中,调用SDK的开发格局->
5.由SDK向SDK本身的服务器发出支付请求,SDK本人的服务器收到支付请求处理成功后,给客户端本身与公司的后台都发送一条支付成功的音讯,客户端与后台依据那条音讯再做处理.

针对开发环境的有的装置


支出又分为2种状态当地签名,和服务器签名,我使用正好都以商户须求当地签,服务器的作者就稍微说1点.

服务器签名:
/**
 *  支付接口
 *
 *  @param orderStr       订单信息
 *  @param schemeStr      调用支付的app注册在info.plist中的scheme
 *  @param compltionBlock 支付结果回调Block
 */
- (void)payOrder:(NSString *)orderStr
      fromScheme:(NSString *)schemeStr
        callback:(CompletionBlock)completionBlock;

服务器签名注意的是在callback:回调中要拓展验签,就是把服务器给的订单签名信息在用公钥解密,比对订单细节,检查是或不是被别人篡改,并且只倘诺wap支付,不会反回在appDelegateapplication:openURL方法.

当地签名:

先拖入落成加密的公文与模型:

766net必赢亚洲手机版 1

加密的文件.png

那时候会报错(补充有个别:
某些朋友找不到NSString恐怕有个别数据类型报错都以因为不够Foundation头文件,大概小编写的不太驾驭,有个别朋友依然不太懂)超越四分之一荒谬都是因为部分文本中在支付宝的德姆o的Pch文件中集合添加的#import <Foundation/Foundation.h>,借使我们的档次中从未这一步,那么依旧也建立pch抑或单独添加上.

此刻还会有三个谬误:

766net必赢亚洲手机版 2

路线找不到.png

专注那里的Header Search Paths 路径为空:

766net必赢亚洲手机版 3

路线为空.png

打开电脑这么些文件的所在地
双击Header Search Paths将电脑的文书拖入Header Search Paths会生成1个门道:

766net必赢亚洲手机版 4

转变的路径.png

导入一来框架:
这些最好进而德姆o2个2个往里拉长,也毫无光看网上资料首要如故看德姆o:

766net必赢亚洲手机版 5

导入框架.png

添加SDK和静态库:

766net必赢亚洲手机版 6

SDK静态库.png

报错:这么些张冠李戴与此外一种说SDK不帮忙62人比较普遍,都以把静态库只怕SDK都删了重新导入就行了

766net必赢亚洲手机版 7

谬误音信.png

到这里应该已经可以运行程序了.
如果还是出现了编译错误等问题,导入框架不全与SDK静态库的路径错误比例比较大.
建议等能够运行程序后在进行开发.

专业开发

先是大家介绍一段代码:

  NSString *orderSpec = [order description];

将货品的音讯丰富为字符串order是多个对象,而description]是将那一个目的的质量进行拼接重回二个字符串.

在介绍3个属性:

//合作商户ID。用签约支付宝账号登录ms.alipay.com后,在账户信息页面获取。
NSString *partner = @"";
//账户ID。用签约支付宝账号登录ms.alipay.com后,在账户信息页面获取。
NSString *seller = @"";
//商户私钥,自助生成
NSString *privateKey = @"";

那3个属性必须是个体或小卖部申请后才能收获的..作者用的商号的就不写上了请自行填写.

//将商品信息赋予AlixPayOrder的成员变量
    Order *order = [[Order alloc] init];
    order.partner = partner;
    order.seller = seller;
    order.tradeNO = @"G111111111111"; //订单ID(由商家自行制定)
    order.productName = @"我的测试"; //商品标题
    order.productDescription = @"我的商品描述"; //商品描述
    order.amount = @"0.01"; //商品价格
    order.notifyURL =  @"http://www.xxx.com"; //回调URL

    order.service = @"mobile.securitypay.pay";
    order.paymentType = @"1";
    order.inputCharset = @"utf-8";
    order.itBPay = @"30m";
    order.showUrl = @"m.alipay.com";

    //应用注册scheme,在AlixPayDemo-Info.plist定义URL types
    NSString *appScheme = @"alisdkdemo";

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

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


    NSString *orderString = nil;

变动加密后的字符串
注意的是NSString *appScheme = @"alisdkdemo";这几个值是从支付宝的商行地址中填入的,请保持一致.

最终处理结果:

if (signedString != nil) {
        orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
                       orderSpec, signedString, @"RSA"];

        [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {

            //结果处理,其实就是取字典里面的内容,这个取字符串然后变个模型就好了 或者直接取不便模型,方法很多.
            NSLog(@"开始确认支付状态 %@",resultDic[@"resultStatus"]);
            AlixPayResult* resultModel = [AlixPayResult itemWithDictory:resultDic];
            if (resultModel)
            {
                //状态返回9000为成功
                if (resultModel.statusCode == 9000)
                {
                    /*
                     *用公钥验证签名 严格验证请使用result.resultString与result.signString验签
                     */
                    NSLog(@"支付宝交易成功");

                    /*
                     *用公钥验证签名 严格验证请使用result.resultString与result.signString验签
                     */

                    //交易成功
                    NSString* key = AlipayPubKey;//签约帐户后获取到的支付宝公钥
                    id<DataVerifier> verifier;
                    verifier = CreateRSADataVerifier(key);

                    // 验证签名
                    if ([verifier verifyString:resultModel.resultString withSign:resultModel.signString])
                    {
                        //验证签名成功,交易结果无篡改
                        NSLog(@"验证成功");
                    }
                }
            }
            else if([resultDic[@"resultStatus"]isEqualToString:@"6001"])
            {
                               //用户取消
                NSLog(@"用户主动取消支付");
            }else
            {

            }
        }];
}

此间注意:if([resultDic[@"resultStatus"]isEqualToString:@"6001"])支付宝有BUG
这些6001
不要信,能够和商号协议下,是加个确认接口依旧自然时间内检查后台,由此可见很有或许用户付钱成功,SDK文告你用户手动撤销,这几个BUG是在弱网状态下相比多.

接下来记得在 AppDelegate中间添加如下代码:

//只要是调用手机上的支付宝客户端,在支付宝客户端操作完成返回自己的app时,都会调用这个方法,
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    //跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给SDK(这个是将支付宝客户端的支付结果传回给SDK)
    if ([url.host isEqualToString:@"safepay"]) {
        [[AlipaySDK defaultService]
         processOrderWithPaymentResult:url
         standbyCallback:^(NSDictionary *resultDic)
         {
             NSLog(@" ------result = %@",resultDic);//返回的支付结果
         }];
    }
    return YES;
}

最终记得把那里写了:

766net必赢亚洲手机版 8

URL.Types.png

NSString *appScheme = @"alisdkdemo"代码 网页上申请的
图片上这里填写的保持一致.


补充: 如若要用swift来调用支付宝SDK
最好把开发的与回调的逻辑单独创制工具类传递数据便好,从流水线上本人无太大不一样稍微注意的是在swift
AlipaySDK.h有恐怕因为语言环境难点应运而生缺乏引入类的气象,少什么补什么就好,其余也一样.

如极度欢迎留言…

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图