botframework - 自适应卡:付款请求
问题描述
我目前正在开发一个机器人项目,我正在尝试利用 Microsoft 自适应卡尝试向用户发送 PaymentRequest。我创建了一个虚拟的 paymentrequest 对象并将其插入到英雄卡中,如文档所述。
var methodList = new List<PaymentMethodData>();
var method = new PaymentMethodData()
{Data = new {supportedNetworks = new[] { "visa", "mastercard", "amex", "discover", "diners", "jcb", "unionpay"} }, SupportedMethods = new[] { "https://bobpay.xyz/pay" } };
methodList.Add(method);
var details = new PaymentDetails {};
var test = new PaymentRequest(null, methodList, details);
var heroCard = new HeroCard
{
Title = "Bob",
Subtitle = "The Builder",
Text = "Kunnen wij het maken!",
Images = new List<CardImage>
{
new CardImage
{
Url = "https://m.media-amazon.com/images/M/MV5BNjRlYjgwMWMtNDFmMy00OWQ0LWFhMTMtNWE3MTU4ZjQ3MjgyXkEyXkFqcGdeQXVyNzU1NzE3NTg@._V1_CR0,45,480,270_AL_UX477_CR0,0,477,268_AL_.jpg"
}
},
Buttons = new List<CardAction>
{
new CardAction
{
Title = "Buy",
Type = PaymentRequest.PaymentActionType,
Value = test,
}
}
};
replyMessage.Attachments.Add(heroCard.ToAttachment());
await context.PostAsync(replyMessage);
我从 PaymentRequest 构造函数中取出了一堆参数,因为我正在尝试尝试获得某种反馈。有了这个,我什么都没有回来,但这个 url 当我尝试运行它时崩溃了浏览器。
"content": {
"buttons": [
{
"title": "Buy",
"type": "openUrl",
"value": "payment://{\"methodData\":[{\"supportedMethods\":[\"https://bobpay.xyz/pay\"],\"data\":{}}],\"details\":{}}"
}
],
我找不到任何关于如何正确执行此操作的文档,但似乎并没有说它在文档中已被弃用。如果有帮助,我正在使用机器人框架 v3。我觉得即使 PaymentRequest 中没有一些参数,当我单击按钮时它仍然应该给我一些东西。
解决方案
如本文档所述:bot-builder-dotnet-request-payment为了使用 Bot Builder Payments 库,您必须首先:
在卖家中心内,将您的账户与 Stripe 关联。
在卖家中心内,导航到仪表板并复制 MerchantID 的值。
更新您的机器人的 Web.config 文件,将 MerchantId 设置为您从卖家中心仪表板复制的值。
目前,Bot Framework SDK 仅直接支持 Stripe 支付。如果您使用的是其他提供程序,则需要手动添加对它的支持。
另请注意:自 2.25.2019 起,Bot Builder V4 sdk 没有内置支付支持。Bot Builder V3 sdk 有:https ://github.com/Microsoft/BotBuilder-Samples/tree/v3-sdk-samples/ CSharp/sample-payments (另外,Bot Framework Emulator V4 还不支持支付:https ://github.com/Microsoft/BotFramework-Emulator/issues/1324 V3 模拟器可以从这里下载:https://github .com/Microsoft/BotFramework-Emulator/releases/tag/v3.5.37)
推荐阅读
- java - 如何从 http 请求中获取不记名令牌
- jquery - 防止在儿童 li 链接上的 slideToggle
- scala - 当类及其参数从同一特征扩展时,方法签名会发生冲突
- javascript - knockout.js 使用一些布尔变量应用复选框预定义的初始状态或默认状态
- vba - 如何从命令行使用 OnSlideShowPageChange 运行 PowerPoint 幻灯片
- php - htaccess 在实时服务器上不起作用重写规则
- python - 如何修复'没有模块名称:object_objection.box_coders'?
- python - 如何将字符串转换为列表的现有变量名称作为函数的参数
- python - Python 脚本从终端运行,但不是 crontab。使用绝对路径但无济于事
- ads - java.lang.NoSuchMethodError: org.altbeacon.beacon 的 android.bluetoothAdapter.getBluetoothLeAdvertiser