最新版本支付宝与微信支付集成与使用

自己在两个项目中接入了移动端支付宝和微信支付,也对支付代码进行了简单的封装。在项目集成与调试的时候遇到了一些问题,自己也一直想找时间进行整理,方便以后在项目中集成与使用。支付宝SDK微信SDK都进行了相应的更新,我项目中使用的还是老版本的SDK,下面开始介绍最新版本的SDK集成与使用。

一、支付宝

1> 快速接入

在接入前,首先要对流程要有相应的了解,主要有以下三个步骤(具体详情,请点击上面链接查看):

  • 创建应用并获取APPID
  • 配置应用


    1.png
  • 集成和开发


    81fdbf664f654970835e5426b55959f6.jpg

2> SDK下载

3> 集成SDK

[1]、将下面两个文件拖入到工程
AlipaySDK.bundle
AlipaySDK.framework

屏幕快照 2018-01-04 上午11.18.23.png

添加官方demo中依赖文件到工程,如下图所示:
屏幕快照 2018-01-04 上午11.45.26.png

[2]、 添加依赖库

libc++.tbd
libz.tbd
SystemConfiguration.framework
CoreTelephony.framework
QuartzCore.framework
CoreText.framework
CoreGraphics.framework
UIKit.framework
Foundation.framework
CFNetwork.framework
CoreMotion.framework
AlipaySDK.famework

注意

如果是Xcode 7.0之后的版本,需要添加libc++.tbd、libz.tbd;
如果是Xcode 7.0之前的版本,需要添加libc++.dylib、libz.dylib

屏幕快照 2018-01-04 上午11.17.28.png

[3]、配置info.plist,添加支付回调URL scheme,可以自己定义一个名字,如下图:
屏幕快照 2018-01-04 下午3.19.54.png

好了,到这里,SDK库文件和系统依赖库都已经导入到工程,command+R运行一下,你会发现报错,就是oppssl/asn1.h not found,在我最开始集成支付宝的时候,这个问题折腾了我好久,网上和官方都能找到解决方法,虽然每次都解决了,但是都尝试了好久。

报错解决
1、oppssl/asn1.h not found

屏幕快照 2018-01-04 上午11.48.22.png

Build Settings下搜索Header Search Paths中添加$(SRCROOT)/项目名称,我写的WBPayManagerDemo中的openssl文件夹在AliSDK_V15.5.0文件下,所以这里需要修改
方式一:手动添加路径
$(SRCROOT)/WBPayManagerDemo/AliSDK_V15.5.0
屏幕快照 2018-01-04 下午12.01.02.png

方式二:将AliSDK_V15.5.0文件夹拖入到Header Search Paths
Untitled.gif

二、微信

1> 接入指南

微信SDK集成主要有以下三个步骤:

  • 向微信注册你的应用程序id
    请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。

  • 下载微信终端SDK文件
    SDK文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个。
    如选用手动集成,请前往“资源下载页”下载最新SDK包

  • 搭建开发环境

2> 项目集成

  • 1、通过CocoaPods集成
    pod 'WechatOpenSDK'
    注意
  • 命令行下执行pod search WechatOpenSDK,如显示的WechatOpenSDK版本不是最新的,则先执行pod repo update操作更新本地repo的内容
  • 对于之前SDK放在主工程目录下,切换成CocoaPods的形式,执行pod install 之后,出现
    Use the $(inherited) flag, or
    Remove the build settings from the target.
    解决方法是 把工程target中的build Setting里面PODS_ROOT的值替换成$(inherited)Other Linker Flags中 -all_load 替换成$(inherited)
    image

    image

    2、手动集成
    [1]、SDK下载
  • 官方下载地址
  • WeChatSDK_V1.7.8(现在项目使用的版本,通过ShareSDK导入)
  • WechatSDK1.8.2
    [2]、导入工程
    将WechatSDK1.8.2文件夹(libWeChatSDK.aWechatAuthSDK.hWXApi.hWXApiObject.h)拖入到工程。
    屏幕快照 2018-01-04 下午2.42.39.png

    [3]、添加依赖库
SystemConfiguration.framework
libz.tbd 
libsqlite3.0.tbd
libc++.tbd 
Security.framework
CoreTelephony.framework
CFNetwork.framework

注意
Xcode 7.0之前
libz.tbd 对应的是libz.dylib
libsqlite3.0.tbd对应的是libsqlite3.0.dylib
libc++.tbd对应的是libc++.dylib
[4]、配置工程

  • 在你的工程文件中选择Build Setting,在"Other Linker Flags"中加入"-Objc -all_load",在Search Paths中添加 libWeChatSDK.a ,WXApi.h,WXApiObject.h,文件所在位置(如下图所示)。


    屏幕快照 2018-01-04 下午3.00.25.png
  • 在info.plist添加key为LSApplicationQueriesSchemesType为数组类型,添加一个item为weixin,如下图所示:
    屏幕快照 2018-01-04 下午3.04.56.png
  • 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id


    屏幕快照 2018-01-04 下午3.13.56.png

三、支付封装

封装主要是新建了一个工具类,通过封装工具,可以将支付宝Block回调和微信的代理回调集中在一个回调里,支付只需调用一行代码就OK,我现在的项目都是用的这个支付工具类,下面介绍下核心代码和使用注意事项吧。
[1]注意URL Types的配置
WBPayManager.h的头文件中,定义了两个URL identifier,所以配置的时候,需要保证info里的identifier和头文件定义的一致。

//此处必须保证在Info.plist 中的 URL Types 的 Identifier 对应一致
UIKIT_EXTERN NSString * const ALIPAY_URLIDENTIFIER;/**  支付宝URL NAME  */
UIKIT_EXTERN NSString * const WECHAT_URLIDENTIFIER;/**  微信URL NAME  */
屏幕快照 2018-01-04 下午3.59.03.png

[2]、处理支付回调

/**  < 微信需要在程序加载完成注册 >  */
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    [[WBPayManager shareManager] wb_registerApp];
    return YES;
}

/**
 *
 *  最老的版本,最好也写上
 */
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [[WBPayManager shareManager] wb_handleUrl:url];
}

// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    return [[WBPayManager shareManager] wb_handleUrl:url];
}

/**  *  iOS 9.0 之前 会调用  */
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[WBPayManager shareManager] wb_handleUrl:url];
}

[3]、发起支付

  • 支付宝
//直接传入后台返回的订单信息支付串
[[WBPayManager shareManager] wb_payWithOrderInfo:orderInfo payCallBack:^(WBPayStatusCode errorCode, NSString *errorStr) {
    //支付结果回调
}]
  • 微信
//构建PayReq对象,后台返回
PayReq * req = [PayReq new];
req.partnerId = orderModel.wechatpay_data.partnerid;
req.prepayId= orderModel.wechatpay_data.prepayid;
req.package = orderModel.wechatpay_data.package;
req.nonceStr= orderModel.wechatpay_data.noncestr;
req.timeStamp= (UInt32)[orderModel.wechatpay_data.timestamp integerValue];
req.sign= orderModel.wechatpay_data.sign;
[[WBPayManager shareManager] wb_payWithOrderInfo:req payCallBack:^(WBPayStatusCode errorCode, NSString *errorStr) {
    //支付结果回调
}]

具体详情,请戳GitHub:WBPayManagerDemo

结语

终于整理完成了,通过这次整理,希望以后在项目集成少遇到一些坑吧,微信的支付文档感觉确实有点老了,SDK在更新,文档却没有更新,不过也没有关系。最新版本的SDK在自己的项目中也没有使用,项目中还是用的老版本的SDK,我也将老版本SDK的下载链接也放在文章中。如有不对的地方,欢迎指正,希望这篇文章能对你有所帮助。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容