失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > iOS第三方支付集成-支付宝支付

iOS第三方支付集成-支付宝支付

时间:2020-03-23 16:22:29

相关推荐

iOS第三方支付集成-支付宝支付

吐槽一下支付宝的文档和demo,文档真是找的我眼花缭乱,demo写的也是看的捉急,没有微信的简单明了。不过全部找到后,静下心来研究,也还是可以的。

一 进入官方下Demo,看文档

工欲善其事必先利其器,先看下demo总不是坏处,也可以学习一下支付宝大佬编码风格。除了不好找之外,其它还是可以的。

支付宝支付demo下载

支付宝支付iOS集成文档

支付宝支付通知参数说明

二 正式接入准备工作

1.导入demo中以下文件

2.导入以下依赖库

3.Project-Info中,添加支付宝的AppKey

4.设置支付宝白名单

三 正式接入

1.AppDelegate设置

2.接入PayManager支付工具类,也可以自己写一个。仅供参考

PayManager.h

//// PayManager.h//// Created by superButton on /9/5.// Copyright © com.from. All rights reserved.//#import <Foundation/Foundation.h>#import "WXApi.h"@protocol PayManagerDelegate <NSObject>@optional@end@interface PayManager : NSObject<WXApiDelegate>/**代理*/@property (nonatomic, assign) id<PayManagerDelegate> delegate;/**单例 @return 单例*/+ (instancetype)sharedManager;/**微信支付 @param orderID 订单ID @param success 成功回调 @param fail 失败回调*/- (void)payWithWeChatMethod:(NSString*)orderID successBlock:(GetBackBoolBlock)success failBlock:(GetBackBoolBlock)fail;/**支付宝支付 @param orderID 订单ID @param success 成功回调 @param fail 失败回调*/- (void)payWithZhifubaoMethod:(NSString*)orderID successBlock:(GetBackBoolBlock)success failBlock:(GetBackBoolBlock)fail;/**支付宝支付回调 @param resultDict 回调字典参数*/- (void)handleOpenURL:(NSDictionary *)resultDict;@end

PayManager.m

//// PayManager.m//// Created by superButton on /9/5.// Copyright © com.from. All rights reserved.//#import "PayManager.h"#import <AlipaySDK/AlipaySDK.h>@interface PayManager ()@property (copy,nonatomic) GetBackBoolBlock successBlock;@property (copy,nonatomic) GetBackBoolBlock failBlock;@end@implementation PayManager+(instancetype)sharedManager {static dispatch_once_t onceToken;static PayManager *instance;dispatch_once(&onceToken, ^{instance = [[PayManager alloc] init];});return instance;}#pragma mark - 微信支付- (void)payWithWeChatMethod:(NSString*)orderID successBlock:(GetBackBoolBlock)success failBlock:(GetBackBoolBlock)fail{}#pragma mark - 支付宝支付- (void)payWithZhifubaoMethod:(NSString*)orderID successBlock:(GetBackBoolBlock)success failBlock:(GetBackBoolBlock)fail{NSMutableDictionary *params = [NSMutableDictionary dictionary];params[@""] = orderID;kWeakSelf(weakSelf)//请求自己的后台,拿到订单支付宝的重要参数,具体参数见支付宝Demo,反正都是后台返回,前端不用处理[[NetWorkingUtil netWorkingUtil] postDataWithPath:@"" parameters:params result:^(id obj, int status, NSString *msg) {if (status == 1) {weakSelf.successBlock = success;weakSelf.failBlock = fail;if(obj != nil){//前面自定义的URL SchemeNSString *appScheme = @"demoAliPay";// NOTE: 将签名成功字符串格式化为订单字符串,请严格按照该格式NSString *sdkParam = obj[@"sdkParam"];NSString *orderString = [NSString stringWithFormat:@"%@",sdkParam];// NOTE: 调用支付结果开始支付[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {NSLog(@"payOrder reslut = %@",resultDic);//注,网页回调不会走AppDelegate代理方法。只能通过这里来处理回调}];}else{fail(NO);}}else{fail(NO);}}];}#pragma mark - WXApiDelegate//收到微信回调- (void)onResp:(BaseResp *)resp {}///给微信发回调- (void)onReq:(BaseReq *)req {}#pragma mark = 支付宝客户端支付后回调- (void)handleOpenURL:(NSDictionary *)resultDict {NSString *resultStatus = [NSString stringWithFormat:@"%@", [resultDict objectForKey:@"resultStatus"]];NSInteger statusCode = [resultStatus integerValue];switch (statusCode) {case 9000://成功{if (_successBlock) {_successBlock(YES);}}break;case 4000://失败{if (_failBlock) {_failBlock(NO);}}break;default://其它{if (_failBlock) {_failBlock(NO);}}break;}}@end

四 注意

1.调起支付宝SDK时传入的orderPay字符串参数是按一定顺序拼接起来的加过签的参数串,通常由服务端拼接好传给前端。

2.调起支付宝SDK时的fromScheme是支付宝回调app的重要依据,通常为app在info中配置的URL Scheme.

iOS第三方支付集成-微信支付

iOS第三方支付集成-踩坑处理合集

欢迎给为志同道合的朋友入群交流、分享。高级iOS开发交流群:855808379

如果觉得《iOS第三方支付集成-支付宝支付》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。