关于 iOS 集成支付宝 SDK 实现移动支付,获取同步结果崩溃


本人最近在对接支付宝 SDK 实现移动支付功能。从官网下了最新的DEMO,配置好参数以后,运行正常。然后按照教程一步步集成到自己的项目中去,该注意的也都注意了,编译OK。因手机已经安装了支付宝客户端,因此需要在Appdelegate 中获取同步结果,代码如下(Swift):

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    if (url.host! as String) == "safepay" {
        // 支付跳转支付宝钱包进行支付,处理支付结果
        AlipaySDK.defaultService().processOrderWithPaymentResult(url, standbyCallback: { (resultDic) in
            print("result = \(resultDic)")
        })
    }
    return true
}

// NOTE: 9.0以后使用新API接口
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    if (url.host! as String) == "safepay" {
        // 支付跳转支付宝钱包进行支付,处理支付结果
        AlipaySDK.defaultService().processOrderWithPaymentResult(url, standbyCallback: { (resultDic: [NSObject : AnyObject]!) in
            print("result = \(resultDic)")
        })
    }
    return true
}

真机运行后,跳转到支付宝支付成功,再跳回到自己的 App 时,控制台能够打印出同步结果(状态是9000支付成功的),但程序直接 crash,停在 AlipaySDK.defaultService().processOrderWithPaymentResult 方法中,控制台就显示(lldb)。

随后我尝试将 AlipaySDK.defaultService().processOrderWithPaymentResult 方法屏蔽掉,运行就正常了,不会崩溃。
我又在另外一台真机上测试,因这台真机没有安装支付宝客户端,所以在H5中完成支付后会在:


AlipaySDK.defaultService().payOrder(orderString as String, fromScheme: appScheme, callback: { (resultDic) in
            print(resultDic)
        })

方法中获取同步结果,但这次控制台没有打印同步结果,直接 crash。

这说明只要我一调用获取同步结果的方法就会 crash。无奈我又新建一个测试的 Swift 项目,同样的方法集成支付宝 SDK,一样的代码,结果发现运行正常,压根不会有之前的崩溃现象!我怀疑会不会是和别的第三方库发生冲突了,但是之前也遇到过两个三方库冲突,一般都是重定义的问题,编译也不会通过。

实在找不出问题在哪,求这里的大大们有没有遇到过我这个问题,跪谢!



相关阅读:
请问,reactjs官方get start教程看完了,还是不会,后面该看什么?
安卓机微信上的animation和svg的兼容处理
打包后的apk更换后缀名为zip之后,不能解压
怎么用js实现页面的局部刷新
自用Android壳与webview JS交互怎么传递数据给js内回调,像微信那样。
js setInterval()一直开着 不clear掉 有什么影响吗?
在下面的这段代码中输出的怎么不是b呀?
css跨域字体不发生请求?
《Python编程:从入门到实践》第十二章,外星人入侵实例中无法获取键盘按键和退出游戏
动态生成的标签,怎么添加点击事件打开对应的内容网页?
请问.net 的Encoding.UTF8.GetBytes和Encoding.Unicode.GetBytes分别作了什么?
指定域名,无法访问本地node项目(配置server.js端口为3333) 开发工具:webstorm
如何记录每次点击的选中项,并验证值和答案是否一致?
求教php正则替换怎么写
关于thinkphp中的行为扩展和laravel中的中间件
为什么我的eclipse che在docker中运行不起来?
如果通过url传参显示不同的页面
ng-clas的使用问题
laravel5.2为什么在服务器上获取不到session,storage下的sessions下的文件里面存储的有?
null === ? null全等于什么啊



快速导航

Copyright © 2016 phpStudy |