iOS 支付宝支付

来源:互联网 发布:sketch有没有windows版 编辑:程序博客网 时间:2024/05/19 10:07

比起微信支付来,支付宝支付就简单的多了。

同样的,我们也需要先去支付宝开放平台开通应用的支付权限,取得pid,seller,和privateKey。注意啊privateKey是很长的一串:

#define ZHI_PARTNER @"xxxxxxx"//pid
#define ZHI_SELLER @"xxxxxxxx"

#define ZHI_PRIVATEKEY @"MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAO1gIWd7eSYg0anCGkCEEQns8IiWyzrE0mhhrdpDcePsswVOdWVpogAd5Bv7IdWV1ku78aQdMq+xEFMX6ouSO/zd1/Tr85GurnSWOUHpU6+dwMDrqe+UsTjI4GX2qHkV9FPCf40hn0ICbZZ4z6W43vq+tN/J8jxfd50kqpSeb6UvAgMBAAECgYEAsuQViJVHEfL9zz+W5TQiWyaTh3yNIHcgUsX6bVkSxcCmkcM1Of5HtmrQdD3om7xWSbEURKg0gK+iK90ER7cnONCQjQQP5WlFWDd5dr8sOI7090llNIdliM1L2ukSadek6gKIviREmaLY2UhjoQfSRcR7QbD4u879ZzI2AdmrkaECQQD8+vlTmQe5DGErrKNdocGlSfgcbTjmCdTVjVKpKoGotaz9u69SxroQNeH/3vg5LmZKgWX93m5sMHmaYzYUKWUJAkEA8DV5IUJIukVRvtyIhiTaiaYd0A22YOUHR8GKGP/vw/9wQRNvm29FOFV6D7HsEDO1IAfHuyrdqC1IrMMFLs2+dwJBAJUay4dFQ/MCY+dc+nC+XScxwMXobkfPdZ1kjVrdjcxFQC/QxlYwgQv65jhsT7tMKMgzGk0WI9kqfRHM9dvORhkCQAfcqC9HfRvjou5NR4akdCanMjiaCksXk+psUjnJPq66kJEAstlyheB3I7yZxTEukBIRTx84IvMbMFK/O08x2rcCQGuPSVIu6IWnZjxs4jWAH4AAWVdc4NEyG3fuQZHAoxJvTsrsPRATDv63vTZSo。。。。。。此处省略"


然后在工程里导入支付宝的库文件


同时,在build phrase里面添加系统库文件,这个文档里面有,我就不写了。


接着去target---info里面添加url types。

剩下的就是写代码了,特简单的几句话,

           Order *order = [[Order alloc] init];
            order.partner = ZHI_PARTNER;//必填
            order.seller = ZHI_SELLER;//必填
            order.tradeNO = self.orderID; //订单ID(由商家自行制定)
            order.productName = infoDict[@"data"][@"productName"]; //商品标题,服务器返回
            order.productDescription = infoDict[@"data"][@"productName"]; //商品描述,服务器返回
            order.amount = [NSString stringWithFormat:@"%@",infoDict[@"data"][@"amount"]]; //商品价格,服务器返回
            order.notifyURL =  infoDict[@"data"][@"notifyURL"]; //回调URL,服务器返回
            
            order.service = @"mobile.securitypay.pay";//接口名称,固定值
            order.paymentType = @"1";
            order.inputCharset = @"utf-8";
            order.itBPay = @"30m";
            
            //应用注册scheme,在AlixPayDemo-Info.plist定义URL types
            NSString *appScheme = @"alisdk";
            
            //将商品信息拼接成字符串
            NSString *orderSpec = [order description];
            NSLog(@"orderSpec = %@",orderSpec);
            
            //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
            id<DataSigner> signer = CreateRSADataSigner(ZHI_PRIVATEKEY);
            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:appScheme callback:^(NSDictionary *resultDic) {//支付宝的回调
                    NSLog(@"reslut = %@",resultDic);
                    if ([resultDic[@"resultStatus"] integerValue] == 9000) {
                        if (SHAREDAPP.paySuBlock) {//前一个页面刷新
                            SHAREDAPP.paySuBlock();
                        }
                        self.hadPayed = YES;
                        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示信息" message:@"支付成功" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
                        [alert show];
                    }else{
                        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示信息" message:@"支付失败" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
                        [alert show];
                    }

                }];
            }

        }
    };

这样就完成了






0 0