0

如果我尝试实现 requestPaymentIntent,我一直在开发一个应用程序。它首先工作,但在某些时候它开始进行 Bing 搜索,并且在某些时候只是说它发现了一个错误,然后什么也没做。主题中也指出了这一点:支付域意图正在显示互联网结果,而不是使用 Sirikit 的意图 UI 或意图确认。

William Hindenburg 提供了一个标记为好的解决方案:“我们发现您需要将 paymentRecord 添加到 INSendPaymentIntentResponse,然后从 Payment Intent 处理程序中的确认和处理方法返回它。试一试,看看是否这样给你修好了。”

我试图这样做,但我无法弄清楚。我主要在定义状态方面遇到问题。

所以在我的handle方法中我首先定义了userActivity。然后我初始化响应对象。

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

然后我想在响应对象中添加一个 paymentRecord:

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

一些我不需要/使用的参数,所以我填写了nil。我想在我的应用程序中拥有两件事,需要支付的金额,以及需要支付的金额(注释)。在 ??? 我必须填写一个状态,我尝试了几件事,但我无法弄清楚。由于已经有很多人开始工作了,你能帮我解释一下这是如何工作的吗?非常感谢!

4

1 回答 1

0

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:@"first.last@example.com" 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;

}

于 2016-08-16T12:08:06.857 回答