title: Siri Integration for payments issue
body: <p>In my application I support only EUR and USD currency. So when user tries to send payment with Siri to GBP, for example, I ask him to choose between EUR and USD.</p>
  
  <p>After that on the screen I see:</p>
  
  <ul>
  <li>100 $</li>
  <li>100 EUR</li>
  </ul>
  
  <p>If I choose 100$ in <code>intent.currencyAmount!.currencyCode</code> I always have GBP (but user chose dollars). It's very strange.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>func resolveCurrencyAmount(forSendPayment intent: INSendPaymentIntent, with completion: @escaping (INCurrencyAmountResolutionResult) -&gt; Void) {
          if let currencyAmount = intent.currencyAmount { // need to check if we have proper value
              if let amount = currencyAmount.amount {
  
                  if amount.doubleValue == 0 { // wrong amount
                      completion(INCurrencyAmountResolutionResult.unsupported())
                      return
                  }
  
                  if let currencyCode = currencyAmount.currencyCode {
                      if let _ = EnumCurrency(rawValue: currencyCode) { // we found currency code that we know
                          completion(INCurrencyAmountResolutionResult.success(with: INCurrencyAmount(amount: NSDecimalNumber(value: abs(amount.doubleValue)), currencyCode: currencyCode)))
                          return
                      }
                  }
  
  
                  // if we are here so we don't have proper currency, try to offer user to choose the same amount but with all possible currencies
                  let disambiguationArray: [INCurrencyAmount] = EnumCurrency.allValues.map({ (currency) -&gt; INCurrencyAmount in
                      return INCurrencyAmount(amount: NSDecimalNumber(value: abs(amount.doubleValue)), currencyCode: currency.rawValue)
                  })
                  completion(INCurrencyAmountResolutionResult.disambiguation(with: disambiguationArray))
              }
          }
          else { // we don't have value
              completion(INCurrencyAmountResolutionResult.needsValue())
          }
      }
  
  enum EnumCurrency : String {
      case EUR = "EUR"
      case USD = "USD"
  
      static let allValues = [EUR, USD]
  }
  </code></pre>
  
  <p><strong>Update: how to reproduce</strong> (according to David question):</p>
  
  <p>1) create a new intent extantion</p>
  
  <p>2) in plist file leave only one type of intent: <a href="http://take.ms/pt16N" rel="noreferrer">http://take.ms/pt16N</a></p>
  
  <p>3) Your IntentHandler class (will be created by xCode) must confirm to INSendPaymentIntentHandling protocol</p>
  
  <p>4) In IntentHandler class add this:</p>
  
  <pre><code>func resolveCurrencyAmount(forSendPayment intent: INSendPaymentIntent, with completion: @escaping (INCurrencyAmountResolutionResult) -&gt; Void) {
              if let currencyAmount = intent.currencyAmount { // need to check if we have proper value
                  if let amount = currencyAmount.amount {
  
                      if amount.doubleValue == 0 { // wrong amount
  
  
                   completion(INCurrencyAmountResolutionResult.unsupported())
                      return
                  }
  
                  if let currencyCode = currencyAmount.currencyCode {
                      if let _ = EnumCurrency(rawValue: currencyCode) { // we found currency code that we know
                          completion(INCurrencyAmountResolutionResult.success(with: INCurrencyAmount(amount: NSDecimalNumber(value: abs(amount.doubleValue)), currencyCode: currencyCode)))
                          return
                      }
                  }
  
  
                  // if we are here so we don't have proper currency, try to offer user to choose the same amount but with all possible currencies
                  let disambiguationArray: [INCurrencyAmount] = EnumCurrency.allValues.map({ (currency) -&gt; INCurrencyAmount in
                      return INCurrencyAmount(amount: NSDecimalNumber(value: abs(amount.doubleValue)), currencyCode: currency.rawValue)
                  })
                  completion(INCurrencyAmountResolutionResult.disambiguation(with: disambiguationArray))
              }
          }
          else { // we don't have value
              completion(INCurrencyAmountResolutionResult.needsValue())
          }
      }
  
  enum EnumCurrency : String {
      case EUR = "EUR"
      case USD = "USD"
  
      static let allValues = [EUR, USD]
  }
  
  // MARK: - Confirm
  
      func confirm(sendPayment intent: INSendPaymentIntent, completion: @escaping (INSendPaymentIntentResponse) -&gt; Void) {
  // success
          completion(INSendPaymentIntentResponse(code: INSendPaymentIntentResponseCode.success, userActivity: nil))
  
  }
  
  // MARK: - Handle
  
      func handle(sendPayment intent: INSendPaymentIntent, completion: @escaping (INSendPaymentIntentResponse) -&gt; Void) {
  
  // just for test
  completion(INSendPaymentIntentResponse(code: .failureRequiringAppLaunch, userActivity: userActivity))
  }
  </code></pre>
  
  <p>5) And you can launch with Siri: you will see that if you choose Chinese currency or any other not regular currency and then I in code make you to choose between EUR and USD, but after that in RESOLVE function (called when siri want to resolve currency on more time) you will get Chinese currency (so you don't need to add any code for buttons like David asked, because all the button interface will be provided by Siri)</p>