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

说道支付宝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的条件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值