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

2023-10-27

吐槽一下支付宝的文档和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
这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS第三方支付集成-支付宝支付 的相关文章

  • iOS 苹果内购详细步骤

    一 设置协议等相关 1 点击协议 税务和银行业务 2 点击 Request Contracts 下面的 Request 一直点击直到主协议界面 主协议界面 Contact info 联系人信息 Bank info 银行信息 Tax info
  • 深入解析 ObjC 中方法的结构

    因为 ObjC 的 runtime 只能在 Mac OS 下才能编译 所以文章中的代码都是在 Mac OS 也就是 x86 64 架构下运行的 对于在 arm64 中运行的代码会特别说明 在上一篇分析 isa 的文章从 NSObject 的
  • App Store 审核指南(中文版)

    App Store 审核指南 中文版 时间 2010 09 17 12 51 苹果对开发者提交的应用的审核之严格是出了名的 了解苹果的审核标准对于开发者防止应用被拒有着十分重要的意义 几天前苹果官方公布了 App Store 审核指南 后经
  • Apple iOS MDM开发流程

    一年前曾参与一个企业移动平台项目 实现了通过MDM对iOS设备进行管理 由于苹果对于mdm这块的接口及开发流程只向几个合作伙伴进行了分享 并没有对具体实现的文档进行公开 所以这方面的资料非常少 现在把实现的过程分享给大家 希望能对大家有所帮
  • 有了Auto Layout,为什么你还是害怕写UITabelView的自适应布局?

    Apple 算是最重视应用开发体验的公司了 从Xib到StoryBoard 从Auto Layout到Size Class 每一次的更新 都会给iOS应用的开发带来不小的便利 但是 对于绝对多数iOS攻城狮来说 我们依然还是很害怕写UITa
  • 编译错误:”Too many arguments to function call, expected 0, have 2 ”的解决

    在进行大规模工程开发的时候 或者是对原有工程结构进行调整 会出现很多编译问题 其中 Too many arguments to function call expected 0 have 2 是比较常见的一种 这个编译报错在Xcode8上比
  • iOS开发之第三方支付支付宝支付教程,史上最新最全第三方支付宝支付方式实现、支付宝集成教程,支付宝实现流程

    本章项目demo https github com zhonggaorong alipayDemo 支付宝支付大致流程为 1 公司与支付宝进行签约 获得商户ID partner 和账号ID seller 和私钥 privateKey 开发中
  • ios-常见的命令行工具

    pwd 查看当前目录 cat 在命令行中查看文件 ls 查看文件 ls l 就是以列表的形式展开 touch 创建文件 open 打开文件 more 分页查看文件内容 f是下一页 b是上一页 当你命令行有很多东西你写错了的时候不想去一一删除
  • xcodebuild使用

    转自 xcodebuild命令简单使用 简书 流程 build archive IPA teamid xcodebuild命令简单使用 前提准备证书并熟悉xcodebuild介绍 以及官方文档 xcodebuild showsdks查看可用
  • 使用FTP(IOS FTP客户端开发教程)

    本文翻译自新近Wrox出版社出版的 由Peter van de Put所著的 Professional iOS Programming 该书题材比较新颖 结构合理 是一本不错的IOS开发书籍 本文译自该书第八章 Using FTP 本文开放
  • 简单的API服务器搭建

    首先需要下载一个Nginx 高性能的HTTP和反向代理服务器 安装 brew install Nginx Step1 配置conf文件 Mac上默认
  • 一个奇怪的GCD内存不释放的问题

    这个问题是我的同学提出来的 原帖在http bbs csdn net topics 390933411 大概是这样 pre class objc IBAction touchToCreateThread id sender int i 10
  • APNS编程----iOS真机测试消息推送

    一 准备工作 1 拥有一台iOS为操作系统的苹果设备 iPhone iPad iPod都可以 2 拥有苹果开发者账号 需要真机调试 最好是是付费开发者 后面的步骤将会更顺利 3 需要一台PC做推送服务器 如果是台拥有MAC OS系统 将会更
  • iOS Cookies.binarycookies(俗称63数据)存取

    iOS 系统会自动将Safari或APP中网络请求的cookie保存为文件 APP的cookie保存路径为APP的沙盒路径 var mobile Containers Data Application x x x Library Cooki
  • iOS图标(AppIcon)与启动图(LaunchImage)

    图标 AppIcon 与启动图 LaunchImage 是开发iOS应用程序必不可少的内容 但是在网络上对于这部分的内容讲解的并不详细 所以花些时间写了这篇文章 希望有需要的朋友可以随时查看 想知道AppIcon与LaunchImage的原
  • iOS开发之ReactiveCocoa框架(RAC)第五篇队列与高级函数

    h文件 import ViewController h import ReactiveCocoa interface ViewController end implementation ViewController void viewDid
  • iOS17适配指南-新版

    文章目录 一 iOS17适配点 二 具体代码 一 iOS17适配点 UIView与UIViewController 可以设置数据为空时的占位视图 增加SymbolAnimations 通过addSymbolEffect 与removeSym
  • ios开发教程入门到精通

    第1集 初识macOS 点击观看 第2集 开发工具Xcode 点击观看 第3集 初识Objective C 点击观看 待续
  • Appstore审核被拒-[4. DESIGN: PREAMBLE]

    Appstore审核被拒原文如下 原因是设置里有一个版本信息可以响应点击事件进入一个版本详情页 苹果要求版本更新必须使用iOS版本更新内置更新机制 4 DESIGN PREAMBLE Design Preamble The version
  • iOS App打包上架详细流程

    一 前言 作为一名iOS开发者 把辛辛苦苦开发出来的App上传到App Store是件必要的事 但是很多人还是不知道该怎么上传到App Store上 下面就来详细讲解一下具体流程步骤 二 准备 一个已付费的开发者账号 可分为 账号类型分为个

随机推荐

  • shopify theme 跨境电商开发 liquid

    shopify theme 多语言国际化开发 shopify theme 跨境电商开发 liquid 本地编辑shopify主题的方式一 shopify cli 的命令 最近有有一个叫做shopify的跨境电商的东西需要开发一些主题和模板
  • [CentOS Python系列] 六.阿里云搭建Django网站详解

    本篇文章主要介绍讲述部署阿里云服务器Django网站环境 并通过IP地址访问网页的过程 写代码过程中往往第一步需要解决的就是配置开发环境 对于新手来说 这是非常头疼的事情 而当配置好之后或者对于老手来说 我们才能去实现理想的功能 基础性文章
  • linux安装node_exporter

    下载 Download Prometheus 解压 tar xvzf node exporter 1 5 0 darwin amd64 tar gz 解压后有三个文件 分别是LICENSE node exporter NOTICE 将nod
  • 物体无法碰撞导入的空气墙?

    在使用unity导入场景的时候 可能会因为编码问题导致导入的空气墙的Layer是空的 导致无法碰撞 解决方案 1 此时只需要给导入的空气墙设置Layer 2 在项目的 Edit gt Project Settings 的 如下 在图层矩阵中
  • Flutter屏幕适配

    文章目录 Flutter屏幕适配 一 Flutter中的单位 1 1 点 points 1 2 像素 pixels 1 3 设备像素比 devicePixelRatio 二 适配方案 2 1 rpx 适配 2 2 flutter scree
  • KEIL5使用技巧

    目录 1 文本美化 2 代码编辑技巧 1 TAB 键的妙用 2 快速位函数 变量被定义的地方 3 快速注释与快速消注释 3 其他小技巧 下面 向大家介绍KEIL5 软件的一些使用技巧 这些技巧在代码编辑和编写方面会非常有用 1 文本美化 文
  • NGSIM数据集处理-添加标签、特征标准化

    添加标签 对向左向右换道数据添加不同的标签 usr bin env python coding utf 8 In 1 import csv import pandas as pd f2 pd read csv CL train41 csv
  • django设置models.Model数据可以为空

    添加设置 null True blank True 比如 size models CharField max length 255 default null True blank True
  • 华为OD机试 - 分苹果 - 二进制(Java 2023 B卷 100分)

    目录 专栏导读 一 题目描述 二 输入描述 三 输出描述 四 解题思路 五 Java算法源码 六 效果展示 1 输入 2 输出 3 说明 核心算法 按照二进制加法计算 并且不计算进位 但是 B希望在满足A的情况下获取苹果重量最多 华为OD机
  • 神州云服务平台(型号:DCC-CRL1000)基本配置教学视频

    教学视频只提供网络搭建与应用技能大赛第二部分基本配置部分视频 仅供大家学习使用 2021年全国职业院校网络搭建及应用第二部分基本配置视频 由于在线播放视频有点模糊 所以给大家提供清晰的教学视频下载链接 神州云服务平台 型号 DCC CRL1
  • 教你如何看懂EMC空间辐射测试报告

    空间辐射测试是最常做的EMC电磁兼容测试项目之一 也是最容易出现问题的一个测试项目 对很多刚接触EMC的朋友来讲 拿到EMC的测试数据 往往感觉比较陌生 不知道怎么看这份数据 相信看完以下内容 你就不会陌生了 专业测试辐射的场所是屏蔽室 主
  • 单片机开发入坑指南

    入坑前了解 什么是单片机 单片机英文名Microcontrollers 即微控制器 英文简称MCU 单片机是一种集成电路芯片 是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU 随机存储器RAM 只读存储器ROM 多种I O口和
  • 第十讲:神州三层交换机配置单区域OSPF路由协议

    关于OSPF 其中的几个基本概念需要了解 OSPF是开放式最短路径优先的缩写 OSPF的协议号是89 OSPF协议中的Router ID是一台路由器的唯一标识 在整个白治系统中唯一 Router ID从路由器的接口lP地址中选择出来 选择的
  • win10从控制台直接进入Anaconda Prompt环境

  • Uboot 编译失败问题

    编译失败问题汇总 索引 一 已经有uboot源码 并且有 build sh 的情况 一 已经有uboot源码 并且有 build sh 的情况 首先Makefile 没有配置编译器 导致的错误 错误提示信息如下 cc1 error bad
  • day27

    1 网络编程 a 软件 客户端 CS架构 client gt server 浏览器 BS架构 browser gt server b 如何实现相互通信 需求一 编写两个软件 软件之间相互通信 需求二 两个人直接连接 网线 需求三 教室相互通
  • 洛谷P1023 税收与补贴问题

    题目描述 你是某家咨询公司的项目经理 现在你已经知道政府对某种商品的预期价格 以及在各种价位上的销售情况 要求你确定政府对此商品是应收税还是补贴的最少金额 也为整数 才能使商家在这样一种政府预期的价格上 获取相对其他价位上的最大总利润 总利
  • Win10+RTX3060配置CUDA等深度学习环境

    Win10 RTX3060机器学习环境配置 1 下载准备 2 下载安装CUDA和CUDNN 2 1 cuda和cudnn下载 2 2 cuda和cudnn安装 3 安装GPU版pytorch与TensorFlow 3 1 下载 3 2 安装
  • synchronized修饰static方法与非static方法的区别

    当synchronized修饰一个static方法时 多线程下 获取的是类锁 即Class本身 注意 不是实例 作用范围是整个静态方法 作用的对象是这个类的所有对象 当synchronized修饰一个非static方法时 多线程下 获取的是
  • iOS第三方支付集成-支付宝支付

    吐槽一下支付宝的文档和demo 文档真是找的我眼花缭乱 demo写的也是看的捉急 没有微信的简单明了 不过全部找到后 静下心来研究 也还是可以的 一 进入官方下Demo 看文档 工欲善其事必先利其器 先看下demo总不是坏处 也可以学习一下