支付宝当前最新版集成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的条件。
目录
相关文章
|
7月前
|
消息中间件 Java Kafka
Springboot集成高低版本kafka
Springboot集成高低版本kafka
232 0
|
7月前
|
Java 数据安全/隐私保护
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
350 1
|
7月前
|
安全 Java 测试技术
Spring Boot集成支付宝支付:概念与实战
【4月更文挑战第29天】在电子商务和在线业务应用中,集成有效且安全的支付解决方案是至关重要的。支付宝作为中国领先的支付服务提供商,其支付功能的集成可以显著提升用户体验。本篇博客将详细介绍如何在Spring Boot应用中集成支付宝支付功能,并提供一个实战示例。
386 2
|
7月前
|
前端开发 JavaScript 数据挖掘
《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)(下)
《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)
60 1
|
5月前
|
XML 关系型数据库 MySQL
支付系统----微信支付19---集成MyBatis-plus,数据库驱动对应的依赖版本设置问题,5没版本没有cj这个依赖,mysql驱动默认的是版本8,这里是一个父类,数据库都有,写个父类,继承就行
支付系统----微信支付19---集成MyBatis-plus,数据库驱动对应的依赖版本设置问题,5没版本没有cj这个依赖,mysql驱动默认的是版本8,这里是一个父类,数据库都有,写个父类,继承就行
|
7月前
|
存储 前端开发 安全
《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)(上)
《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)
106 0
|
分布式计算 资源调度 Hadoop
【Flink】版本 1.13+ 集成 Hadoop 问题
【Flink】版本 1.13+ 集成 Hadoop 问题
484 0
|
7月前
|
消息中间件 SQL druid
最新版 springboot集成kafka
最新版 springboot集成kafka
107 0
|
7月前
|
Java 开发工具
解决SpringBoot集成支付宝支付中文订单描述验签错误问题
解决SpringBoot集成支付宝支付中文订单描述验签错误问题
76 0
|
Java 数据库连接 Maven
SpringBoot2.x+mybatis plus3.x集成Activit7版本
SpringBoot2.x+mybatis plus3.x集成Activit7版本
102 0