iOS第三方支付集成-支付宝支付
Posted xj_love
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 2018/9/5.
// Copyright © 2018年 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 2018/9/5.
// Copyright © 2018年 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 Scheme
NSString *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第三方支付集成-支付宝支付的主要内容,如果未能解决你的问题,请参考以下文章