支付宝C++接口编译 (Windows 10 + Visual Studio 2015Update 3+ Qt 5.7.0)

支付宝C++接口编译 

本文目标是:在使用Windows 10 + Visual Studio 2015Update 3+ Qt 5.7.0基础上,编译OpenSSLlibCurl,编译了AliPay C++ SDK,可以实现支付。本文分四章叙述。

所有软件都是当前最新版,安全性能最高。

 

第一章 下载支付宝服务端SDK

 

下载地址:

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.wtCuGV&treeId=193&articleId=103419&docType=1

或者:

https://github.com/ArthasModern/AlipayOpenapiCpp

 

将源文件解压到E:\Qt\AlipayOpenapiCpp,您可以自由选择目标目录。


这个SDK是在VS2008+Qt 5基础上开发的,在Windows 10 + Visual Studio 2015 Update 3+ Qt 5.7.0上编译会通不过。会出现如下错误:

 

error LNK2019: 无法解析的外部符号 __iob_func

 

SDK使用了三个库,分别是cJSONOpenSSLlibCurlcJSON不用担心,直接使用。问题是另两个库需要重新编译。

因此,需要下载OpenSSLlibCurl的源代码,重新编译生成最新静态库文件。

 

第二章 下载libCurl官方源码

 

下载地址:

https://curl.haxx.se/download.html

选择最新包,curl-7.50.3.tar.gz

 

在此处可以找到VS2015安装指南:

https://github.com/DynamsoftRD/libcurl-sample

 

本库比较好编译,网上介绍都已经过时,不足为训。因此需要仔细阅读官方说明文档。步骤如下:

1、 下载解压。例如E:\Qt\curl-openssl\curl-7.50.3,您可以自由选择解压目标地址。

2、 进入E:\Qt\curl-openssl\curl-7.50.3\projects\Windows\VC14

3、 双击打开curl-all.sln,使用VS2015打开即可。

4、 在下图中,选择点击Lib Debug,编译;再选择Lib Release,编译。所谓“编译”即点击“本地windows调试器”即可。


5、 回退两级目录,在E:\Qt\curl-openssl\curl-7.50.3\build\Win32\VC14中可以找到对应于lib debuglib release的目录,编译好的静态库文件就在这两个目录里面。

6、 分别把E:\Qt\curl-openssl\curl-7.50.3\build\Win32\VC14\LIB Debug\libcurld.lib    E:\Qt\curl-openssl\curl-7.50.3\build\Win32\VC14\LIBRelease\libcurl.lib 复制出来,放到E:\Qt\AlipayOpenapiCpp\libs里面。

7、 打开E:\Qt\AlipayOpenapiCpp\libs\include,把E:\Qt\AlipayOpenapiCpp\libs\include\下的curl目录删掉,然后把E:\Qt\curl-openssl\curl-7.50.3\includecurl目录(放的都是头文件)复制过来。

 

第三章 下载OpenSSL官方源码

 

需要做准备工作:

1、下载地址:https://www.openssl.org/source/

选择最新包,openssl-1.1.0.tar.gz

2、从http://www.activestate.com/activeperl/downloads 下载并安装最新的ActivePerl

3、可选。从http://www.nasm.us/ 下载并安装Nasm汇编器。

网上介绍都已经过时,不足为训。例如都提到

有两个文件INSTALL.W32, INSTALL.W64,在解压文件里是找不到的。需要仔细阅读官方说明文档。说明文档也有地方讲得不清楚,甚至有文字错误。

步骤如下:

1、 下载解压。例如E:\Qt\openssl-1.1.0,您可以自由选择解压目标地址。

2、 需要使用VS2015的命令窗口来编译,因此找到并打开


3、 

 
 试Perl,输入perl-v,如果窗口输出如下,表示前面的Perl安装成功了。

 

4、 在下图中,依次执行命令:

进入E:\Qt\openssl-1.1.0\openssl-1.1.0,设置环境。


 

5、 如果按网上的提示操作,如编译Win32

perl Configure VC-WIN32 --prefix=c:\some\openssl\dir

就掉进坑了。因为我们windows10没有权限在C盘创建目录。后续步骤更麻烦,足够浪费几天时间。最简便的方法如下:

进入E:\Qt\openssl-1.1.0\openssl-1.1.0

输入:nmake,开始编译了!

编译好的静态库文件就在这个目录里面。分别是libcrypto.liblibssl.lib

6、 分别把E:\Qt\openssl-1.1.0\openssl-1.1.0里面的两个文件libcurld.lib    libssl.lib 复制出来,放到E:\Qt\AlipayOpenapiCpp\libs里面。

7、 打开E:\Qt\AlipayOpenapiCpp\libs\include,把E:\Qt\AlipayOpenapiCpp\libs\include\下的openssl目录删掉,然后把E:\Qt\openssl-1.1.0\openssl-1.1.0\includeopenssl目录(放的都是头文件)复制过来。

 

第四章 配置环境

 

两个库编译好了,已经是最新的了。下面就是配置支付宝官网提供的SDK环境的时候了。

1、 进入E:\Qt\AlipayOpenapiCpp,打开Openapi.sln,用VS2015打开,您的VS2015必须要有Qt 5.7.0的插件。如果没有,请去微软官网上下载使用。或者在VS2015 > 工具 > 扩展与更新,搜索Qt 5.7.0插件,并安装。

2、 在解决方案资源管理器,选中工程名OpenApi,右击,选择属性。

3、 属性页配置环境如下:

1)配置属性 > VC++目录 包含目录,添加如下三项:

E:\Qt\AlipayOpenapiCpp\libs\include

E:\Qt\AlipayOpenapiCpp\libs\include\openssl

E:\Qt\AlipayOpenapiCpp\libs\include\curl

2)配置属性 > VC++目录 库目录,添加如下三项:

E:\Qt\AlipayOpenapiCpp\libs\include

3)配置属性 > C/C++ > 预处理器,添加如下一项

CURL_STATICLIB

4)配置属性 > C/C++ >代码生成 >运行库,改为

多线程 (/MT)

5)配置属性 链接器 输入 附加依赖项,添加

libssl.lib

libcrypto.lib

ws2_32.lib

wldap32.lib

libcurld.lib

libcurl.lib

GDI32.LIB

ADVAPI32.LIB
 
CRYPT32.LIB

4、源代码不需要任何改动,可以直接使用,不妨一试。成功了!

2分钟快速集成支付宝快捷支付,帮助没有做过支付宝,又需要快速集成支付宝支付的用户。配置完成之后,只需要一行代码即可代用支付宝支付。 1. 将本工程中的IntegratedAlipay文件夹导入工程中,记得选copy 2.点击项目名称,点击“Build Settings”选项卡,在搜索框中,以关键字“search” 搜索,对“Header Search Paths”增加头文件路径:“$(SRCROOT)/项目名称/IntegratedAlipay/AlipayFiles”(注意:不包括引号,如果不是放到项目根目录下,请在项目名称后面加上相应的目录名)。 3. 点击项目名称,点击“Build Phases”选项卡,在“Link Binary with Librarles” 选项中,新增“AlipaySDK.framework”、“UIKit.framework”和“SystemConfiguration.framework” 两个系统库文件。如果项目中已有这两个库文件,可不必再增加。 4. 在“AlipayHeader.h”头文件中设置kPartnerID、kSellerAccount、kAppScheme、kPrivateKey的值(注意,建议除appScheme以外的字段都从服务器请求) 5. 在需要用的地方导入“AlipayHeader.h”,并使用“[AlipayRequestConfig alipayWithPartner:...”方法进行支付 6. 在AppDelegate中处理事件回调(可直接复制下面内容): - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { //如果极简 SDK 不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给 SDK if ([url.host isEqualToString:@"safepay"]) { [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { NSLog(@"result = %@",resultDic); }]; if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回 authCode [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) { NSLog(@"result = %@",resultDic); }]; } return YES; }
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值