/*
*點擊獲取prodcut實例並初始化訂單信息
*/
Product*product = [[Product alloc] init];
product.subject=@"機票";
product.body=@"乘客機票";
product.price=0.01f;
/*
*商戶的唯一的parnter和seller。
*簽約後,支付寶會為每個商戶分配一個唯一的parnter和seller。
*/
/*=======================需要填寫商戶app申請的===================================*/
NSString*partner =alipayPartner;
NSString*seller =alipaySeller;
NSString*privateKey =alipayPrivateKey;
//partner和seller獲取失敗,提示
if([partner length] ==0|| [seller length] ==0)
{
UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示"
message:@"缺少partner或者seller。"
delegate:self
cancelButtonTitle:@"確定"
otherButtonTitles:nil];
[alertshow];
return;
}
/*
*生成訂單信息及簽名
*/
//將商品信息賦予AlixPayOrder的成員變量
Order*aliOrder = [[Order alloc] init];
aliOrder.partner= partner;
aliOrder.seller= seller;
aliOrder.tradeNO = [self generateTradeNO];//訂單ID(由商家自行制定)
aliOrder.productName= product.subject;//商品標題這個參數是這筆交易的名稱,因為這筆交易不一定只買一件商品。它的作用不僅是在收銀台裡可以清晰的顯示出來,而且在支付寶的賬戶的交易明細的列表裡,它也是排在第一列,由此可推測出,它有財務對賬、作為交易查詢的篩選條件等諸多作用。非常重要
aliOrder.productDescription= product.body;//訂單描述
aliOrder.amount= [NSStringstringWithFormat:@"%.2f",product.price];//商品價格
aliOrder.notifyURL=@"http://www.xxx.com";//回調URL
aliOrder.service=@"mobile.securitypay.pay";//服務名稱(參數service)
aliOrder.paymentType=@"1";//支付寶類型.1代表商品購買
aliOrder.inputCharset=@"utf-8";//編碼類型
aliOrder.itBPay=@"30m";
aliOrder.showUrl=@"m.alipay.com";//展示地址,即在支付寶頁面時商品名稱旁邊的“詳情”的鏈接地址
//應用注冊scheme,在-Info.plist定義URL types
NSString*appScheme =@"alipayForSpringAirlines";
//將商品信息拼接成字符串
NSString*orderSpec = [aliOrderdescription];
NSLog(@"orderSpec = %@",orderSpec);
//獲取私鑰並將商戶信息簽名,外部商戶可以根據情況存放私鑰和簽名,只需要遵循RSA簽名規范,並將簽名字符串base64編碼和UrlEncode
id signer =CreateRSADataSigner(privateKey);
NSString*signedString = [signersignString:orderSpec];
//將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式
NSString*orderString =nil;
if(signedString !=nil) {
orderString = [NSStringstringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
orderSpec, signedString,@"RSA"];
[[AlipaySDKdefaultService]payOrder:orderStringfromScheme:appSchemecallback:^(NSDictionary*resultDic) {
NSLog(@"reslut = %@",resultDic);
}];
}
- (NSString*)generateTradeNO
{ static int kNumber =15;
NSString*sourceStr =@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
NSMutableString *resultStr = [[NSMutableString alloc] init];
srand(time(0));
for(inti =0; i < kNumber; i++)
{ unsigned index =rand() % [sourceStr length];
NSString*oneStr = [sourceStr substringWithRange:NSMakeRange(index,1)];
[resultStr appendString:oneStr];
} return resultStr; }