坑爹的支付宝,一两年都没有更新sdk了,这两天突然更新sdk,而且更新的变化特别大,所以只能对之前的支付宝快捷支付插件重新写了一遍。
这样既顺应了支付宝的更新,同时也支持了ios8。
废话少说,集成过之前版本的,先把之前的所以代码删掉包括文件。然后全新的集成新版本插件。【所有拖放是在xcode下面进行】
需要完成Phonegap 的支付宝快捷支付 需要先配置好支付宝相应的信息具体看
phonegap -Android客户端集成支付宝快捷支付(一)
1.插件包里面有很多文件,解压后能大概看一下,同时最好下载支付宝的快捷支付的接口文档,看看在结合我的文档集成,效果会好一些。
2.将 AlipaySDK.bundle , AlipaySDK.framework ,libcrypto.a,libssl.a 拖进xcode的根目录下面,然后在把AlipaySDK.framework ,libcrypto.a,libssl.a 拖到framworks目录下面。
3.将src目录下面的openssl ,Util ,Order.h ,Order.m 拖放到你的class目录下面,但是必须保证文件是放到 项目文件夹里面。
4.文件夹Plugins里面是插件文件,拖放到Plugins目录下面,这里是插件文件,修改Pgalipay.m里面的商家信息。具体打开查看。
5.修改AppDelegate.m,根据插件文件的说明。这里是做回调处理的,可以看说明文件。
6.在config.xml里面引用插件。[2.x 和3.x 略有不同具体参考本地文件例子]
<featurename="Pgalipay"> <paramname="ios-package"value="Pgalipay"/> </feature> 7.引入js文件具体查看插件包里js文件的样例! 在js里面需要注意的是: resultString 方法 是用来接收支付回调数据信息的。这个方法是在你的手机上有支付宝钱包app的情况下用到。 还有在插件调用的返回方法中也需要做回调数据处理,这个方法是在你的手机上没有支付宝钱包app的情况下用的,支付宝会启动一个简约的支付宝界面。 需要对这2个地方都做回调处理。 添加完文件之后,我们需要做一些配置: 1.添加自定义URL Scheme 如何添加请百度。或插件官方手册!
添加的时候只需要 填写URL Scheme,其他不用动。填写的就是你项目的name。
URL Scheme 在回调结果使用,建议起名稍复杂一些,尽量避免同其他程序冲突。
这个名字设置好之后,打开 Pgalipay.m,修改里面
NSString *appScheme = @”pgtest”; //这个pgtest 是你应用的名称也就是再URL Scheme
2. 点击项目名称,点击“Build Settings”选项卡,在搜索框中,以关键字“search”
搜索,对“Header Search Paths”增加头文件路径: $(SRCROOT)/项目名称。
如果头文件信息已增加,可不必再增加。
3. 点击项目名称,点击“Build Phases” 选项卡, 在“Link Binary with Librarles”选项中,
新增“SystemConfiguration.framework”系统库文件。如果商户项目中已有这两个库文件,可不必再增加。
4.细节优化。再Pgalipay.m里面需要修改几个地方
NSString *appScheme = @”pgtest”; //这个pgtest 是你应用的名称也就是再URL Scheme设置的,需要修改。
order.notifyURL = url; //回调URL; //回调URL 自己自定义, 最好是通过支付宝的回调地址对订单的支付结果做双重验证,以免导致外界伪造支付结果,导致财物损失,可以写死到代码里面,或者通过js传递进去。
//服务器异步通知页面路径 参数 notify_url,如果商户没设定,则不会进行该操作
完成以上的文件添加和项目调整,基本上就完成了支付宝的集成。
当然在html页面中,js的处理还是需要自己根据业务逻辑去处理的,特别是支付返回的值需要自己通过js方法去处理。
注意:
配置好ios项目后,编译时提示 openssl中 rsa.h 中 #include <openssl/asn1.h> not found,
这个需要调整search header 的路径。或者把 相应的文件目录放到相应的文件夹下面。