diff --git a/CSharp/Library/Microsoft.Bot.Builder.Autofac/Properties/AssemblyInfo.cs b/CSharp/Library/Microsoft.Bot.Builder.Autofac/Properties/AssemblyInfo.cs
index 2c0bc0ffcf..d5a0de6b05 100644
--- a/CSharp/Library/Microsoft.Bot.Builder.Autofac/Properties/AssemblyInfo.cs
+++ b/CSharp/Library/Microsoft.Bot.Builder.Autofac/Properties/AssemblyInfo.cs
@@ -32,8 +32,8 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.5.9.0")]
-[assembly: AssemblyFileVersion("3.5.9.0")]
+[assembly: AssemblyVersion("3.8.0.0")]
+[assembly: AssemblyFileVersion("3.8.0.0")]
[assembly: InternalsVisibleTo("Microsoft.Bot.Builder.Tests")]
[assembly: InternalsVisibleTo("Microsoft.Bot.Sample.Tests")]
diff --git a/CSharp/Library/Microsoft.Bot.Builder.Calling/Microsoft.Bot.Builder.Calling.nuspec b/CSharp/Library/Microsoft.Bot.Builder.Calling/Microsoft.Bot.Builder.Calling.nuspec
index 781b31b7ea..ac1f3d04b2 100644
--- a/CSharp/Library/Microsoft.Bot.Builder.Calling/Microsoft.Bot.Builder.Calling.nuspec
+++ b/CSharp/Library/Microsoft.Bot.Builder.Calling/Microsoft.Bot.Builder.Calling.nuspec
@@ -18,8 +18,8 @@
-
-
+
+
diff --git a/CSharp/Library/Microsoft.Bot.Builder.Calling/Properties/AssemblyInfo.cs b/CSharp/Library/Microsoft.Bot.Builder.Calling/Properties/AssemblyInfo.cs
index 0bf63c1782..4d35b2f23e 100644
--- a/CSharp/Library/Microsoft.Bot.Builder.Calling/Properties/AssemblyInfo.cs
+++ b/CSharp/Library/Microsoft.Bot.Builder.Calling/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.0.3.0")]
-[assembly: AssemblyFileVersion("3.0.3.0")]
+[assembly: AssemblyVersion("3.0.4.0")]
+[assembly: AssemblyFileVersion("3.0.4.0")]
diff --git a/CSharp/Library/Microsoft.Bot.Builder.FormFlow.Json/Properties/AssemblyInfo.cs b/CSharp/Library/Microsoft.Bot.Builder.FormFlow.Json/Properties/AssemblyInfo.cs
index 0a2d2a1dec..36de12d56b 100644
--- a/CSharp/Library/Microsoft.Bot.Builder.FormFlow.Json/Properties/AssemblyInfo.cs
+++ b/CSharp/Library/Microsoft.Bot.Builder.FormFlow.Json/Properties/AssemblyInfo.cs
@@ -33,8 +33,8 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.1.2.0")]
-[assembly: AssemblyFileVersion("3.1.2.0")]
+[assembly: AssemblyVersion("3.1.3.0")]
+[assembly: AssemblyFileVersion("3.1.3.0")]
[assembly: InternalsVisibleTo("Microsoft.Bot.Builder.Tests")]
[assembly: InternalsVisibleTo("Microsoft.Bot.Sample.Tests")]
diff --git a/CSharp/Library/Microsoft.Bot.Builder.History/Properties/AssemblyInfo.cs b/CSharp/Library/Microsoft.Bot.Builder.History/Properties/AssemblyInfo.cs
index 70ab8979e3..206ee8c3a6 100644
--- a/CSharp/Library/Microsoft.Bot.Builder.History/Properties/AssemblyInfo.cs
+++ b/CSharp/Library/Microsoft.Bot.Builder.History/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.0.3.0")]
-[assembly: AssemblyFileVersion("3.0.3.0")]
+[assembly: AssemblyVersion("3.0.4.0")]
+[assembly: AssemblyFileVersion("3.0.4.0")]
diff --git a/CSharp/Library/Microsoft.Bot.Builder/Properties/AssemblyInfo.cs b/CSharp/Library/Microsoft.Bot.Builder/Properties/AssemblyInfo.cs
index aa99719ec7..2d14536e95 100644
--- a/CSharp/Library/Microsoft.Bot.Builder/Properties/AssemblyInfo.cs
+++ b/CSharp/Library/Microsoft.Bot.Builder/Properties/AssemblyInfo.cs
@@ -33,8 +33,8 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.5.9.0")]
-[assembly: AssemblyFileVersion("3.5.9.0")]
+[assembly: AssemblyVersion("3.8.0.0")]
+[assembly: AssemblyFileVersion("3.8.0.0")]
[assembly: InternalsVisibleTo("Microsoft.Bot.Builder.Tests")]
[assembly: InternalsVisibleTo("Microsoft.Bot.Sample.Tests")]
diff --git a/CSharp/Library/Microsoft.Bot.Connector.AspNetCore/project.json b/CSharp/Library/Microsoft.Bot.Connector.AspNetCore/project.json
index 736800e98d..36ec0f7a01 100644
--- a/CSharp/Library/Microsoft.Bot.Connector.AspNetCore/project.json
+++ b/CSharp/Library/Microsoft.Bot.Connector.AspNetCore/project.json
@@ -1,7 +1,7 @@
{
"title": "Microsoft.Bot.Connector",
"language": "en",
- "version": "3.5.8-*",
+ "version": "3.8.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0",
diff --git a/CSharp/Library/Microsoft.Bot.Connector.NetCore/Content/Microsoft.Bot.Connector.NetCore.XML b/CSharp/Library/Microsoft.Bot.Connector.NetCore/Content/Microsoft.Bot.Connector.NetCore.XML
index a6ad7fd0f2..42a033a81b 100644
--- a/CSharp/Library/Microsoft.Bot.Connector.NetCore/Content/Microsoft.Bot.Connector.NetCore.XML
+++ b/CSharp/Library/Microsoft.Bot.Connector.NetCore/Content/Microsoft.Bot.Connector.NetCore.XML
@@ -3810,6 +3810,661 @@
The HTTP request.Cancellation token.
+
+
+ Pay method data for Microsoft Payment.
+
+
+ W3C Payment Method Data for Microsoft Pay
+
+
+
+
+ The pay method name.
+
+
+
+
+ Initializes a new instance of the MicrosoftPayMethodData class.
+
+
+
+
+ Payment method mode
+
+
+
+
+ Get Microsoft Pay method data
+
+ Payment method data
+
+
+
+ Initializes a new instance of the MicrosoftPayMethodData class.
+
+
+
+
+ Initializes a new instance of the MicrosoftPayMethodData class.
+
+
+
+
+ Microsoft Pay Merchant ID
+
+
+
+
+ Supported payment networks (e.g., "visa" and "mastercard")
+
+
+
+
+ Supported payment types (e.g., "credit")
+
+
+
+
+ Address within a Payment Request
+
+
+
+
+ Initializes a new instance of the PaymentAddress class.
+
+
+
+
+ Initializes a new instance of the PaymentAddress class.
+
+
+
+
+ This is the CLDR (Common Locale Data Repository) region code. For
+ example, US, GB, CN, or JP
+
+
+
+
+ This is the most specific part of the address. It can include, for
+ example, a street name, a house number, apartment number, a rural
+ delivery route, descriptive instructions, or a post office box
+ number.
+
+
+
+
+ This is the top level administrative subdivision of the country.
+ For example, this can be a state, a province, an oblast, or a
+ prefecture.
+
+
+
+
+ This is the city/town portion of the address.
+
+
+
+
+ This is the dependent locality or sublocality within a city. For
+ example, used for neighborhoods, boroughs, districts, or UK
+ dependent localities.
+
+
+
+
+ This is the postal code or ZIP code, also known as PIN code in
+ India.
+
+
+
+
+ This is the sorting code as used in, for example, France.
+
+
+
+
+ This is the BCP-47 language code for the address. It's used to
+ determine the field separators and the order of fields when
+ formatting the address for display.
+
+
+
+
+ This is the organization, firm, company, or institution at this
+ address.
+
+
+
+
+ This is the name of the recipient or contact person.
+
+
+
+
+ This is the phone number of the recipient or contact person.
+
+
+
+
+ Supplies monetary amounts
+
+
+
+
+ Initializes a new instance of the PaymentCurrencyAmount class.
+
+
+
+
+ Initializes a new instance of the PaymentCurrencyAmount class.
+
+
+
+
+ A currency identifier
+
+
+
+
+ Decimal monetary value
+
+
+
+
+ Currency system
+
+
+
+
+ Provides information about the requested transaction
+
+
+
+
+ Initializes a new instance of the PaymentDetails class.
+
+
+
+
+ Initializes a new instance of the PaymentDetails class.
+
+
+
+
+ Contains the total amount of the payment request
+
+
+
+
+ Contains line items for the payment request that the user agent
+ may display
+
+
+
+
+ A sequence containing the different shipping options for the user
+ to choose from
+
+
+
+
+ Contains modifiers for particular payment method identifiers
+
+
+
+
+ Error description
+
+
+
+
+ Provides details that modify the PaymentDetails based on payment
+ method identifier
+
+
+
+
+ Initializes a new instance of the PaymentDetailsModifier class.
+
+
+
+
+ Initializes a new instance of the PaymentDetailsModifier class.
+
+
+
+
+ Contains a sequence of payment method identifiers
+
+
+
+
+ This value overrides the total field in the PaymentDetails
+ dictionary for the payment method identifiers in the
+ supportedMethods field
+
+
+
+
+ Provides additional display items that are appended to the
+ displayItems field in the PaymentDetails dictionary for the
+ payment method identifiers in the supportedMethods field
+
+
+
+
+ A JSON-serializable object that provides optional information that
+ might be needed by the supported payment methods
+
+
+
+
+ Indicates what the payment request is for and the value asked for
+
+
+
+
+ Initializes a new instance of the PaymentItem class.
+
+
+
+
+ Initializes a new instance of the PaymentItem class.
+
+
+
+
+ Human-readable description of the item
+
+
+
+
+ Monetary amount for the item
+
+
+
+
+ When set to true this flag means that the amount field is not
+ final.
+
+
+
+
+ Indicates a set of supported payment methods and any associated
+ payment method specific data for those methods
+
+
+
+
+ Initializes a new instance of the PaymentMethodData class.
+
+
+
+
+ Initializes a new instance of the PaymentMethodData class.
+
+
+
+
+ Required sequence of strings containing payment method identifiers
+ for payment methods that the merchant web site accepts
+
+
+
+
+ A JSON-serializable object that provides optional information that
+ might be needed by the supported payment methods
+
+
+
+
+ Provides information about the options desired for the payment request
+
+
+
+
+ Initializes a new instance of the PaymentOptions class.
+
+
+
+
+ Initializes a new instance of the PaymentOptions class.
+
+
+
+
+ Indicates whether the user agent should collect and return the
+ payer's name as part of the payment request
+
+
+
+
+ Indicates whether the user agent should collect and return the
+ payer's email address as part of the payment request
+
+
+
+
+ Indicates whether the user agent should collect and return the
+ payer's phone number as part of the payment request
+
+
+
+
+ Indicates whether the user agent should collect and return a
+ shipping address as part of the payment request
+
+
+
+
+ If requestShipping is set to true, then the shippingType field may
+ be used to influence the way the user agent presents the user
+ interface for gathering the shipping address
+
+
+
+
+ A request to make a payment
+
+
+
+
+ Initializes a new instance of the PaymentRequest class.
+
+
+
+
+ Initializes a new instance of the PaymentRequest class.
+
+
+
+
+ ID of this payment request
+
+
+
+
+ Allowed payment methods for this request
+
+
+
+
+ Details for this request
+
+
+
+
+ Provides information about the options desired for the payment
+ request
+
+
+
+
+ Expiration for this request, in ISO 8601 duration format (e.g.,
+ 'P1D')
+
+
+
+
+ Action type for Payment action
+
+
+
+
+ Content-type for Payment card
+
+
+
+
+ Payload delivered when completing a payment request
+
+
+
+
+ Initializes a new instance of the PaymentRequestComplete class.
+
+
+
+
+ Initializes a new instance of the PaymentRequestComplete class.
+
+
+
+
+ Payment request ID
+
+
+
+
+ Initial payment request
+
+
+
+
+ Corresponding payment response
+
+
+
+
+ Result from a completed payment request
+
+
+
+
+ Initializes a new instance of the PaymentRequestCompleteResult
+ class.
+
+
+
+
+ Initializes a new instance of the PaymentRequestCompleteResult
+ class.
+
+
+
+
+ Result of the payment request completion
+
+
+
+
+ An update to a payment request
+
+
+
+
+ Initializes a new instance of the PaymentRequestUpdate class.
+
+
+
+
+ Initializes a new instance of the PaymentRequestUpdate class.
+
+
+
+
+ ID for the payment request to update
+
+
+
+
+ Update payment details
+
+
+
+
+ Updated shipping address
+
+
+
+
+ Updated shipping options
+
+
+
+
+ A result object from a Payment Request Update invoke operation
+
+
+
+
+ Initializes a new instance of the PaymentRequestUpdateResult class.
+
+
+
+
+ Initializes a new instance of the PaymentRequestUpdateResult class.
+
+
+
+
+ Update payment details
+
+
+
+
+ A PaymentResponse is returned when a user has selected a payment
+ method and approved a payment request
+
+
+
+
+ Initializes a new instance of the PaymentResponse class.
+
+
+
+
+ Initializes a new instance of the PaymentResponse class.
+
+
+
+
+ The payment method identifier for the payment method that the user
+ selected to fulfil the transaction
+
+
+
+
+ A JSON-serializable object that provides a payment method specific
+ message used by the merchant to process the transaction and
+ determine successful fund transfer
+
+
+
+
+ If the requestShipping flag was set to true in the PaymentOptions
+ passed to the PaymentRequest constructor, then shippingAddress
+ will be the full and final shipping address chosen by the user
+
+
+
+
+ If the requestShipping flag was set to true in the PaymentOptions
+ passed to the PaymentRequest constructor, then shippingOption
+ will be the id attribute of the selected shipping option
+
+
+
+
+ If the requestPayerEmail flag was set to true in the
+ PaymentOptions passed to the PaymentRequest constructor, then
+ payerEmail will be the email address chosen by the user
+
+
+
+
+ If the requestPayerPhone flag was set to true in the
+ PaymentOptions passed to the PaymentRequest constructor, then
+ payerPhone will be the phone number chosen by the user
+
+
+
+
+ Describes a shipping option
+
+
+
+
+ Initializes a new instance of the PaymentShippingOption class.
+
+
+
+
+ Initializes a new instance of the PaymentShippingOption class.
+
+
+
+
+ String identifier used to reference this PaymentShippingOption
+
+
+
+
+ Human-readable description of the item
+
+
+
+
+ Contains the monetary amount for the item
+
+
+
+
+ Indicates whether this is the default selected
+ PaymentShippingOption
+
+
+
+
+ Names for invocable operations in the payment callback protocol
+
+
+
+
+ Name for the Update Shipping Address operation invocation
+
+
+ This operation accepts a PaymentRequestUpdate object and returns a PaymentDetails object or an error
+
+
+
+
+ Name for the Update Shipping Option operation invocation
+
+
+ This operation accepts a PaymentRequestUpdate object and returns a PaymentDetails object or an error
+
+
+
+
+ Name for the payment completion operation invocation
+
+
+ This operation accepts a PaymentRequestComplete object and returns a PaymentRequestResult object or an error
+
+
+
+
+ Different shipping types. See http://www.w3.org/TR/payment-request/#dom-paymentoptions-shippingtype for more information.
+
+
+
+
+ This is the default and refers to the address being collected as the destination for shipping.
+
+
+
+
+ This refers to the address being collected as being used for delivery. This is commonly faster than shipping. For example, it might be used for food delivery.
+
+
+
+
+ This refers to the address being collected as part of a service pickup. For example, this could be the address for laundry pickup.
+
+
BotState operations.
diff --git a/CSharp/Library/Microsoft.Bot.Connector.NetCore/Properties/AssemblyInfo.cs b/CSharp/Library/Microsoft.Bot.Connector.NetCore/Properties/AssemblyInfo.cs
index a93137bc55..38af8c9a63 100644
--- a/CSharp/Library/Microsoft.Bot.Connector.NetCore/Properties/AssemblyInfo.cs
+++ b/CSharp/Library/Microsoft.Bot.Connector.NetCore/Properties/AssemblyInfo.cs
@@ -24,5 +24,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.5.8.0")]
-[assembly: AssemblyFileVersion("3.5.8.0")]
+[assembly: AssemblyVersion("3.8.0.0")]
+[assembly: AssemblyFileVersion("3.8.0.0")]
diff --git a/CSharp/Library/Microsoft.Bot.Connector.NetFramework/Content/Microsoft.Bot.Connector.xml b/CSharp/Library/Microsoft.Bot.Connector.NetFramework/Content/Microsoft.Bot.Connector.xml
index 63de7e60ce..cd5099c087 100644
--- a/CSharp/Library/Microsoft.Bot.Connector.NetFramework/Content/Microsoft.Bot.Connector.xml
+++ b/CSharp/Library/Microsoft.Bot.Connector.NetFramework/Content/Microsoft.Bot.Connector.xml
@@ -3847,6 +3847,661 @@
The HTTP request.Cancellation token.
+
+
+ Pay method data for Microsoft Payment.
+
+
+ W3C Payment Method Data for Microsoft Pay
+
+
+
+
+ The pay method name.
+
+
+
+
+ Initializes a new instance of the MicrosoftPayMethodData class.
+
+
+
+
+ Payment method mode
+
+
+
+
+ Get Microsoft Pay method data
+
+ Payment method data
+
+
+
+ Initializes a new instance of the MicrosoftPayMethodData class.
+
+
+
+
+ Initializes a new instance of the MicrosoftPayMethodData class.
+
+
+
+
+ Microsoft Pay Merchant ID
+
+
+
+
+ Supported payment networks (e.g., "visa" and "mastercard")
+
+
+
+
+ Supported payment types (e.g., "credit")
+
+
+
+
+ Address within a Payment Request
+
+
+
+
+ Initializes a new instance of the PaymentAddress class.
+
+
+
+
+ Initializes a new instance of the PaymentAddress class.
+
+
+
+
+ This is the CLDR (Common Locale Data Repository) region code. For
+ example, US, GB, CN, or JP
+
+
+
+
+ This is the most specific part of the address. It can include, for
+ example, a street name, a house number, apartment number, a rural
+ delivery route, descriptive instructions, or a post office box
+ number.
+
+
+
+
+ This is the top level administrative subdivision of the country.
+ For example, this can be a state, a province, an oblast, or a
+ prefecture.
+
+
+
+
+ This is the city/town portion of the address.
+
+
+
+
+ This is the dependent locality or sublocality within a city. For
+ example, used for neighborhoods, boroughs, districts, or UK
+ dependent localities.
+
+
+
+
+ This is the postal code or ZIP code, also known as PIN code in
+ India.
+
+
+
+
+ This is the sorting code as used in, for example, France.
+
+
+
+
+ This is the BCP-47 language code for the address. It's used to
+ determine the field separators and the order of fields when
+ formatting the address for display.
+
+
+
+
+ This is the organization, firm, company, or institution at this
+ address.
+
+
+
+
+ This is the name of the recipient or contact person.
+
+
+
+
+ This is the phone number of the recipient or contact person.
+
+
+
+
+ Supplies monetary amounts
+
+
+
+
+ Initializes a new instance of the PaymentCurrencyAmount class.
+
+
+
+
+ Initializes a new instance of the PaymentCurrencyAmount class.
+
+
+
+
+ A currency identifier
+
+
+
+
+ Decimal monetary value
+
+
+
+
+ Currency system
+
+
+
+
+ Provides information about the requested transaction
+
+
+
+
+ Initializes a new instance of the PaymentDetails class.
+
+
+
+
+ Initializes a new instance of the PaymentDetails class.
+
+
+
+
+ Contains the total amount of the payment request
+
+
+
+
+ Contains line items for the payment request that the user agent
+ may display
+
+
+
+
+ A sequence containing the different shipping options for the user
+ to choose from
+
+
+
+
+ Contains modifiers for particular payment method identifiers
+
+
+
+
+ Error description
+
+
+
+
+ Provides details that modify the PaymentDetails based on payment
+ method identifier
+
+
+
+
+ Initializes a new instance of the PaymentDetailsModifier class.
+
+
+
+
+ Initializes a new instance of the PaymentDetailsModifier class.
+
+
+
+
+ Contains a sequence of payment method identifiers
+
+
+
+
+ This value overrides the total field in the PaymentDetails
+ dictionary for the payment method identifiers in the
+ supportedMethods field
+
+
+
+
+ Provides additional display items that are appended to the
+ displayItems field in the PaymentDetails dictionary for the
+ payment method identifiers in the supportedMethods field
+
+
+
+
+ A JSON-serializable object that provides optional information that
+ might be needed by the supported payment methods
+
+
+
+
+ Indicates what the payment request is for and the value asked for
+
+
+
+
+ Initializes a new instance of the PaymentItem class.
+
+
+
+
+ Initializes a new instance of the PaymentItem class.
+
+
+
+
+ Human-readable description of the item
+
+
+
+
+ Monetary amount for the item
+
+
+
+
+ When set to true this flag means that the amount field is not
+ final.
+
+
+
+
+ Indicates a set of supported payment methods and any associated
+ payment method specific data for those methods
+
+
+
+
+ Initializes a new instance of the PaymentMethodData class.
+
+
+
+
+ Initializes a new instance of the PaymentMethodData class.
+
+
+
+
+ Required sequence of strings containing payment method identifiers
+ for payment methods that the merchant web site accepts
+
+
+
+
+ A JSON-serializable object that provides optional information that
+ might be needed by the supported payment methods
+
+
+
+
+ Provides information about the options desired for the payment request
+
+
+
+
+ Initializes a new instance of the PaymentOptions class.
+
+
+
+
+ Initializes a new instance of the PaymentOptions class.
+
+
+
+
+ Indicates whether the user agent should collect and return the
+ payer's name as part of the payment request
+
+
+
+
+ Indicates whether the user agent should collect and return the
+ payer's email address as part of the payment request
+
+
+
+
+ Indicates whether the user agent should collect and return the
+ payer's phone number as part of the payment request
+
+
+
+
+ Indicates whether the user agent should collect and return a
+ shipping address as part of the payment request
+
+
+
+
+ If requestShipping is set to true, then the shippingType field may
+ be used to influence the way the user agent presents the user
+ interface for gathering the shipping address
+
+
+
+
+ A request to make a payment
+
+
+
+
+ Initializes a new instance of the PaymentRequest class.
+
+
+
+
+ Initializes a new instance of the PaymentRequest class.
+
+
+
+
+ ID of this payment request
+
+
+
+
+ Allowed payment methods for this request
+
+
+
+
+ Details for this request
+
+
+
+
+ Provides information about the options desired for the payment
+ request
+
+
+
+
+ Expiration for this request, in ISO 8601 duration format (e.g.,
+ 'P1D')
+
+
+
+
+ Action type for Payment action
+
+
+
+
+ Content-type for Payment card
+
+
+
+
+ Payload delivered when completing a payment request
+
+
+
+
+ Initializes a new instance of the PaymentRequestComplete class.
+
+
+
+
+ Initializes a new instance of the PaymentRequestComplete class.
+
+
+
+
+ Payment request ID
+
+
+
+
+ Initial payment request
+
+
+
+
+ Corresponding payment response
+
+
+
+
+ Result from a completed payment request
+
+
+
+
+ Initializes a new instance of the PaymentRequestCompleteResult
+ class.
+
+
+
+
+ Initializes a new instance of the PaymentRequestCompleteResult
+ class.
+
+
+
+
+ Result of the payment request completion
+
+
+
+
+ An update to a payment request
+
+
+
+
+ Initializes a new instance of the PaymentRequestUpdate class.
+
+
+
+
+ Initializes a new instance of the PaymentRequestUpdate class.
+
+
+
+
+ ID for the payment request to update
+
+
+
+
+ Update payment details
+
+
+
+
+ Updated shipping address
+
+
+
+
+ Updated shipping options
+
+
+
+
+ A result object from a Payment Request Update invoke operation
+
+
+
+
+ Initializes a new instance of the PaymentRequestUpdateResult class.
+
+
+
+
+ Initializes a new instance of the PaymentRequestUpdateResult class.
+
+
+
+
+ Update payment details
+
+
+
+
+ A PaymentResponse is returned when a user has selected a payment
+ method and approved a payment request
+
+
+
+
+ Initializes a new instance of the PaymentResponse class.
+
+
+
+
+ Initializes a new instance of the PaymentResponse class.
+
+
+
+
+ The payment method identifier for the payment method that the user
+ selected to fulfil the transaction
+
+
+
+
+ A JSON-serializable object that provides a payment method specific
+ message used by the merchant to process the transaction and
+ determine successful fund transfer
+
+
+
+
+ If the requestShipping flag was set to true in the PaymentOptions
+ passed to the PaymentRequest constructor, then shippingAddress
+ will be the full and final shipping address chosen by the user
+
+
+
+
+ If the requestShipping flag was set to true in the PaymentOptions
+ passed to the PaymentRequest constructor, then shippingOption
+ will be the id attribute of the selected shipping option
+
+
+
+
+ If the requestPayerEmail flag was set to true in the
+ PaymentOptions passed to the PaymentRequest constructor, then
+ payerEmail will be the email address chosen by the user
+
+
+
+
+ If the requestPayerPhone flag was set to true in the
+ PaymentOptions passed to the PaymentRequest constructor, then
+ payerPhone will be the phone number chosen by the user
+
+
+
+
+ Describes a shipping option
+
+
+
+
+ Initializes a new instance of the PaymentShippingOption class.
+
+
+
+
+ Initializes a new instance of the PaymentShippingOption class.
+
+
+
+
+ String identifier used to reference this PaymentShippingOption
+
+
+
+
+ Human-readable description of the item
+
+
+
+
+ Contains the monetary amount for the item
+
+
+
+
+ Indicates whether this is the default selected
+ PaymentShippingOption
+
+
+
+
+ Names for invocable operations in the payment callback protocol
+
+
+
+
+ Name for the Update Shipping Address operation invocation
+
+
+ This operation accepts a PaymentRequestUpdate object and returns a PaymentDetails object or an error
+
+
+
+
+ Name for the Update Shipping Option operation invocation
+
+
+ This operation accepts a PaymentRequestUpdate object and returns a PaymentDetails object or an error
+
+
+
+
+ Name for the payment completion operation invocation
+
+
+ This operation accepts a PaymentRequestComplete object and returns a PaymentRequestResult object or an error
+
+
+
+
+ Different shipping types. See http://www.w3.org/TR/payment-request/#dom-paymentoptions-shippingtype for more information.
+
+
+
+
+ This is the default and refers to the address being collected as the destination for shipping.
+
+
+
+
+ This refers to the address being collected as being used for delivery. This is commonly faster than shipping. For example, it might be used for food delivery.
+
+
+
+
+ This refers to the address being collected as part of a service pickup. For example, this could be the address for laundry pickup.
+
+
BotState operations.
diff --git a/CSharp/Library/Microsoft.Bot.Connector.NetFramework/Properties/AssemblyInfo.cs b/CSharp/Library/Microsoft.Bot.Connector.NetFramework/Properties/AssemblyInfo.cs
index 498d0157c4..52e8a27b1d 100644
--- a/CSharp/Library/Microsoft.Bot.Connector.NetFramework/Properties/AssemblyInfo.cs
+++ b/CSharp/Library/Microsoft.Bot.Connector.NetFramework/Properties/AssemblyInfo.cs
@@ -30,5 +30,5 @@
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("3.5.9.0")]
-[assembly: AssemblyFileVersion("3.5.9.0")]
+[assembly: AssemblyVersion("3.8.0.0")]
+[assembly: AssemblyFileVersion("3.8.0.0")]
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/BotAuthenticator.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/BotAuthenticator.cs
index dbdfe21543..1582e2c2ff 100644
--- a/CSharp/Library/Microsoft.Bot.Connector.Shared/BotAuthenticator.cs
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/BotAuthenticator.cs
@@ -77,7 +77,7 @@ public BotAuthenticator(ICredentialProvider credentialProvider,
/// The request.
/// The reason phrase for unauthorized status code.
/// A response with status code unauthorized.
- public static HttpResponseMessage GenerateUnauthorizedResponse(HttpRequestMessage request, string reason)
+ public static HttpResponseMessage GenerateUnauthorizedResponse(HttpRequestMessage request, string reason = "")
{
string host = request.RequestUri.DnsSafeHost;
#if NET45
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Microsoft.Bot.Connector.Shared.projitems b/CSharp/Library/Microsoft.Bot.Connector.Shared/Microsoft.Bot.Connector.Shared.projitems
index 05a2430ef0..f755ed2080 100644
--- a/CSharp/Library/Microsoft.Bot.Connector.Shared/Microsoft.Bot.Connector.Shared.projitems
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Microsoft.Bot.Connector.Shared.projitems
@@ -84,8 +84,27 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -99,6 +118,7 @@
+
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/MicrosoftPayMethodDataEx.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/MicrosoftPayMethodDataEx.cs
new file mode 100644
index 0000000000..6406dd9da2
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/MicrosoftPayMethodDataEx.cs
@@ -0,0 +1,45 @@
+using System.Collections.Generic;
+using Newtonsoft.Json;
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ ///
+ /// Pay method data for Microsoft Payment.
+ ///
+ public partial class MicrosoftPayMethodData
+ {
+ ///
+ /// The pay method name.
+ ///
+ public const string MethodName = "https://pay.microsoft.com/microsoftpay";
+
+ private const string TestModeValue = "TEST";
+
+ ///
+ /// Initializes a new instance of the MicrosoftPayMethodData class.
+ ///
+ public MicrosoftPayMethodData(string merchantId = default(string), IList supportedNetworks = default(IList), IList supportedTypes = default(IList), bool testMode = false) : this(merchantId, supportedNetworks, supportedTypes)
+ {
+ Mode = testMode ? TestModeValue : null;
+ }
+
+ ///
+ /// Payment method mode
+ ///
+ [JsonProperty(PropertyName = "mode", NullValueHandling = NullValueHandling.Ignore)]
+ public string Mode { get; set; }
+
+ ///
+ /// Get Microsoft Pay method data
+ ///
+ /// Payment method data
+ public PaymentMethodData ToPaymentMethodData()
+ {
+ return new PaymentMethodData
+ {
+ SupportedMethods = new List { MethodName },
+ Data = this
+ };
+ }
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/MicrosoftPayMethodData.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/MicrosoftPayMethodData.cs
new file mode 100644
index 0000000000..21e4a63ed4
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/MicrosoftPayMethodData.cs
@@ -0,0 +1,53 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// W3C Payment Method Data for Microsoft Pay
+ ///
+ public partial class MicrosoftPayMethodData
+ {
+ ///
+ /// Initializes a new instance of the MicrosoftPayMethodData class.
+ ///
+ public MicrosoftPayMethodData() { }
+
+ ///
+ /// Initializes a new instance of the MicrosoftPayMethodData class.
+ ///
+ public MicrosoftPayMethodData(string merchantId = default(string), IList supportedNetworks = default(IList), IList supportedTypes = default(IList))
+ {
+ MerchantId = merchantId;
+ SupportedNetworks = supportedNetworks;
+ SupportedTypes = supportedTypes;
+ }
+
+ ///
+ /// Microsoft Pay Merchant ID
+ ///
+ [JsonProperty(PropertyName = "merchantId")]
+ public string MerchantId { get; set; }
+
+ ///
+ /// Supported payment networks (e.g., "visa" and "mastercard")
+ ///
+ [JsonProperty(PropertyName = "supportedNetworks")]
+ public IList SupportedNetworks { get; set; }
+
+ ///
+ /// Supported payment types (e.g., "credit")
+ ///
+ [JsonProperty(PropertyName = "supportedTypes")]
+ public IList SupportedTypes { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentAddress.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentAddress.cs
new file mode 100644
index 0000000000..37c9d7312b
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentAddress.cs
@@ -0,0 +1,121 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// Address within a Payment Request
+ ///
+ public partial class PaymentAddress
+ {
+ ///
+ /// Initializes a new instance of the PaymentAddress class.
+ ///
+ public PaymentAddress() { }
+
+ ///
+ /// Initializes a new instance of the PaymentAddress class.
+ ///
+ public PaymentAddress(string country = default(string), IList addressLine = default(IList), string region = default(string), string city = default(string), string dependentLocality = default(string), string postalCode = default(string), string sortingCode = default(string), string languageCode = default(string), string organization = default(string), string recipient = default(string), string phone = default(string))
+ {
+ Country = country;
+ AddressLine = addressLine;
+ Region = region;
+ City = city;
+ DependentLocality = dependentLocality;
+ PostalCode = postalCode;
+ SortingCode = sortingCode;
+ LanguageCode = languageCode;
+ Organization = organization;
+ Recipient = recipient;
+ Phone = phone;
+ }
+
+ ///
+ /// This is the CLDR (Common Locale Data Repository) region code. For
+ /// example, US, GB, CN, or JP
+ ///
+ [JsonProperty(PropertyName = "country")]
+ public string Country { get; set; }
+
+ ///
+ /// This is the most specific part of the address. It can include, for
+ /// example, a street name, a house number, apartment number, a rural
+ /// delivery route, descriptive instructions, or a post office box
+ /// number.
+ ///
+ [JsonProperty(PropertyName = "addressLine")]
+ public IList AddressLine { get; set; }
+
+ ///
+ /// This is the top level administrative subdivision of the country.
+ /// For example, this can be a state, a province, an oblast, or a
+ /// prefecture.
+ ///
+ [JsonProperty(PropertyName = "region")]
+ public string Region { get; set; }
+
+ ///
+ /// This is the city/town portion of the address.
+ ///
+ [JsonProperty(PropertyName = "city")]
+ public string City { get; set; }
+
+ ///
+ /// This is the dependent locality or sublocality within a city. For
+ /// example, used for neighborhoods, boroughs, districts, or UK
+ /// dependent localities.
+ ///
+ [JsonProperty(PropertyName = "dependentLocality")]
+ public string DependentLocality { get; set; }
+
+ ///
+ /// This is the postal code or ZIP code, also known as PIN code in
+ /// India.
+ ///
+ [JsonProperty(PropertyName = "postalCode")]
+ public string PostalCode { get; set; }
+
+ ///
+ /// This is the sorting code as used in, for example, France.
+ ///
+ [JsonProperty(PropertyName = "sortingCode")]
+ public string SortingCode { get; set; }
+
+ ///
+ /// This is the BCP-47 language code for the address. It's used to
+ /// determine the field separators and the order of fields when
+ /// formatting the address for display.
+ ///
+ [JsonProperty(PropertyName = "languageCode")]
+ public string LanguageCode { get; set; }
+
+ ///
+ /// This is the organization, firm, company, or institution at this
+ /// address.
+ ///
+ [JsonProperty(PropertyName = "organization")]
+ public string Organization { get; set; }
+
+ ///
+ /// This is the name of the recipient or contact person.
+ ///
+ [JsonProperty(PropertyName = "recipient")]
+ public string Recipient { get; set; }
+
+ ///
+ /// This is the phone number of the recipient or contact person.
+ ///
+ [JsonProperty(PropertyName = "phone")]
+ public string Phone { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentCurrencyAmount.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentCurrencyAmount.cs
new file mode 100644
index 0000000000..e2e997f55d
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentCurrencyAmount.cs
@@ -0,0 +1,53 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// Supplies monetary amounts
+ ///
+ public partial class PaymentCurrencyAmount
+ {
+ ///
+ /// Initializes a new instance of the PaymentCurrencyAmount class.
+ ///
+ public PaymentCurrencyAmount() { }
+
+ ///
+ /// Initializes a new instance of the PaymentCurrencyAmount class.
+ ///
+ public PaymentCurrencyAmount(string currency = default(string), string value = default(string), string currencySystem = default(string))
+ {
+ Currency = currency;
+ Value = value;
+ CurrencySystem = currencySystem;
+ }
+
+ ///
+ /// A currency identifier
+ ///
+ [JsonProperty(PropertyName = "currency")]
+ public string Currency { get; set; }
+
+ ///
+ /// Decimal monetary value
+ ///
+ [JsonProperty(PropertyName = "value")]
+ public string Value { get; set; }
+
+ ///
+ /// Currency system
+ ///
+ [JsonProperty(PropertyName = "currencySystem")]
+ public string CurrencySystem { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentDetails.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentDetails.cs
new file mode 100644
index 0000000000..dad79b2297
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentDetails.cs
@@ -0,0 +1,69 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// Provides information about the requested transaction
+ ///
+ public partial class PaymentDetails
+ {
+ ///
+ /// Initializes a new instance of the PaymentDetails class.
+ ///
+ public PaymentDetails() { }
+
+ ///
+ /// Initializes a new instance of the PaymentDetails class.
+ ///
+ public PaymentDetails(PaymentItem total = default(PaymentItem), IList displayItems = default(IList), IList shippingOptions = default(IList), IList modifiers = default(IList), string error = default(string))
+ {
+ Total = total;
+ DisplayItems = displayItems;
+ ShippingOptions = shippingOptions;
+ Modifiers = modifiers;
+ Error = error;
+ }
+
+ ///
+ /// Contains the total amount of the payment request
+ ///
+ [JsonProperty(PropertyName = "total")]
+ public PaymentItem Total { get; set; }
+
+ ///
+ /// Contains line items for the payment request that the user agent
+ /// may display
+ ///
+ [JsonProperty(PropertyName = "displayItems")]
+ public IList DisplayItems { get; set; }
+
+ ///
+ /// A sequence containing the different shipping options for the user
+ /// to choose from
+ ///
+ [JsonProperty(PropertyName = "shippingOptions")]
+ public IList ShippingOptions { get; set; }
+
+ ///
+ /// Contains modifiers for particular payment method identifiers
+ ///
+ [JsonProperty(PropertyName = "modifiers")]
+ public IList Modifiers { get; set; }
+
+ ///
+ /// Error description
+ ///
+ [JsonProperty(PropertyName = "error")]
+ public string Error { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentDetailsModifier.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentDetailsModifier.cs
new file mode 100644
index 0000000000..c720487920
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentDetailsModifier.cs
@@ -0,0 +1,66 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// Provides details that modify the PaymentDetails based on payment
+ /// method identifier
+ ///
+ public partial class PaymentDetailsModifier
+ {
+ ///
+ /// Initializes a new instance of the PaymentDetailsModifier class.
+ ///
+ public PaymentDetailsModifier() { }
+
+ ///
+ /// Initializes a new instance of the PaymentDetailsModifier class.
+ ///
+ public PaymentDetailsModifier(IList supportedMethods = default(IList), PaymentItem total = default(PaymentItem), IList additionalDisplayItems = default(IList), object data = default(object))
+ {
+ SupportedMethods = supportedMethods;
+ Total = total;
+ AdditionalDisplayItems = additionalDisplayItems;
+ Data = data;
+ }
+
+ ///
+ /// Contains a sequence of payment method identifiers
+ ///
+ [JsonProperty(PropertyName = "supportedMethods")]
+ public IList SupportedMethods { get; set; }
+
+ ///
+ /// This value overrides the total field in the PaymentDetails
+ /// dictionary for the payment method identifiers in the
+ /// supportedMethods field
+ ///
+ [JsonProperty(PropertyName = "total")]
+ public PaymentItem Total { get; set; }
+
+ ///
+ /// Provides additional display items that are appended to the
+ /// displayItems field in the PaymentDetails dictionary for the
+ /// payment method identifiers in the supportedMethods field
+ ///
+ [JsonProperty(PropertyName = "additionalDisplayItems")]
+ public IList AdditionalDisplayItems { get; set; }
+
+ ///
+ /// A JSON-serializable object that provides optional information that
+ /// might be needed by the supported payment methods
+ ///
+ [JsonProperty(PropertyName = "data")]
+ public object Data { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentItem.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentItem.cs
new file mode 100644
index 0000000000..1769a18eaf
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentItem.cs
@@ -0,0 +1,54 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// Indicates what the payment request is for and the value asked for
+ ///
+ public partial class PaymentItem
+ {
+ ///
+ /// Initializes a new instance of the PaymentItem class.
+ ///
+ public PaymentItem() { }
+
+ ///
+ /// Initializes a new instance of the PaymentItem class.
+ ///
+ public PaymentItem(string label = default(string), PaymentCurrencyAmount amount = default(PaymentCurrencyAmount), bool? pending = default(bool?))
+ {
+ Label = label;
+ Amount = amount;
+ Pending = pending;
+ }
+
+ ///
+ /// Human-readable description of the item
+ ///
+ [JsonProperty(PropertyName = "label")]
+ public string Label { get; set; }
+
+ ///
+ /// Monetary amount for the item
+ ///
+ [JsonProperty(PropertyName = "amount")]
+ public PaymentCurrencyAmount Amount { get; set; }
+
+ ///
+ /// When set to true this flag means that the amount field is not
+ /// final.
+ ///
+ [JsonProperty(PropertyName = "pending")]
+ public bool? Pending { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentMethodData.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentMethodData.cs
new file mode 100644
index 0000000000..1a5a8827fb
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentMethodData.cs
@@ -0,0 +1,49 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// Indicates a set of supported payment methods and any associated
+ /// payment method specific data for those methods
+ ///
+ public partial class PaymentMethodData
+ {
+ ///
+ /// Initializes a new instance of the PaymentMethodData class.
+ ///
+ public PaymentMethodData() { }
+
+ ///
+ /// Initializes a new instance of the PaymentMethodData class.
+ ///
+ public PaymentMethodData(IList supportedMethods = default(IList), object data = default(object))
+ {
+ SupportedMethods = supportedMethods;
+ Data = data;
+ }
+
+ ///
+ /// Required sequence of strings containing payment method identifiers
+ /// for payment methods that the merchant web site accepts
+ ///
+ [JsonProperty(PropertyName = "supportedMethods")]
+ public IList SupportedMethods { get; set; }
+
+ ///
+ /// A JSON-serializable object that provides optional information that
+ /// might be needed by the supported payment methods
+ ///
+ [JsonProperty(PropertyName = "data")]
+ public object Data { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentOptions.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentOptions.cs
new file mode 100644
index 0000000000..ea1266f733
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentOptions.cs
@@ -0,0 +1,73 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// Provides information about the options desired for the payment request
+ ///
+ public partial class PaymentOptions
+ {
+ ///
+ /// Initializes a new instance of the PaymentOptions class.
+ ///
+ public PaymentOptions() { }
+
+ ///
+ /// Initializes a new instance of the PaymentOptions class.
+ ///
+ public PaymentOptions(bool? requestPayerName = default(bool?), bool? requestPayerEmail = default(bool?), bool? requestPayerPhone = default(bool?), bool? requestShipping = default(bool?), string shippingType = default(string))
+ {
+ RequestPayerName = requestPayerName;
+ RequestPayerEmail = requestPayerEmail;
+ RequestPayerPhone = requestPayerPhone;
+ RequestShipping = requestShipping;
+ ShippingType = shippingType;
+ }
+
+ ///
+ /// Indicates whether the user agent should collect and return the
+ /// payer's name as part of the payment request
+ ///
+ [JsonProperty(PropertyName = "requestPayerName")]
+ public bool? RequestPayerName { get; set; }
+
+ ///
+ /// Indicates whether the user agent should collect and return the
+ /// payer's email address as part of the payment request
+ ///
+ [JsonProperty(PropertyName = "requestPayerEmail")]
+ public bool? RequestPayerEmail { get; set; }
+
+ ///
+ /// Indicates whether the user agent should collect and return the
+ /// payer's phone number as part of the payment request
+ ///
+ [JsonProperty(PropertyName = "requestPayerPhone")]
+ public bool? RequestPayerPhone { get; set; }
+
+ ///
+ /// Indicates whether the user agent should collect and return a
+ /// shipping address as part of the payment request
+ ///
+ [JsonProperty(PropertyName = "requestShipping")]
+ public bool? RequestShipping { get; set; }
+
+ ///
+ /// If requestShipping is set to true, then the shippingType field may
+ /// be used to influence the way the user agent presents the user
+ /// interface for gathering the shipping address
+ ///
+ [JsonProperty(PropertyName = "shippingType")]
+ public string ShippingType { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequest.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequest.cs
new file mode 100644
index 0000000000..b40e8d5d13
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequest.cs
@@ -0,0 +1,69 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// A request to make a payment
+ ///
+ public partial class PaymentRequest
+ {
+ ///
+ /// Initializes a new instance of the PaymentRequest class.
+ ///
+ public PaymentRequest() { }
+
+ ///
+ /// Initializes a new instance of the PaymentRequest class.
+ ///
+ public PaymentRequest(string id = default(string), IList methodData = default(IList), PaymentDetails details = default(PaymentDetails), PaymentOptions options = default(PaymentOptions), string expires = default(string))
+ {
+ Id = id;
+ MethodData = methodData;
+ Details = details;
+ Options = options;
+ Expires = expires;
+ }
+
+ ///
+ /// ID of this payment request
+ ///
+ [JsonProperty(PropertyName = "id")]
+ public string Id { get; set; }
+
+ ///
+ /// Allowed payment methods for this request
+ ///
+ [JsonProperty(PropertyName = "methodData")]
+ public IList MethodData { get; set; }
+
+ ///
+ /// Details for this request
+ ///
+ [JsonProperty(PropertyName = "details")]
+ public PaymentDetails Details { get; set; }
+
+ ///
+ /// Provides information about the options desired for the payment
+ /// request
+ ///
+ [JsonProperty(PropertyName = "options")]
+ public PaymentOptions Options { get; set; }
+
+ ///
+ /// Expiration for this request, in ISO 8601 duration format (e.g.,
+ /// 'P1D')
+ ///
+ [JsonProperty(PropertyName = "expires")]
+ public string Expires { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestComplete.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestComplete.cs
new file mode 100644
index 0000000000..9c264487a8
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestComplete.cs
@@ -0,0 +1,53 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// Payload delivered when completing a payment request
+ ///
+ public partial class PaymentRequestComplete
+ {
+ ///
+ /// Initializes a new instance of the PaymentRequestComplete class.
+ ///
+ public PaymentRequestComplete() { }
+
+ ///
+ /// Initializes a new instance of the PaymentRequestComplete class.
+ ///
+ public PaymentRequestComplete(string id = default(string), PaymentRequest paymentRequest = default(PaymentRequest), PaymentResponse paymentResponse = default(PaymentResponse))
+ {
+ Id = id;
+ PaymentRequest = paymentRequest;
+ PaymentResponse = paymentResponse;
+ }
+
+ ///
+ /// Payment request ID
+ ///
+ [JsonProperty(PropertyName = "id")]
+ public string Id { get; set; }
+
+ ///
+ /// Initial payment request
+ ///
+ [JsonProperty(PropertyName = "paymentRequest")]
+ public PaymentRequest PaymentRequest { get; set; }
+
+ ///
+ /// Corresponding payment response
+ ///
+ [JsonProperty(PropertyName = "paymentResponse")]
+ public PaymentResponse PaymentResponse { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestCompleteResult.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestCompleteResult.cs
new file mode 100644
index 0000000000..89f34c8788
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestCompleteResult.cs
@@ -0,0 +1,41 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// Result from a completed payment request
+ ///
+ public partial class PaymentRequestCompleteResult
+ {
+ ///
+ /// Initializes a new instance of the PaymentRequestCompleteResult
+ /// class.
+ ///
+ public PaymentRequestCompleteResult() { }
+
+ ///
+ /// Initializes a new instance of the PaymentRequestCompleteResult
+ /// class.
+ ///
+ public PaymentRequestCompleteResult(string result = default(string))
+ {
+ Result = result;
+ }
+
+ ///
+ /// Result of the payment request completion
+ ///
+ [JsonProperty(PropertyName = "result")]
+ public string Result { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestUpdate.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestUpdate.cs
new file mode 100644
index 0000000000..5a122f375c
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestUpdate.cs
@@ -0,0 +1,60 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// An update to a payment request
+ ///
+ public partial class PaymentRequestUpdate
+ {
+ ///
+ /// Initializes a new instance of the PaymentRequestUpdate class.
+ ///
+ public PaymentRequestUpdate() { }
+
+ ///
+ /// Initializes a new instance of the PaymentRequestUpdate class.
+ ///
+ public PaymentRequestUpdate(string id = default(string), PaymentDetails details = default(PaymentDetails), PaymentAddress shippingAddress = default(PaymentAddress), string shippingOption = default(string))
+ {
+ Id = id;
+ Details = details;
+ ShippingAddress = shippingAddress;
+ ShippingOption = shippingOption;
+ }
+
+ ///
+ /// ID for the payment request to update
+ ///
+ [JsonProperty(PropertyName = "id")]
+ public string Id { get; set; }
+
+ ///
+ /// Update payment details
+ ///
+ [JsonProperty(PropertyName = "details")]
+ public PaymentDetails Details { get; set; }
+
+ ///
+ /// Updated shipping address
+ ///
+ [JsonProperty(PropertyName = "shippingAddress")]
+ public PaymentAddress ShippingAddress { get; set; }
+
+ ///
+ /// Updated shipping options
+ ///
+ [JsonProperty(PropertyName = "shippingOption")]
+ public string ShippingOption { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestUpdateResult.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestUpdateResult.cs
new file mode 100644
index 0000000000..28806dac66
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentRequestUpdateResult.cs
@@ -0,0 +1,39 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// A result object from a Payment Request Update invoke operation
+ ///
+ public partial class PaymentRequestUpdateResult
+ {
+ ///
+ /// Initializes a new instance of the PaymentRequestUpdateResult class.
+ ///
+ public PaymentRequestUpdateResult() { }
+
+ ///
+ /// Initializes a new instance of the PaymentRequestUpdateResult class.
+ ///
+ public PaymentRequestUpdateResult(PaymentDetails details = default(PaymentDetails))
+ {
+ Details = details;
+ }
+
+ ///
+ /// Update payment details
+ ///
+ [JsonProperty(PropertyName = "details")]
+ public PaymentDetails Details { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentResponse.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentResponse.cs
new file mode 100644
index 0000000000..c056e9d577
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentResponse.cs
@@ -0,0 +1,86 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// A PaymentResponse is returned when a user has selected a payment
+ /// method and approved a payment request
+ ///
+ public partial class PaymentResponse
+ {
+ ///
+ /// Initializes a new instance of the PaymentResponse class.
+ ///
+ public PaymentResponse() { }
+
+ ///
+ /// Initializes a new instance of the PaymentResponse class.
+ ///
+ public PaymentResponse(string methodName = default(string), object details = default(object), PaymentAddress shippingAddress = default(PaymentAddress), string shippingOption = default(string), string payerEmail = default(string), string payerPhone = default(string))
+ {
+ MethodName = methodName;
+ Details = details;
+ ShippingAddress = shippingAddress;
+ ShippingOption = shippingOption;
+ PayerEmail = payerEmail;
+ PayerPhone = payerPhone;
+ }
+
+ ///
+ /// The payment method identifier for the payment method that the user
+ /// selected to fulfil the transaction
+ ///
+ [JsonProperty(PropertyName = "methodName")]
+ public string MethodName { get; set; }
+
+ ///
+ /// A JSON-serializable object that provides a payment method specific
+ /// message used by the merchant to process the transaction and
+ /// determine successful fund transfer
+ ///
+ [JsonProperty(PropertyName = "details")]
+ public object Details { get; set; }
+
+ ///
+ /// If the requestShipping flag was set to true in the PaymentOptions
+ /// passed to the PaymentRequest constructor, then shippingAddress
+ /// will be the full and final shipping address chosen by the user
+ ///
+ [JsonProperty(PropertyName = "shippingAddress")]
+ public PaymentAddress ShippingAddress { get; set; }
+
+ ///
+ /// If the requestShipping flag was set to true in the PaymentOptions
+ /// passed to the PaymentRequest constructor, then shippingOption
+ /// will be the id attribute of the selected shipping option
+ ///
+ [JsonProperty(PropertyName = "shippingOption")]
+ public string ShippingOption { get; set; }
+
+ ///
+ /// If the requestPayerEmail flag was set to true in the
+ /// PaymentOptions passed to the PaymentRequest constructor, then
+ /// payerEmail will be the email address chosen by the user
+ ///
+ [JsonProperty(PropertyName = "payerEmail")]
+ public string PayerEmail { get; set; }
+
+ ///
+ /// If the requestPayerPhone flag was set to true in the
+ /// PaymentOptions passed to the PaymentRequest constructor, then
+ /// payerPhone will be the phone number chosen by the user
+ ///
+ [JsonProperty(PropertyName = "payerPhone")]
+ public string PayerPhone { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentShippingOption.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentShippingOption.cs
new file mode 100644
index 0000000000..4d39674a99
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/Models/PaymentShippingOption.cs
@@ -0,0 +1,61 @@
+// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+
+namespace Microsoft.Bot.Connector.Payments
+{
+ using System;
+ using System.Linq;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+
+
+
+ ///
+ /// Describes a shipping option
+ ///
+ public partial class PaymentShippingOption
+ {
+ ///
+ /// Initializes a new instance of the PaymentShippingOption class.
+ ///
+ public PaymentShippingOption() { }
+
+ ///
+ /// Initializes a new instance of the PaymentShippingOption class.
+ ///
+ public PaymentShippingOption(string id = default(string), string label = default(string), PaymentCurrencyAmount amount = default(PaymentCurrencyAmount), bool? selected = default(bool?))
+ {
+ Id = id;
+ Label = label;
+ Amount = amount;
+ Selected = selected;
+ }
+
+ ///
+ /// String identifier used to reference this PaymentShippingOption
+ ///
+ [JsonProperty(PropertyName = "id")]
+ public string Id { get; set; }
+
+ ///
+ /// Human-readable description of the item
+ ///
+ [JsonProperty(PropertyName = "label")]
+ public string Label { get; set; }
+
+ ///
+ /// Contains the monetary amount for the item
+ ///
+ [JsonProperty(PropertyName = "amount")]
+ public PaymentCurrencyAmount Amount { get; set; }
+
+ ///
+ /// Indicates whether this is the default selected
+ /// PaymentShippingOption
+ ///
+ [JsonProperty(PropertyName = "selected")]
+ public bool? Selected { get; set; }
+
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/PaymentOperations.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/PaymentOperations.cs
new file mode 100644
index 0000000000..032bee962f
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/PaymentOperations.cs
@@ -0,0 +1,33 @@
+namespace Microsoft.Bot.Connector.Payments
+{
+
+ ///
+ /// Names for invocable operations in the payment callback protocol
+ ///
+ public static class PaymentOperations
+ {
+ ///
+ /// Name for the Update Shipping Address operation invocation
+ ///
+ ///
+ /// This operation accepts a PaymentRequestUpdate object and returns a PaymentDetails object or an error
+ ///
+ public const string UpdateShippingAddressOperationName = "payments/update/shippingAddress";
+
+ ///
+ /// Name for the Update Shipping Option operation invocation
+ ///
+ ///
+ /// This operation accepts a PaymentRequestUpdate object and returns a PaymentDetails object or an error
+ ///
+ public const string UpdateShippingOptionOperationName = "payments/update/shippingOption";
+
+ ///
+ /// Name for the payment completion operation invocation
+ ///
+ ///
+ /// This operation accepts a PaymentRequestComplete object and returns a PaymentRequestResult object or an error
+ ///
+ public const string PaymentCompleteOperationName = "payments/complete";
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/PaymentRequestEx.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/PaymentRequestEx.cs
new file mode 100644
index 0000000000..55b39471d9
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/PaymentRequestEx.cs
@@ -0,0 +1,15 @@
+namespace Microsoft.Bot.Connector.Payments
+{
+ public partial class PaymentRequest
+ {
+ ///
+ /// Action type for Payment action
+ ///
+ public const string PaymentActionType = "payment";
+
+ ///
+ /// Content-type for Payment card
+ ///
+ public const string PaymentContentType = "application/vnd.microsoft.card.payment";
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/PaymentShippingTypes.cs b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/PaymentShippingTypes.cs
new file mode 100644
index 0000000000..94f6fa665b
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Payments/PaymentShippingTypes.cs
@@ -0,0 +1,23 @@
+namespace Microsoft.Bot.Connector.Payments
+{
+ ///
+ /// Different shipping types. See http://www.w3.org/TR/payment-request/#dom-paymentoptions-shippingtype for more information.
+ ///
+ public static class PaymentShippingTypes
+ {
+ ///
+ /// This is the default and refers to the address being collected as the destination for shipping.
+ ///
+ public const string Shipping = "shipping";
+
+ ///
+ /// This refers to the address being collected as being used for delivery. This is commonly faster than shipping. For example, it might be used for food delivery.
+ ///
+ public const string Delivery = "delivery";
+
+ ///
+ /// This refers to the address being collected as part of a service pickup. For example, this could be the address for laundry pickup.
+ ///
+ public const string PickUp = "pickup";
+ }
+}
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/Swagger/Connector-Payments.json b/CSharp/Library/Microsoft.Bot.Connector.Shared/Swagger/Connector-Payments.json
new file mode 100644
index 0000000000..48546d6384
--- /dev/null
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/Swagger/Connector-Payments.json
@@ -0,0 +1,366 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "version": "payments",
+ "title": "Bot Connector Payments API",
+ "description": "Bot Framework Payments",
+ "termsOfService": "https://www.microsoft.com/en-us/legal/intellectualproperty/copyright/default.aspx",
+ "contact": {
+ "name": "Bot Framework",
+ "url": "https://botframework.com",
+ "email": "botframework@microsoft.com"
+ },
+ "license": {
+ "name": "The MIT License (MIT)",
+ "url": "https://opensource.org/licenses/MIT"
+ }
+ },
+ "host": "api.botframework.com",
+ "schemes": [ "https" ],
+ "definitions": {
+ "Object": {
+ "type": "object",
+ "properties": {}
+ },
+ "MicrosoftPayMethodData": {
+ "description": "W3C Payment Method Data for Microsoft Pay",
+ "type": "object",
+ "properties": {
+ "merchantId": {
+ "description": "Microsoft Pay Merchant ID",
+ "type": "string"
+ },
+ "supportedNetworks": {
+ "description": "Supported payment networks (e.g., \"visa\" and \"mastercard\")",
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "supportedTypes": {
+ "description": "Supported payment types (e.g., \"credit\")",
+ "type": "array",
+ "items": { "type": "string" }
+ }
+ }
+ },
+ "PaymentAddress": {
+ "description": "Address within a Payment Request",
+ "type": "object",
+ "properties": {
+ "country": {
+ "description": "This is the CLDR (Common Locale Data Repository) region code. For example, US, GB, CN, or JP",
+ "type": "string"
+ },
+ "addressLine": {
+ "description": "This is the most specific part of the address. It can include, for example, a street name, a house number, apartment number, a rural delivery route, descriptive instructions, or a post office box number.",
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "region": {
+ "description": "This is the top level administrative subdivision of the country. For example, this can be a state, a province, an oblast, or a prefecture.",
+ "type": "string"
+ },
+ "city": {
+ "description": "This is the city/town portion of the address.",
+ "type": "string"
+ },
+ "dependentLocality": {
+ "description": "This is the dependent locality or sublocality within a city. For example, used for neighborhoods, boroughs, districts, or UK dependent localities.",
+ "type": "string"
+ },
+ "postalCode": {
+ "description": "This is the postal code or ZIP code, also known as PIN code in India.",
+ "type": "string"
+ },
+ "sortingCode": {
+ "description": "This is the sorting code as used in, for example, France.",
+ "type": "string"
+ },
+ "languageCode": {
+ "description": "This is the BCP-47 language code for the address. It's used to determine the field separators and the order of fields when formatting the address for display.",
+ "type": "string"
+ },
+ "organization": {
+ "description": "This is the organization, firm, company, or institution at this address.",
+ "type": "string"
+ },
+ "recipient": {
+ "description": "This is the name of the recipient or contact person.",
+ "type": "string"
+ },
+ "phone": {
+ "description": "This is the phone number of the recipient or contact person.",
+ "type": "string"
+ }
+ }
+ },
+ "PaymentCurrencyAmount": {
+ "description": "Supplies monetary amounts",
+ "type": "object",
+ "properties": {
+ "currency": {
+ "description": "A currency identifier",
+ "type": "string"
+ },
+ "value": {
+ "description": "Decimal monetary value",
+ "type": "string"
+ },
+ "currencySystem": {
+ "description": "Currency system",
+ "type": "string"
+ }
+ }
+ },
+ "PaymentDetails": {
+ "description": "Provides information about the requested transaction",
+ "type": "object",
+ "properties": {
+ "total": {
+ "$ref": "#/definitions/PaymentItem",
+ "description": "Contains the total amount of the payment request"
+ },
+ "displayItems": {
+ "description": "Contains line items for the payment request that the user agent may display",
+ "type": "array",
+ "items": { "$ref": "#/definitions/PaymentItem" }
+ },
+ "shippingOptions": {
+ "description": "A sequence containing the different shipping options for the user to choose from",
+ "type": "array",
+ "items": { "$ref": "#/definitions/PaymentShippingOption" }
+ },
+ "modifiers": {
+ "description": "Contains modifiers for particular payment method identifiers",
+ "type": "array",
+ "items": { "$ref": "#/definitions/PaymentDetailsModifier" }
+ },
+ "error": {
+ "description": "Error description",
+ "type": "string"
+ }
+ }
+ },
+ "PaymentItem": {
+ "description": "Indicates what the payment request is for and the value asked for",
+ "type": "object",
+ "properties": {
+ "label": {
+ "description": "Human-readable description of the item",
+ "type": "string"
+ },
+ "amount": {
+ "$ref": "#/definitions/PaymentCurrencyAmount",
+ "description": "Monetary amount for the item"
+ },
+ "pending": {
+ "description": "When set to true this flag means that the amount field is not final.",
+ "type": "boolean"
+ }
+ }
+ },
+ "PaymentShippingOption": {
+ "description": "Describes a shipping option",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "String identifier used to reference this PaymentShippingOption",
+ "type": "string"
+ },
+ "label": {
+ "description": "Human-readable description of the item",
+ "type": "string"
+ },
+ "amount": {
+ "$ref": "#/definitions/PaymentCurrencyAmount",
+ "description": "Contains the monetary amount for the item"
+ },
+ "selected": {
+ "description": "Indicates whether this is the default selected PaymentShippingOption",
+ "type": "boolean"
+ }
+ }
+ },
+ "PaymentDetailsModifier": {
+ "description": "Provides details that modify the PaymentDetails based on payment method identifier",
+ "type": "object",
+ "properties": {
+ "supportedMethods": {
+ "description": "Contains a sequence of payment method identifiers",
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "total": {
+ "$ref": "#/definitions/PaymentItem",
+ "description": "This value overrides the total field in the PaymentDetails dictionary for the payment method identifiers in the supportedMethods field"
+ },
+ "additionalDisplayItems": {
+ "description": "Provides additional display items that are appended to the displayItems field in the PaymentDetails dictionary for the payment method identifiers in the supportedMethods field",
+ "type": "array",
+ "items": { "$ref": "#/definitions/PaymentItem" }
+ },
+ "data": {
+ "$ref": "#/definitions/Object",
+ "description": "A JSON-serializable object that provides optional information that might be needed by the supported payment methods"
+ }
+ }
+ },
+ "PaymentMethodData": {
+ "description": "Indicates a set of supported payment methods and any associated payment method specific data for those methods",
+ "type": "object",
+ "properties": {
+ "supportedMethods": {
+ "description": "Required sequence of strings containing payment method identifiers for payment methods that the merchant web site accepts",
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "data": {
+ "$ref": "#/definitions/Object",
+ "description": "A JSON-serializable object that provides optional information that might be needed by the supported payment methods"
+ }
+ }
+ },
+ "PaymentOptions": {
+ "description": "Provides information about the options desired for the payment request",
+ "type": "object",
+ "properties": {
+ "requestPayerName": {
+ "description": "Indicates whether the user agent should collect and return the payer's name as part of the payment request",
+ "type": "boolean"
+ },
+ "requestPayerEmail": {
+ "description": "Indicates whether the user agent should collect and return the payer's email address as part of the payment request",
+ "type": "boolean"
+ },
+ "requestPayerPhone": {
+ "description": "Indicates whether the user agent should collect and return the payer's phone number as part of the payment request",
+ "type": "boolean"
+ },
+ "requestShipping": {
+ "description": "Indicates whether the user agent should collect and return a shipping address as part of the payment request",
+ "type": "boolean"
+ },
+ "shippingType": {
+ "description": "If requestShipping is set to true, then the shippingType field may be used to influence the way the user agent presents the user interface for gathering the shipping address",
+ "type": "string"
+ }
+ }
+ },
+ "PaymentRequest": {
+ "description": "A request to make a payment",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "ID of this payment request",
+ "type": "string"
+ },
+ "methodData": {
+ "description": "Allowed payment methods for this request",
+ "type": "array",
+ "items": { "$ref": "#/definitions/PaymentMethodData" }
+ },
+ "details": {
+ "$ref": "#/definitions/PaymentDetails",
+ "description": "Details for this request"
+ },
+ "options": {
+ "$ref": "#/definitions/PaymentOptions",
+ "description": "Provides information about the options desired for the payment request"
+ },
+ "expires": {
+ "description": "Expiration for this request, in ISO 8601 duration format (e.g., 'P1D')",
+ "type": "string"
+ }
+ }
+ },
+ "PaymentRequestComplete": {
+ "description": "Payload delivered when completing a payment request",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Payment request ID",
+ "type": "string"
+ },
+ "paymentRequest": {
+ "$ref": "#/definitions/PaymentRequest",
+ "description": "Initial payment request"
+ },
+ "paymentResponse": {
+ "$ref": "#/definitions/PaymentResponse",
+ "description": "Corresponding payment response"
+ }
+ }
+ },
+ "PaymentResponse": {
+ "description": "A PaymentResponse is returned when a user has selected a payment method and approved a payment request",
+ "type": "object",
+ "properties": {
+ "methodName": {
+ "description": "The payment method identifier for the payment method that the user selected to fulfil the transaction",
+ "type": "string"
+ },
+ "details": {
+ "$ref": "#/definitions/Object",
+ "description": "A JSON-serializable object that provides a payment method specific message used by the merchant to process the transaction and determine successful fund transfer"
+ },
+ "shippingAddress": {
+ "$ref": "#/definitions/PaymentAddress",
+ "description": "If the requestShipping flag was set to true in the PaymentOptions passed to the PaymentRequest constructor, then shippingAddress will be the full and final shipping address chosen by the user"
+ },
+ "shippingOption": {
+ "description": "If the requestShipping flag was set to true in the PaymentOptions passed to the PaymentRequest constructor, then shippingOption will be the id attribute of the selected shipping option",
+ "type": "string"
+ },
+ "payerEmail": {
+ "description": "If the requestPayerEmail flag was set to true in the PaymentOptions passed to the PaymentRequest constructor, then payerEmail will be the email address chosen by the user",
+ "type": "string"
+ },
+ "payerPhone": {
+ "description": "If the requestPayerPhone flag was set to true in the PaymentOptions passed to the PaymentRequest constructor, then payerPhone will be the phone number chosen by the user",
+ "type": "string"
+ }
+ }
+ },
+ "PaymentRequestCompleteResult": {
+ "description": "Result from a completed payment request",
+ "type": "object",
+ "properties": {
+ "result": {
+ "description": "Result of the payment request completion",
+ "type": "string"
+ }
+ }
+ },
+ "PaymentRequestUpdate": {
+ "description": "An update to a payment request",
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "ID for the payment request to update",
+ "type": "string"
+ },
+ "details": {
+ "$ref": "#/definitions/PaymentDetails",
+ "description": "Update payment details"
+ },
+ "shippingAddress": {
+ "$ref": "#/definitions/PaymentAddress",
+ "description": "Updated shipping address"
+ },
+ "shippingOption": {
+ "description": "Updated shipping options",
+ "type": "string"
+ }
+ }
+ },
+ "PaymentRequestUpdateResult": {
+ "description": "A result object from a Payment Request Update invoke operation",
+ "type": "object",
+ "properties": {
+ "details": {
+ "$ref": "#/definitions/PaymentDetails",
+ "description": "Update payment details"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/CSharp/Library/Microsoft.Bot.Connector.Shared/generateClient.cmd b/CSharp/Library/Microsoft.Bot.Connector.Shared/generateClient.cmd
index c26de85e3c..ff755eaa0b 100644
--- a/CSharp/Library/Microsoft.Bot.Connector.Shared/generateClient.cmd
+++ b/CSharp/Library/Microsoft.Bot.Connector.Shared/generateClient.cmd
@@ -4,6 +4,13 @@ call npm install replace@0.3.0
..\..\packages\autorest.0.16.0\tools\AutoRest -namespace Microsoft.Bot.Connector -input swagger\ConnectorApi.json -outputDirectory ConnectorAPI -AddCredentials -ClientName ConnectorClient
..\..\packages\autorest.0.16.0\tools\AutoRest -namespace Microsoft.Bot.Connector -input swagger\StateAPI.json -outputDirectory StateApi -AddCredentials -ClientName StateClient
+
+rd /s /q Payments\Models\
+..\..\packages\autorest.0.16.0\tools\AutoRest -namespace Microsoft.Bot.Connector.Payments -input swagger\Connector-Payments.json -outputDirectory Payments\Models -AddCredentials -ClientName PaymentsClient
+erase Payments\Models\*.cs
+move Payments\Models\Models\* Payments\Models
+rd /s /q Payments\Models\Models
+
cd ConnectorAPI
call ..\node_modules\.bin\replace "Microsoft.Bot.Connector.Models" "Microsoft.Bot.Connector" . -r --include="*.cs"
call ..\node_modules\.bin\replace "using Models;" "" . -r --include="*.cs"
@@ -14,5 +21,11 @@ cd StateAPI
call ..\node_modules\.bin\replace "Microsoft.Bot.Connector.Models" "Microsoft.Bot.Connector" . -r --include="*.cs"
call ..\node_modules\.bin\replace "using Models;" "" . -r --include="*.cs"
cd ..
+cd Payments\Models\
+call ..\..\node_modules\.bin\replace "namespace Microsoft.Bot.Connector.Payments.Models" "namespace Microsoft.Bot.Connector.Payments" . -r --include="*.cs"
+call ..\..\node_modules\.bin\replace "using Models;" "" . -r --include="*.cs"
+call ..\..\node_modules\.bin\replace "using Microsoft.Rest;" "" . -r --include="*.cs"
+call ..\..\node_modules\.bin\replace "using Microsoft.Rest.Serialization;" "" . -r --include="*.cs"
+cd ..\..
@echo !!!!! Please review ConversationsExtensions.cs and BotStateExtensions.cs for custom throw code
pause
\ No newline at end of file