程胖出品——IOS支付宝入门详解
一、支付宝设置
<写在前言:如有哪里不对还请多多留言指正>
1.登陆支付宝开放平台,详情见图1
12.创建应用并提交等待审核,详情见图2
23.打开Mac上的终端,使用终端生成公钥和私钥(rsa_public_key.pem & rsa_private_key.pem)。操作命令如下。详情见图3
3.1.打开 OpenSSL
3.2.生成私钥em genrsa -out rsa_private_key.pem 1024
3.3.生成公钥 rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
3.4.将RSA私钥转换成PKCS8格式 pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
3.5.退出终端 exit##
34.打开公钥,上传公钥,详情见图4
步骤:点击“文档中心”->点击“移动支付”->点击“PID和密钥管理”->点击“上传RSA公钥”->点击“b.alipaty.com”->点击“查询PID、Key”->这时会让你安装证书,输入支付密码->安装成功后点击“上传RSA密钥”
4.1 4.2 4.3 4.4 4.5 4.6二、配置工程
1.下载AlipaySDK,并拖入工程中
2.添加SystemConfiguration.framework
23.在Header Search Paths添加AlipaySDK路径
34.在.m文件中
1 导入头文件
#import"AlipaySDK/AlipaySDK.h"
#import"DataSigner.h"
#import"Order.h"
2 添加PID/用户账号/私钥
//PID
#define PartnerID @"2088212441087012"
//用户账号
#define SellerID @"yourqqnumber@qq.com"
//私钥
#define RSAPrivateKey @“私钥"
3 生成订单
//生成点单
Order*order = [[Orderalloc]init];
//合作者身份(PID)
order.partner=PartnerID;
//商家支付宝账号
order.seller=SellerID;
//订单ID
order.tradeNO=@"234";
order.productName=@"商品名称";
order.productDescription=@"商品描述";
//商品价格
order.amount=@"124";
//回调URL
order.notifyURL=@"http://url";
//Bundle ID
order.service=@"com.chenglong.FCLZhiFuBaoDemo";
order.paymentType=@"1";
//编码格式
order.inputCharset=@"utf-8";
//订单超时时间
order.itBPay=@"45m";
//应用注册scheme,在AlixPayDemo-Info.plist定义URL types
NSString*appSchem =@"FCLZhiFuBaoDemo";
//将商品信息拼接成字符串
NSString*orderSpec = [orderdescription];
//使用私钥进行签名
idsigner =CreateRSADataSigner(RSAPrivateKey);
//签名我的订单描述
NSString*sinedString = [signersignString:orderSpec];
NSString*orderString =nil;
if(sinedString !=nil) {
orderString = [NSStringstringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderSpec,sinedString,@"RSA"];
[[AlipaySDKdefaultService]payOrder:orderStringfromScheme:appSchemcallback:^(NSDictionary*resultDic) {
NSLog(@"result= %@",resultDic);
}];
}
5.在入口类添加回调方法
-(BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{
//支付后的回调
//当通过别的应用程序,将该应用程序打开时,会调用该方法
if([url.hostisEqualToString:@"safepay"]) {
//当用户通过支付宝客户端进行支付时,会回调该block:standbyCallbac
[[AlipaySDKdefaultService]processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary*resultDic) {
NSLog(@"result = %@",resultDic);
}];
}
returnYES;
}
注意:使用支付宝前提是购买的物品必须是和应用无关的。比如衣服、电子产品。游戏中的道具是需要通过内购(苹果)购买。