簡體   English   中英

WorldPayCSE 的 Xamarin IOS 綁定庫

[英]Xamarin IOS Binding library for WorldPayCSE

我需要在 xamarin 表單中為 IOS 和 android 使用 worldPay CSE(客戶端加密)SDK( https://developer.worldpay.com/docs/wpg/clientsideencryption ),所以我創建了 2 個綁定庫。 我已經成功地為 android 創建了一個包裝器,這工作正常,但我的 IOS 有問題。

我下載了https://github.com/Worldpay/worldpay-cse-lib-ios並按照以下教程創建綁定庫並使用客觀夏普https://www.xamboy.com/2020/07映射 API 定義/20/creating-a-xamarin-binding-library-for-ios-and-android-part-1/

我能夠構建解決方案,它似乎是從頭文件創建對象,但是當我運行 worldpayCSE.Encrypt(wpCardData, out NSEncryptError) 方法時,我收到以下錯誤:

拋出的 Objective-C 異常。 名稱:NSInvalidArgumentException 原因:-[NSTaggedPointerString isEmpty]:無法識別的選擇器發送到實例 0xff2d7cc5da80afba 本機堆棧跟蹤:0 CoreFoundation 0x000000010b2ebfba __exceptionPreprocess + 242 1 libobjc.A.dylib
0x000000011c694ff5 objc_exception_throw + 48 2 CoreFoundation
0x000000010b2fad2f +[NSObject(NSObject) instanceMethodSignatureForSelector:] + 0 3 CoreFoundation
0x000000010b2f04cf轉發+ 1455 4 CoreFoundation
0x000000010b2f27a8 _CF_forwarding_prep_0 + 120 5
Test3dsecureSolution.iOS 0x000000010a6d180a -[WPCardValidator validateNumber:withExpectedLength:] + 61 6 Test3dsecureSolution.iOS 0x000000010a6d18ba -[WPCardValidator validateMonth:] + 48 7 validatee00000000000000000Test3d7Test3dsecureSolution.iOS:
Test3dsecureSolution.iOS 0x000000010a6d3b66 +[WorldpayCSE 驗證:] + 72 9 Test3dsecureSolution.iOS
0x000000010aa41089 xamarin_dyn_objc_msgSend + 217 10 ???
0x00000001592f5e10 0x0 + 5791243792

它似乎在驗證方法上失敗了。 但是,當我在 xcode 中運行本機演示項目時,它工作正常,所以我很確定問題不在於框架文件,我懷疑我可能遺漏了一些東西

我已經檢查了 API 定義,而 2 個驗證標簽確實標記了。 它們似乎與 GetPublic Key 和 GetJson 有關。 兩者都不需要接觸xamarin IOS,看起來是紅鷺

我已將我的解決方案的副本推送到 git hub。 加密方法從about頁面的按鈕通過依賴服務觸發到WorldPayClient.cs的IOS實現

https://github.com/Law85/XamarinForms.WorldPayCSEBinding

這也是我為生成 API 定義而運行的腳本 --output=WorldpayCSE --namespace=WorldpayCSE --sdk=iphoneos14.5 /Users/lukewinthorpe/Desktop/WorldPay/WorldpayCSE.framework/Headers/*。 h -scope /Users/lukewinthorpe/Desktop/WorldPay/WorldpayCSE.framework/Headers

任何人都可以拋出我的方式的任何幫助將不勝感激。

謝謝盧克

如果將來有人需要它,我設法解決了這個問題。 生病檢查它到回購。 所以看起來我忽略了世界支付網站上的第 2 步

替代方法:手動安裝 要使用手動方法:

1.下載並導入WorldpayCSE.framework和openssl.framework到你的項目中。 為此,請使用 GitHub 發布頁面。

2.在 Xcode 中,從 Build Settings 將 -ObjC 添加到 Other Linker Flags。

https://developer.worldpay.com/docs/wpg/clientsideencryption/ios-integration

在框架 open.ssl 和 WorldPayCSE 的屬性部分,確保將鏈接器標志屬性設置為 -ObjC

感覺像個白痴,但至少它的工作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM