最近、Alipay SDK に接続してモバイル決済機能を実装しました。公式サイトから最新のDEMOをダウンロードし、パラメータを設定すると正常に動作します。次に、チュートリアルを段階的に実行して、注意すべき点すべてに注意してコンパイルします。携帯電話には Alipay クライアントがインストールされているため、Appdelegate で同期結果を取得する必要があります。コードは次のとおりです (Swift):
関数アプリケーション(アプリケーション: UIApplication、openURL URL: NSURL、sourceApplication: String?、アノテーション: AnyObject) -> Bool {
リーリー}
// 注: 新しい API インターフェイスは 9.0 以降で使用されます。
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
}
実機で実行し、Alipay にジャンプして支払いが成功した後、自分のアプリに戻ると、コンソールは同期結果 (ステータスは 9000、支払い成功) を出力できますが、 AlipaySDK.defaultService().processOrderWithPaymentResult メソッドでは、プログラムが直接クラッシュして停止します。コンソールには (lldb) が表示されます。
次に、AlipaySDK.defaultService().processOrderWithPaymentResult メソッドをブロックしようとしましたが、クラッシュすることなく正常に実行されました。別の実機でテストしました。この実機には Alipay クライアントがインストールされていないため、H5 で支払いが完了すると、次のように表示されます。
AlipaySDK.defaultService().payUrlOrder(orderString as String, fromScheme: appScheme, callback: { (resultDic) inリーリー
同期結果はメソッドで取得されますが、今回はコンソールが同期結果を出力せず、直接クラッシュします。これは、同期結果を取得するメソッドを呼び出すとすぐにクラッシュすることを意味します。仕方なく、テスト用に新しい Swift プロジェクトを作成し、同じ方法で Alipay SDK を統合し、同じコードを使用したところ、正常に動作し、クラッシュはまったく発生しませんでした。他のサードパーティ ライブラリと競合しているのではないかと思いますが、以前に 2 つのサードパーティ ライブラリ間で競合が発生したことがあります。これは通常、再定義の問題であり、コンパイルが通過しません。
业精于勤,荒于嬉;行成于思,毁于随。