Платежное намерение Sirikit все еще не работает

Я работаю над приложением, в котором пытаюсь реализовать requestPaymentIntent. Сначала он работал, но в какой-то момент он начал выполнять поиск Bing, а в какой-то момент просто сказал, что нашел ошибку, и после этого ничего не делал. На это также указывалось в теме: намерение платежного домена показывает интернет-результат вместо намерения пользовательского интерфейса или подтверждения намерения с помощью Sirikit.

Одно решение, отмеченное как хорошее, было предоставлено там Уильямом Гинденбургом: «Мы обнаружили, что вам нужно добавить платежную запись в INSendPaymentIntentResponse, прежде чем возвращать ее из методов подтверждения и обработки в обработчике платежных намерений. исправит это для вас».

Я пытался это сделать, но не могу понять. У меня в основном проблемы с определением статуса.

Итак, в моем методе обработки я сначала определяю userActivity. Затем я инициализирую объект ответа.

let response = INRequestPaymentIntentResponse (code: .success, userActivity: userActivity)

Затем я хочу добавить платежную запись в объект ответа:

response.paymentRecord = INPaymentRecord(payee: nil, payer: nil, currencyAmount: intent.currencyAmount, paymentMethod: nil, note: intent.note, status: ???)

Некоторые параметры мне не нужны/не используются, поэтому я заполнил nil. Две вещи, которые я хотел бы иметь в своем приложении: сумму, которую нужно заплатить, и за что это нужно заплатить (примечание). На месте ??? Мне нужно заполнить статус, я пробовал несколько вещей, но не могу понять. Поскольку несколько человек уже заработали, не могли бы вы помочь мне объяснить, как это работает? Большое спасибо!


person HSmilde    schedule 15.08.2016    source источник


Ответы (1)


Apple действительно не указывает, какой статус использовать для подтверждения, но в настоящее время это работает для меня.

Подтвердить звонок:

response.paymentRecord = [self makePaymentRecordForIntent:intent withStatus:INPaymentStatusPending];

Отправить звонок:

intentResponse.paymentRecord = [self makePaymentRecordForIntent:intent withStatus:INPaymentStatusCompleted];

Универсальный код:

-(INPaymentRecord *)makePaymentRecordForIntent:(INSendPaymentIntent *)intent withStatus:(INPaymentStatus)status {

INPaymentMethod *payMethod = [[INPaymentMethod alloc] initWithType:INPaymentMethodTypeChecking
                                                              name:@"Gold Star Checking"
                                                identificationHint:@"1234"
                                                              icon:nil];

INPersonHandle *senderHandle = [[INPersonHandle alloc] initWithValue:@"[email protected]" type:INPersonHandleTypeEmailAddress];
NSPersonNameComponents *senderNameComp = [[NSPersonNameComponents alloc] init];
senderNameComp.givenName = @"First";
senderNameComp.familyName = @"Last";
INPerson *senderPerson = [[INPerson alloc] initWithPersonHandle:senderHandle
                                           nameComponents:senderNameComp
                                              displayName:@"First Last"
                                                    image:nil
                                        contactIdentifier:nil
                                         customIdentifier:nil];

INPaymentRecord *paymentRecord = [[INPaymentRecord alloc] initWithPayee:intent.payee
                                                                  payer:senderPerson
                                                 currencyAmount:intent.currencyAmount
                                                  paymentMethod:payMethod
                                                           note:intent.note
                                                         status:status];
return paymentRecord;

}

person Fresh One    schedule 16.08.2016
comment
Все еще не работает для меня. Сири просто бубнит со своим «о-о-о» - person cyril; 16.08.2016