支付宝sdk使用

支付宝app调用

1 支付宝调用遇到的问题:(私钥和公钥)

公钥: 是交给你的服务端和支付宝开放平台上面的

私钥: 是app启动支付宝支付的时候提交的钥匙,确保和支付宝平台上面的公钥是一对应

生成:需要下载支付宝的SKD,然后打开进入目录openssl下面的bin文件夹里面然后打开终端 进入该目录下面,然后输入命令// 生成私钥 

生成私钥:openssl genrsa -out privatekey.key 1024 (privately.key 是生成的文件,后缀是key)接着命令:openssl pkcs8 -topk8 -inform PEM -in privatekey.key -outform PEM -nocrypt(确定后在终端上面会有一大串字符,这个字符就是项目中运用的私钥)// 

生成公钥 对应公钥:openssl rsa -in privatekey.key -pubout -out pubkey.key (这个pubkey.key文件就是公钥,如果不能打开,修改后缀为text,公钥还要交给服务端,服务端和支付宝还要进行订单状态的查询还有支付结果的通知)公钥和私钥的生成后就开始上代码1 在info.plist文件中 NSAppTransportSecurity选项下面只有一个bool参数 NSAllowsArbitraryLoads YES (这样子是为了ios9的https的请求方式)

2 在项目中要倒入demo中的Alipay文件夹下面的内容(这个是你请求过程中需要的参数,里面的Order文件就是清单的详细内容,里面包含所有的订单内容,其中的订单号是调用服务端接口的返回值)

 下面是方法外加参数 

// 密钥 NSString* privateKey = PRIVATEKEY;

 // 支付宝支付 Order* order = [[Order alloc]init]; 

 // 合作者id order.partner = PID;

 // 卖家账号 order.seller = @"piaojiaowang@163.com";

 // 订单号 order.tradeNO = @"4"; 

 // 产品名称 order.productName = @"票交网1"; 

 // 产品描述 order.productDescription = @"票据信息";

 // 产品价格 order.amount = [NSString stringWithFormat:@"0.1"]; 

 // 回调的url order.notifyURL = @"www.piaojiaowang.com.cn";

// 支付的方式 order.service = @"mobile.securitypay.pay"; 

 // 支付类型。默认值为:1(商 品购买) order.paymentType = @"1"; 

 // 商户网站使用的编码格式,固 定为 utf-8 order.inputCharset = @"utf-8";

 // 未付款交 易的超时 时间 order.itBPay = @"30m"; // 应用注册scheme,在AlixPayDemo-Info.plist定义URL types NSString *appScheme = @"piaojiaowangAlipayDemo"; 

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

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

        NSString *signedString = [signer signString:orderSpec];

    //将签名成功字符串格式化为订单字符串,请严格按照该格式

        NSString *orderString = nil;

        if (signedString != nil) {

            orderString = [NSStringstringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",

                          orderSpec, signedString, @"RSA"];

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

            //【callback 处理支付结果】

                NSLog(@"reslut = %@",resultDic);

                if ([[resultDic objectForKey:@"resultStatus"] intValue] == 9000) {

                    NSLog(@"支付完成");

                    hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];

                    hud.mode = MBProgressHUDModeText;

                    hud.labelText = @"支付完成";

                    [hud hide:YES afterDelay:2];

                }else if ([[resultDic objectForKeyedSubscript:@"resultStatus"] intValue] == 4000){

                    NSLog(@"订单支付失败");

                    hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];

                    hud.mode = MBProgressHUDModeText;

                    hud.labelText = @"支付失败";

                    [hud hide:YES afterDelay:2];

                }else{

                    NSLog(@"网络连接出错");

                    hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];

                    hud.mode = MBProgressHUDModeText;

                    hud.labelText = @"网络连接出错";

                    [hud hide:YES afterDelay:2];

                }

            }];

        }

3  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) {

//【由于在跳转支付宝客户端支付的过程中,商户 app 在后台很可能被系统 kill 了,所以 pay 接口的 callback 就会失效,请商户对 standbyCallback 返回的回调结果进行处理,就是在这个方法里面处理跟 callback 一样的逻辑】


            NSLog(@"result == %@",resultDic);

        }];

    }

// 网页支付   

    if ([url.host isEqualToString:@"platformapi"]) {

        [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary*resultDic) {

            //【由于在跳转支付宝客户端支付的过程中,商户 app 在后台很可能被系统 kill 了, 所以 pay 接口的 callback 就会失效,请商户对 standbyCallback 返回的回调结果进行处理,就是在这个方法里面处理跟 callback 一样的逻辑】

            NSLog(@"result = %@",resultDic);

        }];

    }

    return [UMSocialSnsService handleOpenURL:url];

}

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

推荐阅读更多精彩内容