当前位置: 首页 > 知识库问答 >
问题:

错误:Apple pay未完成

宇文迪
2023-03-14

我已经使用Passkit框架在我的iOS应用程序中实现了apple pay。为了建立apple Pay,我做了所有这些事情。我在用沙箱帐户。我在钱包应用程序中添加了卡,这些卡是我从这个链接复制的测试卡。我正在使用的代码:

 print("\(((self.grandTotalLabel.text!).replacingOccurrences(of: "$", with: "")))")

        let paymentNetworks = [PKPaymentNetwork.amex]

        if PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: paymentNetworks){

            paymentRequest.supportedNetworks = paymentNetworks
            paymentRequest.merchantCapabilities = .capability3DS
            paymentRequest.requiredShippingAddressFields = [.all]
            paymentRequest.paymentSummaryItems = self.itemToSell(shipping: 10.0)

                            let sameDayShipping = PKShippingMethod(label: "Same day divilery", amount: 12.99)
            sameDayShipping.detail = "Same day divilery Detail"
            sameDayShipping.identifier = "sameDay"

            let twDaysShipping = PKShippingMethod(label: "Two days divilery", amount: 4.99)
            twDaysShipping.detail = "Two days divilery Detail"
            twDaysShipping.identifier = "twoDays"

            let freeShipping = PKShippingMethod(label: "Free shipping divilery", amount: 0.0)
            freeShipping.detail = "Free shipping divilery Detail"
            freeShipping.identifier = "freeShipping"

           // paymentRequest.shippingMethods = [sameDayShipping,twDaysShipping, freeShipping]
            let applePayVC = PKPaymentAuthorizationViewController(paymentRequest: paymentRequest)

            applePayVC?.delegate = self

            self.present(applePayVC!, animated: true) {

                print("ApplePayViewcontroller")

            }
        }
        else{

            print("Please set up for apple pay")

        }




func itemToSell(shipping:Float) -> [PKPaymentSummaryItem]{

        print(Double("\(((self.grandTotalLabel.text!).replacingOccurrences(of: "$", with: "")))") as Any)

        let dishItems = PKPaymentSummaryItem(label: "FoodKonnect", amount: NSDecimalNumber(string: "21.00"))
        let discount = PKPaymentSummaryItem(label: "Discount", amount: 1.0)
        let shipping = PKPaymentSummaryItem(label: "Shipping", amount: NSDecimalNumber(string: "\(shipping)"))

        let totalAmount = dishItems.amount.adding(discount.amount)

        let totalPrice = PKPaymentSummaryItem(label: "FoodKonnect application", amount: totalAmount)

        return [dishItems, discount,shipping, totalPrice]


    }

我正在使用PKPaymentAuthorizationViewControllerDelegate的所有委托:

extension CartViewController:PKPaymentAuthorizationViewControllerDelegate{

    func paymentAuthorizationViewControllerDidFinish(_ controller: PKPaymentAuthorizationViewController) {

        controller.dismiss(animated: true, completion: nil)

    }

   // @available(iOS 11.0, *)

    func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didSelectShippingContact contact: PKContact, completion: @escaping (PKPaymentAuthorizationStatus, [PKShippingMethod], [PKPaymentSummaryItem]) -> Void) {
        print("\(#function)")

    }
    @available(iOS 11.0, *)
    func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didSelect shippingMethod: PKShippingMethod, handler completion: @escaping (PKPaymentRequestShippingMethodUpdate) -> Void) {
        print("\(#function)")

    }



    @available(iOS 11.0, *)
    func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, handler completion: @escaping (PKPaymentAuthorizationResult) -> Void) {


        print("\(#function)")

    }

}

Apple pay viewcontroller正在显示,此屏幕显示的是一个处理圆视图。

但几秒钟后,我收到了这个错误消息:

共有1个答案

齐俊达
2023-03-14

在具有完成/处理程序PKPaymentAuthorizationViewControllerDelegate的每个已实现的委托函数中,必须使用适当的参数(最重要的是使用适当的状态)调用该块。

在iOS11上(大约)15-20秒内没有调用该块,iOS会用您看到的错误终止支付。在IOS10上,它将允许您无限期地旋转processing,直到调用complety块。

我也遇到了同样的问题,结果是在一个边缘情况下,我根本没有调用handler块。

 类似资料:
  • 问题内容: 错误代码1603。Java更新未完成。我有一个Java错误 我认为这是服务器问题,这是我第一次创建服务器且用户界面未打开。 问题答案: 从https://java.com/en/download/help/error_1603.xml 选项1:重新启动系统并卸载旧版本 在安装之前重新启动系统 一旦看到1603错误,请重新启动系统。 下载并安装脱机安装程序包。 出现提示时,在下载对话框中

  • 问题内容: 我正在尝试通过Homebrew安装node.js。不幸的是,我得到这个错误: 因此,我尝试手动链接节点… 没有运气,所以我尝试强制链接节点… 我在任何方面都不熟悉dtrace,而且害怕弄乱权限,所以我尝试sudo。 我尝试通过卸载节点,然后重试安装,但是没有运气。 问题答案: 现在,用于node.js的Homebrew软件包再次包含了npm,因此,当我错过了homebrew软件包中有关

  • 我试图通过Homebrew安装node.js。不幸的是,我得到了这个错误: 然后我尝试手动链接节点... 运气不好,所以我试着强行连接节点... 我对dtrace在任何方面都不熟悉,我害怕弄乱权限,所以我尝试了sudo。。 我尝试通过卸载节点并重试安装,但没有运气。

  • 问题内容: 我有一个相当简单的Angular应用程序,可以在我的开发机上正常运行,但是在部署它后却出现此错误消息(在浏览器控制台中)失败: 除此之外,没有其他消息。页面首次加载时会发生这种情况。 我正在运行ASP.NET MVC5,Angular 1.2RC3,并通过git推送到Azure。 谷歌搜索还没有发现任何有趣的东西。 有什么建议? 编辑: 我正在使用TypeScript,并用该变量定义依

  • 问题内容: 在该线程中,我找到了一种在中实现功能的方法(并且,但与此无关)。 尝试在中实施此功能时,会引发一些异常。以下代码将演示该问题。它是如此简单,与我使用的方式非常相似,效果很好。 有人可以帮我找到解决方案吗? 下面的代码: ( 请注意,我使用) 这是错误消息我得到: ( 这是一个有点长:d ) 问题答案: 您的代码中没有涉及。我认为应该读这样的东西… 如果你想绑定到(以便文本字段将更新的选

  • 当我运行模拟器时,以下错误显示为警报: 操作无法完成。(LaunchServicesError错误0。) 我试过很多关于堆栈溢出的答案,但它们对我都不起作用。 Feb 18 14:48:12 com.apple.dt.xcode[32825]:错误域=LaunchServicesError Code=0“(null)”userInfo={Error=MissingBundleExecutable,