如何将Paypal信息发送到Firebase Swift代码?

问题描述

我想通过使用PayPal访问用户付款后必须保存的合法信息。这是当用户选择通过PayPal付款时的代码,但是在用户完成付款后如何获取PayPal提供的信息。以及如何将它们发送到Firebase?

    
    @IBAction func btnPaypal(_ sender: UIButton) {
        
        let payPalDriver = BTPayPalDriver(apiClient: braintreeClient)
            payPalDriver.viewControllerPresentingDelegate = self
            payPalDriver.appSwitchDelegate = self // Optional
               
               
        // Specify the transaction amount here. "2.32" is used in this example.
        let request = BTPayPalRequest(amount: lblSubtotal.text!)
            request.currencyCode = "USD" // Optional; see BTPayPalRequest.h for more options

            payPalDriver.requestOneTimePayment(request) { (tokenizedPayPalAccount,error) in
                if let tokenizedPayPalAccount = tokenizedPayPalAccount {
                   print("Got a nonce: \(tokenizedPayPalAccount.nonce)")

        // Access additional information
                    print("------------ paypal receipt -------------")
                    self.payPal = true
                let email = tokenizedPayPalAccount.email
                    debugPrint(email!)
                let firstName = tokenizedPayPalAccount.firstName
                    debugPrint(firstName!)
                let lastName = tokenizedPayPalAccount.lastName
                    debugPrint(lastName!)
                let phone = tokenizedPayPalAccount.phone
                    debugPrint(phone as Any)
                    
        // ....
                    let postalAddress = tokenizedPayPalAccount.billingAddress
                    // Access the properties of the address
                    debugPrint(postalAddress as Any)
                    let streetAddress = postalAddress?.streetAddress
                    debugPrint(streetAddress as Any)
                    let extendedAddress = postalAddress?.extendedAddress
                    debugPrint(extendedAddress as Any)
                    let locality = postalAddress?.locality
                    debugPrint(locality as Any)
                    let countryCodeAlpha2 = postalAddress?.countryCodeAlpha2
                    debugPrint(countryCodeAlpha2 as Any)
                    let postalCode = postalAddress?.postalCode
                    debugPrint(postalCode as Any)
                    let region = postalAddress?.region
                    debugPrint(region as Any)
                    

        // See BTPostalAddress.h for details
//                let billingAddress = tokenizedPayPalAccount.billingAddress
//                    debugPrint(billingAddress as Any)
                let shippingAddress = tokenizedPayPalAccount.shippingAddress
                    debugPrint(shippingAddress!)
                    
                    
                    for obj in self.arrayCart {
                          let invoiceID = self.ref.childByAutoId().key
                          let userID = Auth.auth().currentUser?.uid

                          let invoice = [
                              "invoiceID" : invoiceID,"buyerID" : userID,"payPal info" : ["payPal email" : email,"first name" : firstName,"last name" : lastName,"phone" : phone,"postalAddress" : postalAddress,"streetAddress" : streetAddress,"extendedAddress" : extendedAddress,"locality" : locality,"countryCodeAlpha2" : countryCodeAlpha2,"postalCode" : postalCode,"region" : region,"shippingAddress" : shippingAddress]
                              

                              
                              ] as [String : Any]
                          self.ref.child("invoice").child(invoiceID!).setValue(invoice)
                    
                    }
                    
                    
                    
                    
                 print("------------ paypal receipt end -------------")
                    } else if let error = error {
                    // Handle error here...
                    print("error -------- \(error)")
                    } else {
                    // Buyer canceled payment approval
                   // alert
    }
    

错误:

'InvalidFirebaseData',原因:'(setValue :)无法将类型为BTPostalAddress的对象存储在payPal info.shippingAddress。只能存储NSNumber,NSString,NSDictionary和NSArray类型的对象。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)