付款意图 Sirikit 仍然无法正常工作

Posted

技术标签:

【中文标题】付款意图 Sirikit 仍然无法正常工作【英文标题】:Payment intent Sirikit still not working 【发布时间】:2016-08-15 14:17:28 【问题描述】:

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

William Hindenburg 提供了一个标记为好的解决方案:“我们发现您需要在 INSendPaymentIntentResponse 中添加一个 paymentRecord,然后再从 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。我想在我的应用程序中拥有两件事,需要支付的金额,以及需要支付的金额(注释)。在 ???我必须填写一个状态,我尝试了几件事,但我无法弄清楚。由于很多人已经完成了这项工作,您能帮我解释一下这是如何工作的吗?非常感谢!

【问题讨论】:

【参考方案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:@"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;

【讨论】:

仍然对我不起作用。 Siri 只是发出“呃-哦”​​的声音

以上是关于付款意图 Sirikit 仍然无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

如何为快捷方式应用自定义 SiriKit 意图扩展以请求允许访问?

Siri 在 Siri 响应中的应用名称前添加一个点

SiriKit 意图不适用于本地化

Siri - Lang Swift 3,INPayBillIntent 不工作,Siri 说“你必须在 DemoApp 中继续,你想打开它吗?”

iOS10 SiriKit QQ适配详解

在我让 iPhone 闲置后 Siri Custom Intent 停止工作