- /*
- *点击获取prodcut实例并初始化订单信息
- */
- Product*product = [[Product alloc] init];
- [email protected]"机票";
- [email protected]"乘客机票";
- 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];//商品价格
- [email protected]"http://www.xxx.com";//回调URL
- [email protected]"mobile.securitypay.pay";//服务名称(参数service)
- [email protected]"1";//支付宝类型.1代表商品购买
- [email protected]"utf-8";//编码类型
- [email protected]"30m";
- [email protected]"m.alipay.com";//展示地址,即在支付宝页面时商品名称旁边的“详情”的链接地址
- //应用注册scheme,在-Info.plist定义URL types
- NSString*appScheme [email protected]"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 [email protected]"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; }
来源: http://www.phpxs.com/code/1005662/