Валюта подтверждения платежа 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);
Другие вопросы по тегам