/* *点击获取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; }
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字

上传中....