iOS支付寶支付主要程式碼

躍然發表於2015-02-10

/*

*點選獲取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;  }

相關文章