2016-08-15 6 views
0

Ich habe an einer App gearbeitet, wo ich versuche, die requestPaymentIntent zu implementieren. Es funktionierte zuerst, aber irgendwann fing es an, die Bing-Suche zu machen, und irgendwann sagte es nur, es habe einen Fehler gefunden und danach nichts getan. Dies wurde auch in dem folgenden Thema erwähnt: Die Absicht der Zahlungsdomäne zeigt das Internet-Ergebnis anstelle einer Absichts-UI oder einer Absichtsbestätigung mit Sirikit an.Zahlungsabsicht Sirikit funktioniert immer noch nicht

Eine von William Hindenburg als gut bezeichnete Lösung: "Wir haben festgestellt, dass Sie der INSendPaymentIntentResponse einen paymentRecord hinzufügen müssen, bevor Sie ihn aus den confirm- und handle-Methoden im Payment Intent Handler zurückgeben und sieh, ob das das für dich behebt. "

Ich habe versucht, dies zu tun, aber ich kann es nicht herausfinden. Ich habe hauptsächlich Probleme mit der Definition des Status.

Also in meiner Handle-Methode definiere ich zuerst die userActivity. Dann initialisiere ich das Antwortobjekt.

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

Dann möchte ich eine paymentRecord zum Antwort Objekt hinzuzufügen:

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

Einige Parameter Ich brauche/Verwendung nicht, so füllte ich in null. Zwei Dinge, die ich gerne in meiner App haben möchte, den Betrag, der bezahlt werden muss, und dafür, was bezahlt werden muss (die Notiz). An der Stelle des ??? Ich muss einen Status eingeben, ich habe mehrere Dinge ausprobiert, aber ich kann es nicht herausfinden. Da mehrere Leute das schon funktioniert haben, kannst du mir bitte helfen zu erklären, wie das funktioniert? Danke vielmals!

Antwort

0

Apple legt wirklich nicht fest, welchen Status für die Bestätigung zu verwenden, aber das funktioniert für mich derzeit.

bestätigen Aufruf:

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

senden Aufruf:

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

genericized Code:

-(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; 

}

+0

noch nicht für mich arbeiten. Siri donnert nur mit ihren "Oh-ohs" weiter – cyril

Verwandte Themen