Home  >  Q&A  >  body text

关于 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,一样的代码,结果发现运行正常,压根不会有之前的崩溃现象!我怀疑会不会是和别的第三方库发生冲突了,但是之前也遇到过两个三方库冲突,一般都是重定义的问题,编译也不会通过。

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

ringa_leeringa_lee2647 days ago872

reply all(0)I'll reply

No reply
  • Cancelreply