美文网首页
iOS3ds支付

iOS3ds支付

作者: 東玖零 | 来源:发表于2021-09-01 17:01 被阅读0次

    背景:接到开发任务,需要接入一个支付(啥也不知道,啥也不敢问)。
    资料:集成指南

    支付流程,大概是资料里说明的第一个流程 Hosted Checkout

    重点是下载SDK,位置在右侧栏: Mobile SDK

    打开demo我们得到app中的流程:

    // MARK: - 1. Create Session
    // MARK: - 2. Set card info
    // MARK: - 3. Update Session With Payer Data
    // MARK: - 4. Check 3DS Enrollment
    // MARK: - 5. Process Payment

    配置好区域(Asia Pacific)和商户号(来源文档),填写上测试卡号(卡号来源),一路就干到了最后一个页面(前提是服务端将对应的服务端代码布好)。

    WX20210901-155957@2x.png

    这个页面点击提交通过后,我们会得到一个sessionId,将这个通过接口提交给服务器,服务器使用sessionId获取一个token保存在数据库,用户再来付款的时候就不需要输入卡号了,直接使用token就可以扣款了。

    流程是跑通中间经历了各种错,也花了很久,中途遇到xcode升级,导致xcode升级后MPGSDK.framework无法使用。
    报错:

    module compiled with Swift 5.2.2 cannot be imported by the Swift 5.3.2 compiler
    

    搜索这个错误后下载低版本swft 5.2.2的工具包,切换到5.2.2又报:

    Undefined symbols for architecture x86_64:
    "___isOSVersionAtLeast", referenced from:
    [IQToolbar fixedSpaceBarButton] in IQToolbar.o
    

    工程中确实使用了IQKeyboardManager的三方库,还是手动集成,无奈去下载了一个最新的库,但错误依旧。

    搞了几个小时,近乎崩溃了,最后只能切换新的swift(5.3.2),最后想到我去更新个最新的MPGSDK.framework不就可以了。

    找MPGSDK以前下载的源代码,git pull更新一下,然后开始编译,得到最新的包果然成功解决。

    当我打包又遇到了报错:

    ld: warning: ignoring file Library/MPG/MPGSDK.framework/MPGSDK, missing required architecture armv7 in file Library/MPG/MPGSDK.framework/MPGSDK (3 slices)
    Undefined symbols for architecture armv7:
      "nominal type descriptor for MPGSDK.Gateway", referenced from:
          _got.$s6MPGSDK7GatewayCMn in MPGBindingCreditCard.o
      "nominal type descriptor for 
    

    意思是缺少MPGSDK.framework不包含armv7,于是我使用命令查看一下。

     lipo -info MPGSDK.framework/MPGSDK
    Architectures in the fat file: MPGSDK.framework/MPGSDK are: x86_64 arm64
    

    打开sdk源码工程,修改编译架构为armv7编译出只支持armv7的SDK。
    再使用命令将armv7合并到arm64的sdk里,命令如下:

    lipo -create t1/MPGSDK.framework/MPGSDK t2/MPGSDK.framework/MPGSDK -output t1/MPGSDK.framework/M
    PGSDK
    

    说明:t1里是带arm64的t2是只支持armv7的。
    命令执行成功后,使用查看命令:

    lipo -info t1/MPGSDK.framework/MPGSDK
    Architectures in the fat file: t1/MPGSDK.framework/MPGSDK are: x86_64 i386 armv7 arm64
    

    将最新的SDK拖到工程里,再打包就成功了。

    相关文章

      网友评论

          本文标题:iOS3ds支付

          本文链接:https://www.haomeiwen.com/subject/xmgxwltx.html