支付宝
#import "ViewController.h"
#import "PartnerConfig.h"
#import "AlixPayOrder.h"
#import "DataSigner.h"
#import "AlixLibService.h"
#import "AlixPayResult.h"
#import "DataVerifier.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(100, 100, 100, 40);
[button setTitle:@"支付" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
//获取15位随机数
-(NSString *)generateTradeNO
{
const int N =15;
NSString * sourceString=@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
NSMutableString *re=[[NSMutableString alloc]init];
srand((int)time(0));
for (int i=0; i<N; i++) {
unsigned index=rand()%[sourceString length];
NSString * s=[sourceString substringWithRange:NSMakeRange(index, 1)];
[re appendString:s];
}
return re;
}
//rsa签名
-(NSString *)doRsa:(NSString *)orderInfo
{
id<DataSigner>signer;
signer=CreateRSADataSigner(PartnerPrivKey);
NSString * signedString=[signer signString:orderInfo];
return signedString;
}
- (void)buttonClick{
//创建订单
AlixPayOrder* order = [[AlixPayOrder alloc] init];
order.partner = PartnerID;
order.seller = SellerID;
//订单id
order.tradeNO = [self generateTradeNO];
//商品标题
order.productName = @"苹果手机";
//商品描述
order.productDescription = @"山寨国产红苹果手机 Hiphone I9 JAVA QQ后台 飞信 炒股 UC";
//商品价格
order.amount = @"0.01";
//回调URL
order.notifyURL = @"http%3A%2F%2Fwwww.xxx.com";
//得到订单信息
NSString* orderInfo = order.description;
//获取签名
NSString* signedStr = [self doRsa:orderInfo];
//支付
NSString*orderString=[NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderInfo,signedStr,@"RSA"];
[AlixLibService payOrder:orderString AndScheme:@"Practice" seletor:@selector(payResult:) target:self];
}
//回调函数
-(void)payResult:(NSString *)resultd
{
//结果处理
AlixPayResult* result = [[AlixPayResult alloc] initWithString:resultd];
if (result)
{
if (result.statusCode == 9000)
{
/*
*用公钥验证签名 严格验证请使用result.resultString与result.signString验签
*/
//交易成功
NSString* key = AlipayPubKey;//签约帐户后获取到的支付宝公钥
id<DataVerifier> verifier;
verifier = CreateRSADataVerifier(key);
if ([verifier verifyString:result.resultString withSign:result.signString])
{
//验证签名成功,交易结果无篡改
}
}
else
{
//交易失败
}
}
else
{
//失败
}
}
@end