Валюта подтверждения платежа SiriKit всегда равна доллару США
Я создаю расширение Intents, я обрабатываю INSendMoneyIntent и говорю:
Отправить 25€ Джону Смиту
ответ после подтверждения приложения
Вот ваш
платеж за 25 долларов США. Вы хотите отправить это?
В намерении указан правильный код iso 3 - EUR, так почему же siri отображает неверную валюту в подтверждении платежа?
возвращение намерения
INSendPaymentIntentResponse *reponse = [[INSendPaymentIntentResponse alloc] initWithCode:INSendPaymentIntentResponseCodeReady userActivity:userActivity];
completion(reponse);
2 ответа
Решение
Вы должны добавить paymentRecord к вашему ответу в
(void) verifySendPayment:(INSendPaymentIntent *) намерение
вот так:
INSendPaymentIntentResponse *response = [[INSendPaymentIntentResponse alloc] initWithCode:INSendPaymentIntentResponseCodeReady userActivity:userActivity];
response.paymentRecord = [[INPaymentRecord alloc] initWithPayee:intent.payee payer:nil currencyAmount:intent.currencyAmount paymentMethod:nil note:intent.note status:INPaymentStatusPending];
completion(response);
Согласитесь с ответом Юлиуса, но он не показывает, где установить валюту. Вы можете создать метод
- (INPaymentRecord *) getPaymentRecord:(INSendPaymentIntent *)intent
{
INCurrencyAmount *currAmount = [[INCurrencyAmount alloc] initWithAmount: intent.currencyAmount currencyCode:@"ZAR"];
INPaymentMethod *paymentMethod = [[INPaymentMethod alloc] initWithType:INPaymentMethodTypeCredit name:@"" identificationHint:@"" icon:nil];
INPaymentRecord *paymentRecord = [[INPaymentRecord alloc] initWithPayee:nil payer:nil currencyAmount: intent.currencyAmount paymentMethod:paymentMethod note:nil status:INPaymentStatusCompleted ];
return paymentRecord;
}
А затем из метода делегата вы просто вставляете присвоение paymentrecord между вашими двумя вышеупомянутыми утверждениями:
INSendPaymentIntentResponse *response = [[INSendPaymentIntentResponse alloc] initWithCode:INSendPaymentIntentResponseCodeSuccess userActivity:nil];
**response.paymentRecord = [self getPaymentRecord:intent];**
completion(response);