/*
*点击获取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字
上传中....
欧罗提拉稀