调用支付宝及注意事项
2016-01-11 19:16
411 查看
首先先导入依赖库,然后把AlipaySDK拖入到工程中,这时候会出现很多的错误,但是这不忙,一步一步来;
在Pch文件里面先引入两个头文件
当然,PCH怎么时候就不在描述了,因为在支付宝DEMO里面市导入了头文件的,然后把对应的文件加入到工程中,如下所示:
小心点,别忽略了libcrypto.a和libssl.a这两个文件,我就在这里载了一次,如果没有这两个文件汇报很多错的,所以小心点,点击触发,如果报错了,首先检查有没有这两个文件;下面是我出现的错误:
把原来的表视图去除掉,因为在使用支付宝的时候并不是表格形式的区支付,
在导入文件的时候,可能会报错找不到文件之类的问题,那么就去Build Settings里面设置;设置好路径,路径不正确就找不到文件
产生随机订单号:
就到这里吧,结束了,小伙伴们,一起努力吧!!!!!
在Pch文件里面先引入两个头文件
#import <UIKit/UIKit.h> #import <Foundation/Foundation.h>
当然,PCH怎么时候就不在描述了,因为在支付宝DEMO里面市导入了头文件的,然后把对应的文件加入到工程中,如下所示:
小心点,别忽略了libcrypto.a和libssl.a这两个文件,我就在这里载了一次,如果没有这两个文件汇报很多错的,所以小心点,点击触发,如果报错了,首先检查有没有这两个文件;下面是我出现的错误:
把原来的表视图去除掉,因为在使用支付宝的时候并不是表格形式的区支付,
在导入文件的时候,可能会报错找不到文件之类的问题,那么就去Build Settings里面设置;设置好路径,路径不正确就找不到文件
下面是代码实现:自己看吧,很简单的,拿过来直接用, ![代码](http://img.blog.csdn.net/20160111191512496) #pragma mark ==============点击订单支付行为============== - (void)CreateProduct { /* *商户的唯一的parnter和seller。 *签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。 */ /*=======================需要填写商户app申请的===================================*/ NSString *partner = @"申请的编号"; NSString *seller = @"收款账号"; NSString *privateKey = @"密钥"; /*============================================================================*/ if ([partner length] == 0 || [seller length] == 0 || [privateKey length] == 0) { UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"缺少partner或者seller或者私钥。" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]; [alert addAction:action]; [self presentViewController:alert animated:YES completion:nil]; return; } /* *生成订单信息及签名 */ //将商品信息赋予AlixPayOrder的成员变量 Order *order = [[Order alloc] init]; order.partner = partner; order.seller = seller; order.tradeNO = [self generateTradeNO]; //订单ID(由商家自行制定) order.productName = @"预付薪资"; //商品标题 order.productDescription = PlanMessageDic[@"Table"][0][@"PayRecordStytleText"]; //商品描述 order.amount = [NSString stringWithFormat:@"%.2f",[PlanMessageDic[@"Table"][0][@"Amount"] floatValue]]; //商品价格 order.notifyURL = @"http://BmFinance.93966.net:1063/UserYBmFinanceWeb/Alipay/notify_url.aspx"; //回调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; if (signedString != nil) { orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"", orderSpec, signedString, @"RSA"]; [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) { NSLog(@"reslut = %@",resultDic); }]; } }
产生随机订单号:
- (NSString *)generateTradeNO { static int kNumber = 15; NSString *sourceStr = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; NSMutableString *resultStr = [[NSMutableString alloc] init]; srand(time(0)); for (int i = 0; i < kNumber; i++) { unsigned index = rand() % [sourceStr length]; NSString *oneStr = [sourceStr substringWithRange:NSMakeRange(index, 1)]; [resultStr appendString:oneStr]; } return resultStr; }
就到这里吧,结束了,小伙伴们,一起努力吧!!!!!
相关文章推荐
- 为什么要设置Java环境变量
- 在Mac OS上安装Java以及配置环境变量的基本方法
- Unable to create project from archetype [org.apache.maven.archetypes:maven-archetype-quickstart:1.1]
- Docker系列之(一):10分钟玩转Docker(转)
- javaweb学习总结(四十六)——Filter(过滤器)常见应用
- 声音中正弦波的提取--sinusoidal model
- Android 布局Layout 性能优化<8>
- 约瑟夫环Joeph
- 唐纳德·霍尔《第三者》(节选)
- Redis系列之(一):10分钟玩转Redis(转)
- 为什么你应该先成为全栈工程师
- 特征检测器 FeatureDetector
- 重装MySQL,对于MySQL Service无法启动服务的解决方法
- 基元检测 Primitive Detection
- 数据库_基础知识_SQL中遍历一张表的每条记录并对每条记录执行相应操作的一种方法
- System.gc和System.runFinalization区别
- 1327-Undeclared variable:amount
- Redis系列之(二):Redis主从同步,读写分离(转)
- make: 警告:检测到时钟错误。您的创建可能是不完整的
- 根据第三方接口发短信