Entities and methods to handle baskets and payments.
Entities and methods to handle baskets and payments.
This method should be called when receiving a callback from the payment provider. The paymentParameters should be populated with received parameters. This method creates the order. If order should be created on report from payment service provider then use PaymentCallback2. See Payments for more information about the checkout process.
Parameter 'PaymentService' is mandatory. Other values are provided by the payment provider in their call and possible parameter names be found for each PSP in Norce Admin. General: 'test'=true to enable tests.
curl -i -X POST \ https://demo.storm.io/api/1.1/ShoppingService.svc/rest/PaymentCallback \ -H 'Content-Type: application/json' \ -d '[ { "Name": "string", "Value": "string" } ]'
Success
String response. OK if successful, otherwise may have different values depending on PSP. MaxLength: 50.
External identifier of this specific payment attempt, usually from the PSP. MaxLength: 50.
Used when a payment should be finalized on a different platform, e.g. sending a link by SMS to customer. MaxLength: 50.
PSP specific data returned for the payment. See PSP documentation.
{ "Status": "string", "StatusDescription": "string", "BasketId": 0, "OrderNo": "string", "PaymentCode": "string", "PaymentReference": "string", "HostedPaymentPage": "string", "RedirectUrl": "string", "RedirectParameters": [ { … } ], "IsSyncronous": true, "PaymentServiceId": 0 }
This method should be called when receiveing a callback from the payment provider. The paymentParameters should be populated with received parameters. This method does not create the order. The report from the payment service provider must be handled with PaymentComplete to create the order. See Payments for more information about the checkout process.
Parameter 'PaymentService' is mandatory. Other values are provided by the payment provider in their call and possible parameter names be found for each PSP in Norce Admin. General: 'test'=true to enable tests.
curl -i -X POST \ https://demo.storm.io/api/1.1/ShoppingService.svc/rest/PaymentCallback2 \ -H 'Content-Type: application/json' \ -d '[ { "Name": "string", "Value": "string" } ]'
Success
String response. OK if successful, otherwise may have different values depending on PSP. MaxLength: 50.
External identifier of this specific payment attempt, usually from the PSP. MaxLength: 50.
Used when a payment should be finalized on a different platform, e.g. sending a link by SMS to customer. MaxLength: 50.
PSP specific data returned for the payment. See PSP documentation.
{ "Status": "string", "StatusDescription": "string", "BasketId": 0, "OrderNo": "string", "PaymentCode": "string", "PaymentReference": "string", "HostedPaymentPage": "string", "RedirectUrl": "string", "RedirectParameters": [ { … } ], "IsSyncronous": true, "PaymentServiceId": 0 }
The basket that the payment should be cancelled for.
The internal id of the basket. Used to get a specific basket. Ignored in CreateBasket.
The customer internal id for a specific customer associated with this basket. This can be set in CreateBasket if the user is logged in. Otherwise use UpdateBuyer to set customer.
The company internal id for a specific company associated with this basket. This can be set in CreateBasket if the user is logged in with a company. Otherwise use UpdateBuyer to set customer and company.
The currency internal id of the basket. This defines the currency used when processing payments. Can be set when creating a Basket or change later with UpdateBasket. Use either CurrencyId or CurrencyCode. If not specified, the default for the Application will be used.
The CurrencyCode of the basket. This defines the currency used when processing payments. Can be set when creating a Basket or change later with UpdateBasket. Use either CurrencyId or CurrencyCode. If not specified, the default for the Application will be used. MaxLength: 3.
An OrderReference which will be tagged on the order. Can be set in CreateBasket or updated in UpdateBasket. MaxLength: 50.
A comma separated list of used discount codes. To clear the value set it to null or String.Empty an call UpdateBasket. MaxLength: max.
Specifies if the basket is editable. If not, any method that changes the basket will throw Exceptions (Bad Request). It will be false when the basket is no longer a basket. That is when it's paid for or cancelled.
List of information types with values that may be propagated on the order.
Contains all Promotions valid for a Basket, whether or not they are applied. If any promotions are applied more info about them are added to the corresponding Basket.Items.
The user's IpAddress when the basket was created. The value should be fetched from the user request to the application. MaxLength: 50.
The internal type id of the Basket. Can be 1 = Basket, 2 = Saved Basket, 3 = Template Basket for Subscriptions.
DoHold specifies if the resulting order should be on hold until all items on the order can be shipped or not. Default is false. This can be set in the Checkout with UpdateBasket if the Customer does not want part deliveries.
IsBuyable is a rule based property indicating if the Basket's status allows the basket to be purchased. It should be regarded as readonly.
An InvoiceReference which will be tagged on the order. Can be set in CreateBasket or updated in UpdateBasket. MaxLength: 50.
The PaymentMethodId from Storm. Can be set in CreateBasket or updated in UpdatePaymentMethod.
The DeliveryMethodId from Storm. Can be set in CreateBasket or updated in UpdateDeliveryMethod.
curl -i -X POST \ https://demo.storm.io/api/1.1/ShoppingService.svc/rest/PaymentCancel \ -H 'Content-Type: application/json' \ -d '{ "Id": 0, "CustomerId": 0, "CompanyId": 0, "SalesContactId": 0, "StatusId": 0, "CurrencyId": 0, "CurrencyCode": "string", "Comment": "string", "OrderReference": "string", "DiscountCode": "string", "ReferId": 0, "ReferUrl": "string", "ValidTo": "2019-08-24T14:15:22Z", "IsEditable": true, "Items": [ { "Id": 0, "LineNo": 0, "ParentLineNo": 0, "ProductId": 0, "PartNo": "string", "ManufacturerPartNo": "string", "Name": "string", "SubHeader": "string", "ThumbnailImage": "string", "FlagIdSeed": "string", "Type": 0, "PriceDisplay": 0, "Price": 0, "PriceOriginal": 0, "Cost": 0, "VatRate": 0, "Quantity": 0, "UOM": "string", "UOMCount": 0, "Comment": "string", "PriceListId": 0, "ReferId": 0, "ReferUrl": "string", "IsEditable": true, "IsDiscountable": true, "Info": [ { "TypeId": 0, "Value": "string", "Code": "string" } ], "OptionalItems": [ {} ], "OnHandValue": 0, "IncomingValue": 0, "NextDeliveryDate": "2019-08-24T14:15:22Z", "LeadtimeDayCount": 0, "PromotionIdSeed": "string", "ImageKey": "string", "ManufacturerName": "string", "CategoryId": 0, "OnHand": { "Value": 0, "IncomingValue": 0, "NextDeliveryDate": "2019-08-24T14:15:22Z", "LeadtimeDayCount": 0, "LastChecked": "2019-08-24T14:15:22Z", "IsActive": true, "IsReturnable": true, "Info": [ { "Id": 0, "Value": "string", "Code": "string" } ] }, "OnHandSupplier": { "Value": 0, "IncomingValue": 0, "NextDeliveryDate": "2019-08-24T14:15:22Z", "LeadtimeDayCount": 0, "LastChecked": "2019-08-24T14:15:22Z", "IsActive": true, "IsReturnable": true, "Info": [ { "Id": 0, "Value": "string", "Code": "string" } ] }, "PriceRecommended": 0, "ManufacturerId": 0, "UniqueName": "string", "StatusId": 0, "StockDisplayBreakPoint": 0, "PriceCatalog": 0, "IsBuyable": true, "SubDescription": "string", "CategoryIdSeed": "string", "RecommendedQuantity": 0, "IsRecommendedQuantityFixed": true, "AppliedPromotions": [ { "Id": 0, "Name": "string", "DiscountCode": "string", "AppliedAmount": 0, "AppliedAmountIncVat": 0 } ], "RequirementPromotionIdSeed": "string", "IsSubscribable": true, "DescriptionHeader": "string", "IsPriceManual": true, "PriceStandard": 0, "EanCode": "string", "CostUnit": 0, "PriceDisplayIncVat": 0, "PriceListLocked": true, "PriceOriginalIncVat": 0, "PriceRecommendedIncVat": 0, "PriceCatalogIncVat": 0, "PriceStandardIncVat": 0 } ], "Info": [ { "TypeId": 0, "Value": "string", "Code": "string" } ], "Summary": { "Items": { "Amount": 0, "Vat": 0, "AmountIncVat": 0 }, "Freigt": { "Amount": 0, "Vat": 0, "AmountIncVat": 0 }, "Fees": { "Amount": 0, "Vat": 0, "AmountIncVat": 0 }, "Total": { "Amount": 0, "Vat": 0, "AmountIncVat": 0 } }, "AppliedPromotions": [ { "Id": 0, "Name": "string", "Header": "string", "ShortDescription": "string", "Description1": "string", "Description2": "string", "StartDate": "2019-08-24T14:15:22Z", "EndDate": "2019-08-24T14:15:22Z", "ImageKey": "string", "RequirementSeed": "string", "DiscountCode": "string", "IsExcludedFromPriceCalculation": true, "AllowProductListing": true, "Images": [ { "Id": 0, "Type": 0, "Name": "string", "Description": "string", "Key": "string" } ], "ProductFilters": [ { "ManufacturerId": 0, "CategorySeed": "string", "TypeId": 0, "ProductId": 0, "VariantProductId": 0, "PartNo": "string", "PricelistId": 0, "FlagId": 0 } ], "AppliedAmount": 0, "EffectSeed": "string", "FreightDiscountPct": 0, "IsStackable": true, "AppliedAmountIncVat": 0, "ExclusivityType": 0 } ], "IpAddress": "string", "AttestedBy": 0, "TypeId": 0, "DoHold": true, "IsBuyable": true, "InvoiceReference": "string", "PaymentMethodId": 0, "DeliveryMethodId": 0, "SalesAreaId": 0 }'
Success
The internal id of the basket. Used to get a specific basket. Ignored in CreateBasket.
The customer internal id for a specific customer associated with this basket. This can be set in CreateBasket if the user is logged in. Otherwise use UpdateBuyer to set customer.
The company internal id for a specific company associated with this basket. This can be set in CreateBasket if the user is logged in with a company. Otherwise use UpdateBuyer to set customer and company.
The currency internal id of the basket. This defines the currency used when processing payments. Can be set when creating a Basket or change later with UpdateBasket. Use either CurrencyId or CurrencyCode. If not specified, the default for the Application will be used.
The CurrencyCode of the basket. This defines the currency used when processing payments. Can be set when creating a Basket or change later with UpdateBasket. Use either CurrencyId or CurrencyCode. If not specified, the default for the Application will be used. MaxLength: 3.
An OrderReference which will be tagged on the order. Can be set in CreateBasket or updated in UpdateBasket. MaxLength: 50.
A comma separated list of used discount codes. To clear the value set it to null or String.Empty an call UpdateBasket. MaxLength: max.
Specifies if the basket is editable. If not, any method that changes the basket will throw Exceptions (Bad Request). It will be false when the basket is no longer a basket. That is when it's paid for or cancelled.
List of information types with values that may be propagated on the order.
Contains all Promotions valid for a Basket, whether or not they are applied. If any promotions are applied more info about them are added to the corresponding Basket.Items.
The user's IpAddress when the basket was created. The value should be fetched from the user request to the application. MaxLength: 50.
The internal type id of the Basket. Can be 1 = Basket, 2 = Saved Basket, 3 = Template Basket for Subscriptions.
DoHold specifies if the resulting order should be on hold until all items on the order can be shipped or not. Default is false. This can be set in the Checkout with UpdateBasket if the Customer does not want part deliveries.
IsBuyable is a rule based property indicating if the Basket's status allows the basket to be purchased. It should be regarded as readonly.
An InvoiceReference which will be tagged on the order. Can be set in CreateBasket or updated in UpdateBasket. MaxLength: 50.
The PaymentMethodId from Storm. Can be set in CreateBasket or updated in UpdatePaymentMethod.
The DeliveryMethodId from Storm. Can be set in CreateBasket or updated in UpdateDeliveryMethod.
{ "Id": 0, "CustomerId": 0, "CompanyId": 0, "SalesContactId": 0, "StatusId": 0, "CurrencyId": 0, "CurrencyCode": "string", "Comment": "string", "OrderReference": "string", "DiscountCode": "string", "ReferId": 0, "ReferUrl": "string", "ValidTo": "2019-08-24T14:15:22Z", "IsEditable": true, "Items": [ { … } ], "Info": [ { … } ], "Summary": { "Items": { … }, "Freigt": { … }, "Fees": { … }, "Total": { … } }, "AppliedPromotions": [ { … } ], "IpAddress": "string", "AttestedBy": 0, "TypeId": 0, "DoHold": true, "IsBuyable": true, "InvoiceReference": "string", "PaymentMethodId": 0, "DeliveryMethodId": 0, "SalesAreaId": 0 }
Supported values are 'orderref' and 'transactionnumber'. These values are provided by the payment provider in their call. General: 'test'=true to enable tests.
curl -i -X POST \ https://demo.storm.io/api/1.1/ShoppingService.svc/rest/PaymentComplete \ -H 'Content-Type: application/json' \ -d '[ { "Name": "string", "Value": "string" } ]'
Success
String response. OK if successful, otherwise may have different values depending on PSP. MaxLength: 50.
External identifier of this specific payment attempt, usually from the PSP. MaxLength: 50.
Used when a payment should be finalized on a different platform, e.g. sending a link by SMS to customer. MaxLength: 50.
PSP specific data returned for the payment. See PSP documentation.
{ "Status": "string", "StatusDescription": "string", "BasketId": 0, "OrderNo": "string", "PaymentCode": "string", "PaymentReference": "string", "HostedPaymentPage": "string", "RedirectUrl": "string", "RedirectParameters": [ { … } ], "IsSyncronous": true, "PaymentServiceId": 0 }
PaymentFormCallback is called from applications using forms based checkouts with support for callbacks. Applications gets called when the end-user gets routed back to a 'Thanks for you order page' and the applications should make this call to the API before routing. See Checkout Form Payments for more information about the checkout process.
A comma separated list of internal pricelist ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.
General: 'Mobile'='True' to enable javascript for mobile phones.
curl -i -X POST \ 'https://demo.storm.io/api/1.1/ShoppingService.svc/rest/PaymentFormCallback?basketId=0' \ -H 'Content-Type: application/json' \ -d '[ { "Name": "string", "Value": "string" } ]'
Success
String response. OK if successful, otherwise may have different values depending on PSP. MaxLength: 50.
External identifier of this specific payment attempt, usually from the PSP. MaxLength: 50.
Used when a payment should be finalized on a different platform, e.g. sending a link by SMS to customer. MaxLength: 50.
PSP specific data returned for the payment. See PSP documentation.
{ "Status": "string", "StatusDescription": "string", "BasketId": 0, "OrderNo": "string", "PaymentCode": "string", "PaymentReference": "string", "HostedPaymentPage": "string", "RedirectUrl": "string", "RedirectParameters": [ { … } ], "IsSyncronous": true, "PaymentServiceId": 0 }
General: 'Mobile'='True' to enable javascript for mobile phones.
curl -i -X POST \ https://demo.storm.io/api/1.1/ShoppingService.svc/rest/PaymentFormComplete \ -H 'Content-Type: application/json' \ -d '[ { "Name": "string", "Value": "string" } ]'
Success
String response. OK if successful, otherwise may have different values depending on PSP. MaxLength: 50.
External identifier of this specific payment attempt, usually from the PSP. MaxLength: 50.
Used when a payment should be finalized on a different platform, e.g. sending a link by SMS to customer. MaxLength: 50.
PSP specific data returned for the payment. See PSP documentation.
{ "Status": "string", "StatusDescription": "string", "BasketId": 0, "OrderNo": "string", "PaymentCode": "string", "PaymentReference": "string", "HostedPaymentPage": "string", "RedirectUrl": "string", "RedirectParameters": [ { … } ], "IsSyncronous": true, "PaymentServiceId": 0 }
A comma separated list of internal pricelist ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.
General: 'extra parameters, reserveamount' for test or set the amount to be used with gift card.
curl -i -X POST \ 'https://demo.storm.io/api/1.1/ShoppingService.svc/rest/PaymentGiftCardReserve?basketId=0&cardNo=string&cvc=string&ipAddress=string&userAgent=string' \ -H 'Content-Type: application/json' \ -d '[ { "Name": "string", "Value": "string" } ]'
Success
String response. OK if successful, otherwise may have different values depending on PSP. MaxLength: 50.
External identifier of this specific payment attempt, usually from the PSP. MaxLength: 50.
Used when a payment should be finalized on a different platform, e.g. sending a link by SMS to customer. MaxLength: 50.
PSP specific data returned for the payment. See PSP documentation.
{ "Status": "string", "StatusDescription": "string", "BasketId": 0, "OrderNo": "string", "PaymentCode": "string", "PaymentReference": "string", "HostedPaymentPage": "string", "RedirectUrl": "string", "RedirectParameters": [ { … } ], "IsSyncronous": true, "PaymentServiceId": 0 }
General: 'cancelreason'=must contain something, preferably a text. 'paymentcode'=paymentcode return by PaymentGiftCardReserve.
curl -i -X POST \ https://demo.storm.io/api/1.1/ShoppingService.svc/rest/PaymentGiftCardRollback \ -H 'Content-Type: application/json' \ -d '[ { "Name": "string", "Value": "string" } ]'
Success
String response. OK if successful, otherwise may have different values depending on PSP. MaxLength: 50.
External identifier of this specific payment attempt, usually from the PSP. MaxLength: 50.
Used when a payment should be finalized on a different platform, e.g. sending a link by SMS to customer. MaxLength: 50.
PSP specific data returned for the payment. See PSP documentation.
{ "Status": "string", "StatusDescription": "string", "BasketId": 0, "OrderNo": "string", "PaymentCode": "string", "PaymentReference": "string", "HostedPaymentPage": "string", "RedirectUrl": "string", "RedirectParameters": [ { … } ], "IsSyncronous": true, "PaymentServiceId": 0 }
This method gets called from PSPs supporting validation callbacks. Storm API makes a preliminary validation by validating the checkout. Checks are for basket status and valid promotions plus all other validations with regard to customer information. No result is returned if validation passes and an exception with both Exceptions below aggregated will be raised if any validation fails.
These values are provided by the PSP. If the initial PaymentParameters, to PurchaseEx or GetPaymentForm, contained ValidationUrl, Storm API will post a checkout object to that url giving the application a possibility to perform additional validations, such as checking availability. If validation succeeds just return an empty result with HttpStatus 200. Failed validations should give a 400 with the message in the content body. Pass ValidationContentType to specify content type of the posted checkout. Supported values are 'application/json' or 'text/xml'. 'text/xml' is default if not specified. CancelUrl must also be specified in order to handle any validation fail messages. The post to validationUrl supports basic authentication. Just add 'username:password@' to the url.
curl -i -X POST \ https://demo.storm.io/api/1.1/ShoppingService.svc/rest/PaymentValidate \ -H 'Content-Type: application/json' \ -d '[ { "Name": "string", "Value": "string" } ]'