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

Apple Pay Token交易金额不正确

逑景铄
2023-03-14

Apple Pay token包含错误的transactionAmount信息。例如,如果交易金额为1.10美元,在iOS设备上,Apple Pay屏幕剧照显示正确的金额,但paymentToken解密后返回110

我使用这个库使用我自己的公-私钥对解密Apple Pay令牌

class ViewController: UIViewController {
...
 @IBAction func payBtn(_ sender: UIButton) {
        do {
            let paymentItem = PKPaymentSummaryItem.init(label: "Test item", amount: NSDecimalNumber(value: 1.10))
            let paymentNetworks = [PKPaymentNetwork.amex, .discover, .masterCard, .visa]

            if PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: paymentNetworks) {

                let request = PKPaymentRequest()
                request.currencyCode = "SGD" // 1
                request.countryCode = "SG" // 2
                request.merchantIdentifier = "merchant.com.xxxxx" // 3
                request.merchantCapabilities = PKMerchantCapability.capability3DS // 4
                request.supportedNetworks = paymentNetworks // 5
                request.paymentSummaryItems = [paymentItem] // 6

                guard let paymentVC = PKPaymentAuthorizationViewController(paymentRequest: request) else {
                    displayDefaultAlert(title: "Error", message: "Unable to present Apple Pay authorization.")
                    return
                }

                paymentVC.delegate = self
                self.present(paymentVC, animated: true, completion: nil)

            } else {
                displayDefaultAlert(title: "Error", message: "Unable to make Apple Pay transaction.")
            }
        } catch {
            print(error.localizedDescription)
        }

    }
}

extension ViewController: PKPaymentAuthorizationViewControllerDelegate {
    func paymentAuthorizationViewControllerDidFinish(_ controller: PKPaymentAuthorizationViewController) {
        dismiss(animated: true, completion: nil)
    }
    func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, handler completion: @escaping (PKPaymentAuthorizationResult) -> Void) {

        let token = String(data: payment.token.paymentData, encoding: .utf8)
        let utf8str = token!.data(using: .utf8)

        if let base64Encoded = utf8str?.base64EncodedString()
        {
            print("Encoded:  \(base64Encoded)")

            //Send token to backend server to decrypt
        }
    }
}

共有1个答案

融烨华
2023-03-14

新元的最小单位是美分,是一美元的1/100。因此,我需要将美元金额转换为分整数乘以100。然后,在发送到Adyen时使用此值

 类似资料:
  • 我们正在开发旅游网站,用于预订航班、酒店、汽车等。它是基于产品的软件。客户(购买我们的软件)将成为“主要代理”。他的交易总额将是INR(印度卢比货币)。所有航班、酒店或汽车预订仅以INR进行。 现在他有权创建他的“子机构”。子机构货币可以是美元或印度卢比等。这意味着“主要机构”可能在世界各地都有其子机构。现在,每当“子机构”登录时,他的交易报告都应该使用他的货币。如果其货币为“澳元”,则交易总额应

  • 我做了一个测试交易使用测试信用卡号码在贝宝支付流链接。交易状态为以下,交易状态:6响应代码:A 错误代码:00金额未记入沙盒业务账户。我试图在错误代码引用的帮助下找到一个解决方案。但是无法得到解决方案。帮助我成功完成测试事务。

  • 我正在使用贝宝保险库服务,从存储的信用卡转移金额到贝宝pro帐户。 下面是我跟踪的文档链接:https://developer.paypal.com/docs/integration/direct/rest-vault-overview。 成功整合后,我已经检查它是收取5.9%的交易费,而我听说贝宝收费只有2.9%的情况下,一个专业帐户。 请确认从信用卡向贝宝帐户转账的贝宝保险库服务的费用。如有任

  • 由于某种原因,当我试图使用SDK授权PayPal支付时,我的日志中不断出现以下错误: 错误:访问https://api.sandbox.paypal.com/v1/payments/payment时获得Http响应代码400。{“name”:“validation_error”,“details”:[{“field”:“Transactions[0].amount”,“Issue”:“Transa

  • 问题内容: 我叫两种方法,第一种方法更新一个表,第二种方法在另一个表中插入一条记录。当第二笔交易失败时,它不会回退第一笔交易。 这是我的支持豆: EJB接口: EJB类: 我的自定义例外: 编辑: 添加了DAO类: 和DAO接口: 问题答案: 在这种情况下,关键问题是某些JBoss版本中数据源中的默认错误。原始代码很好,并且可以在其他应用程序服务器(WebSphere App Server和轻量级

  • 下表显示了客户姓名以及每笔交易的销售人员佣金。我如何才能在下表中添加一列,显示每个人的佣金总额?例如,“Graham Zusi”仍然有两行,每一行对应一个唯一的事务。然而,第三栏将对他的两项交易进行总结。通过这种方式,可以看到单个交易金额以及从每个客户那里并排获得的总体佣金 谢谢你的帮助。 我试过使用GroupBy和Sum,但似乎无法实现。