Ios 苹果支付代币';s的交易金额不正确

Ios 苹果支付代币';s的交易金额不正确,ios,swift,payment-gateway,applepay,Ios,Swift,Payment Gateway,Applepay,Apple Pay token包含错误的TransactionMount信息。例如,如果交易金额为1.10美元,在iOS设备上,Apple Pay屏幕仍然显示正确的金额,但paymentToken解密后返回110美元 我使用这个库使用我自己的公钥-私钥对解密Apple Pay令牌 我的示例代码 class ViewController: UIViewController { ... @IBAction func payBtn(_ sender: UIButton) { do

Apple Pay token包含错误的TransactionMount信息。例如,如果交易金额为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
        }
    }
}

我在尝试向Adyen(支付网关)发出支付请求时发现了这一点。请求必须同时包含
amount
字段和
paymentToken
字段,但从未成功,因为
amount
paymentToken
中的金额不匹配。然后我尝试了
amount
110而不是1.10,然后请求成功了,但讽刺的是,在Adyen dashboard中,它仍然知道交易金额是1.10美元

我预计Apple Pay token中的
TransactionMount
为1.10


请帮助解释为什么设备上显示的苹果支付金额和@Don建议的令牌中显示的苹果支付金额存在差异
新加坡元新元的最小单位是美分,相当于一美元的1/100。因此,我需要将美元金额乘以100,转换成分整数。然后,当发送到Adyen时使用此值,支付处理程序需要货币的最小单位,因此110=1.10您对此有任何参考吗?