支付宝当前最新版集成2.1.2版本

来源:互联网 发布:数据预处理的内容 编辑:程序博客网 时间:2024/06/11 04:21

说道支付宝SDK集成就让人感觉到头疼,找个集成包都不好找,原来旧版本的支付宝SDK现在依然可以使用,但是

不支付64位,现在新版本的已经支付64位了。

这个是快捷支付SDK的位置,https://b.alipay.com/order/productDetail.htm?productId=2014110308141993&tabId=1#ps-tabinfo-hash

点击 技术集成,就有一个集成开发包,下载后会有SDK。


把集成包全部放到同一个文件夹中,如AlipaySDK2.1.2,

那么需要在工程配置中header path 中添加AlipaySDK2.1.2相对于工程的路径,否则会提示openssl/rsa.h不存在之类的提示。


接下来就是集成代码了。

我这里写了一个支付宝helper类

////  HYBAliapayHelper.h////  Created by 黄仪标 on 14/12/10.//  Copyright (c) 2014年 xiaoyaor. All rights reserved.//#import <Foundation/Foundation.h>/*! * @brief  支付宝支付功能封装类,此类提供一键式调起支付宝功能,方便快捷 * * @author haungyibiao */@interface HYBAliapayHelper : NSObject// 先调这个方法来获取服务器的数据+ (AFHTTPRequestOperation *)requestWithParams:(NSDictionary *)params               completion:(HYBSuccessDictBlock)completion               errorBlock:(HYBErrorBlock)errorBlock;// 再调这个方法来调起支付宝// 参数:一,调用- (void)requestWithParams:(NSDictionary *)params// completion:(HYBSuccessDictBlock)completion// errorBlock:(HYBErrorBlock)errorBlock 所返回来的参数// resultNumber 有以下几种状态:+ (void)alixPayWithResponse:(NSDictionary *)response                 completion:(HYBSuccessIdBlock)completion;// 在appdelegate中调用+ (void)handleOpenURL:(NSURL *)url application:(UIApplication *)application;@end

这里使用的是AFN网络库。


@implementation HYBAliapayHelper+ (AFHTTPRequestOperation *)requestWithParams:(NSDictionary *)params                                   completion:(HYBSuccessDictBlock)completion                                   errorBlock:(HYBErrorBlock)errorBlock {  return [HYBHttpManager aliapayMerchantInfoParams:params completion:^(NSDictionary *resultDict) {    if (completion) {      completion(resultDict);    }  } errorBlock:^(NSError *error) {    errorBlock(error);  }];}// resultNumber 有以下几种状态:// 0 表示成功,1表示未安装,2表示签名错误,3表示参数错误,4,失败原因,字符串类型+ (void)alixPayWithResponse:(NSDictionary *)responseObject                 completion:(HYBSuccessIdBlock)completion {// 此处省略与SDK无关的代码    /*   9000 订单支付成功   8000 正在处理中    4000 订单支付失败   6001 用户中途取消   6002 网络连接出错   */ // 这个callback是使用HTML5网页版支付时的回调,如果是用客户端支付,是不会回调到这里的  [[AlipaySDK defaultService] payOrder:payRequest fromScheme:@"XiaoYaoUserUrlSchemes" callback:^(NSDictionary *resultDic) {    if (delegate.alipayResultBlock) {// html5回调处理      NSNumber *number = @([resultDic[@"resultStatus"] integerValue]);      delegate.alipayResultBlock(number);// 这里的Delegate是AppDelegate    }  }];}// 跳到支付宝应用后回调,这个是调用支付宝客户端时,会通过这个方法回调+ (void)handleOpenURL:(NSURL *)url application:(UIApplication *)application {  [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {    AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;        DDLogVerbose(@"resultDic = %@", resultDic);    if (delegate.alipayResultBlock) {// 跳到支付宝应用后回调      NSString *status = resultDic[@"resultStatus"];      DDLogVerbose(@"%@", status);      NSNumber *number = @([status integerValue]);      delegate.alipayResultBlock(number);    }  }];  return;}- (NSError *)errorWithMessage:(NSString *)message {  NSError *error = [[NSError alloc] initWithDomain:message code:0 userInfo:nil];  NSLog(@"%@", [error description]);  return error;}@end

这里需要特别注意的是两个callback的条件。

2 0