支付宝支付的详细过程
来源:互联网 发布:富士康跳樓事件知乎 编辑:程序博客网 时间:2024/05/21 10:53
1、在实现支付宝功能的时候,首先要到下载支付宝的官方demo,在官方demo中选择客户端这个文件夹,里面有一些支付功能需要的东西,现在我把这些需要的整理出来,大家下载了支付宝demo以后找到这几个文件,就可以了:AlipaySDK.bundle,AlipaySDK.framework,openssl文件夹,Util文件夹,libcrypto.a,libssl.a,还有Order的.h和.明文件,只要有了这几个文件,就可以进行下一步工作了:
2、在需要支付的控制器里导入AlipaySDK.h的头文件,此时还需要partnerID sellerID和privateKey,有了这些,就可以进行下一步了;
3、在图片标示的地方写入url,接下来就是项目的主要代码了;
4、
//支付宝支付
/*
*点击获取prodcut实例并初始化订单信息
*/
/*
*商户的唯一的parnter和seller。
*签约后,支付宝会为每个商户分配一个唯一的 parnter和 seller。
*/
/*=======================需要填写商户app申请的===============*/
NSString *partner = dic[@"partner"];
NSString *seller = dic[@"seller_id"];
NSString *privateKey = kPrivate_key;//商户和支付宝之间的私钥
//partner和seller获取失败,提示
if ([partner length] ==0 ||
[seller length] == 0 ||
[privateKey length] == 0)
{
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"提示"
message:@"缺少partner或者seller或者私钥。"
delegate:self
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alert show];
return;
}
/*
*生成订单信息及签名
*/
//将商品信息赋予AlixPayOrder的成员变量
Order *order = [[Orderalloc] init];
order.partner = partner;
order.sellerID = seller;
order.outTradeNO = dic[@"out_trade_no"];//订单ID(由商家自行制定)
order.subject = dic[@"subject"];//商品标题
order.body = dic[@"body"];//商品描述
order.totalFee = [NSStringstringWithFormat:@"%.2f",[dic[@"total_fee"]floatValue]]; //商品价格
order.notifyURL = dic[@"notify_url"];//回调URL
order.service = dic[@"service"];
order.paymentType = dic[@"payment_type"];
order.inputCharset = dic[@"_input_charset"];
order.itBPay = dic[@"it_b_pay"];
order.showURL =@"m.alipay.com";
//上面这些需要的信息都不需要自己填写,属于公司的信息
下面这些照样子写就行了。
//应用注册scheme,在AlixPayDemo-Info.plist定义URL types
NSString *appScheme = @"alisdkdemo";//这里就是填的上面的url里面写的那个东西。
//将商品信息拼接成字符串
NSString *orderSpec = [order description];
NSLog(@"orderSpec = %@",orderSpec);
//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
id<DataSigner> signer =CreateRSADataSigner(privateKey);
NSString *signedString = [signer signString:orderSpec];
//将签名成功字符串格式化为订单字符串,请严格按照该格式
NSString *orderString = nil;
if (signedString != nil) {
orderString = [NSStringstringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
orderSpec, signedString, @"RSA"];
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
}];
}
以上这是集成的时候所有的代码,但是我每次都会出现同一个问题:openssl/asn1.h file not found这个问题的解决办法:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 方法里面写入如下代码
返回的url中如果host是safety表示是支付宝支付 [url.hostisEqualToString:@"safepay"]
{
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDKdefaultService] processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary *resultDic) {
//[[NSNotificationCenter defaultCenter] postNotificationName:kIsPaySuccess object:nil];
NSInteger resultCode = [resultDic[@"resultStatus"]integerValue];
if(resultCode == 9000){
NSString *valueStr = resultDic[@"result"];
处理返回结果
NSArray *infoArr = [valueStr componentsSeparatedByString:@"&"];
NSMutableDictionary *bigDic = [[NSMutableDictionaryalloc] init];
for(NSString *strin infoArr){
NSArray *keyValueArr = [strcomponentsSeparatedByString:@"="];
NSString *key = keyValueArr[0];
NSString *value = keyValueArr[1];
NSString *sub1 = [value substringFromIndex:1];
NSString *vaLue = [sub1 substringToIndex:sub1.length - 1];
NSDictionary *dic = @{
key : vaLue
};
[bigDic addEntriesFromDictionary:dic];
}
NSString *state = bigDic[@"success"];
if([state isEqualToString:@"true"]){
//支付成功
}
}else{
支付失败!
}
NSLog(@"result = %@",resultDic);
}];
}
- 支付宝支付的详细过程
- 超详细 接入支付宝支付实现
- iOS支付宝支付(Alipay)详细接入
- swift 移动支付之【支付宝支付】详细步骤
- swift 移动支付之【支付宝支付】详细步骤
- 支付宝集成过程
- 支付宝的支付方式
- 支付宝支付的错误代码
- 支付宝的支付保卫战
- 支付宝的支付流程
- 支付宝的支付流程
- 支付宝支付的流程
- 支付宝的app支付
- 支付宝的支付流程
- android支付宝支付开发过程
- android支付宝支付开发过程
- android支付宝支付开发过程
- 入职支付宝的过程
- pinyin4j介绍
- jpinyin介绍
- Linux常用命令详解(五)_性能检测
- 独立集
- Codeforces Round #372 (Div. 2) D. Complete The Graph 图论、最短路、Dijkstra、路径、分配部分边权
- 支付宝支付的详细过程
- Python 之 *args和**kw
- 商务旅行 code[vs] 1036
- my favorites
- 矩形
- Mybatis执行BatchExecutor(四)
- hdu5893List wants to travel
- cc.XMLHttpRequest 引用计数
- 在ubuntu下运行python时,经常会因为各种库比如skimage没装而出现错误