currency="XTR"
和providerToken=""
我完全像这样,然后从电报API中获取错误:
问题:以前有人看过这个错误吗? 您如何修复?我不想设置外部付款提供商并获得令牌。文档说,有可能有可能。
我用来构建
SendInvoice
对象的代码
fun invoice(
chatId: String,
text: String,
starsAmount: Int,
isFlexible: Boolean = true
) = SendInvoice.builder()
.chatId(chatId)
.title(text)
.description("Пожертвование")
.prices(listOf(LabeledPrice.builder().label("Пожертвование").amount(starsAmount).build()))
.currency("XTR")
.providerToken("")
.payload("test")
.startParameter("")
.build()
}
provider_token
sendinvoice和createinvoicelink必须省略付款
.。
但是您正在添加.providerToken("")
不允许的,只需删除这些字段!
Edit:发现了有关此问题的Github问题,如果您省略了该字段,则应该有效,最后一个评论显示了此工作示例:SendInvoice sendInvoice = SendInvoice .builder() .chatId(callbackQuery.getMessage().getChatId()) .title("title") .description("Description ") .payload(callbackQuery.getId() + "-" + System.currentTimeMillis()) .currency("XTR") .price(LabeledPrice .builder() .label("Price") .amount(100) .build() ) .build();
我设法将此代码以某种方式工作。发票确实从我的机器人中发送了。这个问题可能是由Telegram SDK
中的错误中的一个错误引起的。
解决关键思想
:- 自己构建对象,而不是依靠
builder
SendInvoice
和builder
不得为空或空(API拒绝这些值),因此您可以将它们设置为一些简单的非空字符串,并查看它是否有效。它确实如此
payload