博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
支付宝支付
阅读量:6948 次
发布时间:2019-06-27

本文共 4639 字,大约阅读时间需要 15 分钟。

hot3.png

1. 环境配置 

1). 从支付宝官网下载demo,新建文件夹“AliSDK”。把demo中的下列文件(AlipaySDK.bundle AlipaySDK.framework  openssl   Util   Order.h   Order.m   libcrypto.a libssl.a)复制到“AliSDK”文件中。

2). 新建一个工程,把AliSDK 添加到工程内。

3). 新建pch文件并添加如下信息。

181155_lpDz_2763686.png

4). 添加pch文件路径

181645_7nOQ_2763686.png

5). 添加依赖库

181955_2bWO_2763686.png

6). 添加openssl路径182139_gHec_2763686.png

到此为止  编译运行  没问题   开始敲代码

二.  编写代码

在ViewController.m中

#import "ViewController.h"#import "Order.h"#import 
#import "DataSigner.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIButton*button=[UIButton buttonWithType:UIButtonTypeCustom]; button.frame=CGRectMake(100, 200, 200, 50); button.backgroundColor=[UIColor lightGrayColor]; [button setTitle:@"支付宝支付" forState:UIControlStateNormal]; [button addTarget:self action:@selector(btClick:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; }-(void)btClick:(id)sender{/* *商户的唯一的parnter和seller。 *签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。 */ /*============================================================================*/ /*=======================需要填写商户app申请的===================================*/ /*============================================================================*/ NSString*partner=@"000000000000";//合作商户ID NSString*seller=@"";//支付宝账户 NSString*privateKey=@"";//PKCS8格式的私钥 /*============================================================================*/ /*============================================================================*/ /*============================================================================*/ //partner和seller获取失败,提示 if (partner.length==0||seller.length==0||privateKey.length==0) { UIAlertController*alertController=[UIAlertController alertControllerWithTitle:@"提示" message:@"缺少partner或者seller或者私钥" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction*sureAction=[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]; [alertController addAction:sureAction]; [self presentViewController:alertController animated:NO completion:nil]; } /* *生成订单信息及签名 */ //将商品信息赋予AlixPayOrder的成员变量 Order*order=[[Order alloc]init]; order.partner=partner; order.sellerID=seller; order.outTradeNO=[self generateTradeNO];//订单ID(由商家自定义) order.subject=@"支付宝测试支付";//商品标题 order.body=@"支付宝测试支付数据";//商品描述 order.totalFee=@"0.01";//商品价格 // order.notifyURL = @"http://www.baidu.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=@"paypast"; //将商品信息拼接成字符串 NSString*orderSpec=[order description]; //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode id
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 = %@\n",resultDic); }]; }}#pragma mark -#pragma mark ==============产生随机订单号==============- (NSString *)generateTradeNO{ static int kNumber = 15; NSString *sourceStr = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; NSMutableString *resultStr = [[NSMutableString alloc] init]; srand((unsigned)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;}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end

4. 设置回调

102521_rQXO_2763686.png 

5. 回调在AppDelegate.m中

 

// NOTE: 9.0以后使用新API接口- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary
*)options{ if ([url.host isEqualToString:@"safepay"]) { //跳转支付宝钱包进行支付,处理支付结果 [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { NSLog(@"*result = *%@",resultDic); }]; } return YES;}

 

转载于:https://my.oschina.net/jimolengsha/blog/707129

你可能感兴趣的文章
基础学习笔记之opencv(1):opencv中facedetect例子浅析
查看>>
JS中属性/方法调用
查看>>
iOS 7 需要再和 Android 比什么
查看>>
8-Images
查看>>
Python字节码与解释器学习
查看>>
面试题
查看>>
PYTHON-函数对象,嵌套,名称空间与作用域,闭包函数
查看>>
使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(一)
查看>>
PHP 无限极分类
查看>>
Unity3D对象池
查看>>
KMS服务器激活Windows和Office2013EnterprisePlus
查看>>
service()、dopost()、doget()的区别
查看>>
react proxy 报错
查看>>
网站优化之字体
查看>>
爬取外文工业技术期刊网页源码(自用)
查看>>
谈谈新任务开发经验
查看>>
javaFx中Image的路径问题
查看>>
高通&低通滤波算法
查看>>
分治法——求逆序数**
查看>>
linux 环境变量函数getenv()和putenv()的使用
查看>>