Skip to main content

Upgrade

Automatic database migration

For performance reasons, the VippsOrderId field has been migrated to use a different data type. Existing Vipps installations will undergo a migration that happens during site startup. Make sure to back up the commerce database before upgrading, in case any error or data loss should happen. Actions taken during this migration are logged on DEBUG level.

Affected tables

The following tables are affected by the database migration. Please ensure beforehand that no tables have constraints (e.g., indexes) that prohibit altering the column VippsOrderId.

OrderGroup_PurchaseOrder
OrderGroup_PurchaseOrder_Localization
OrderGroup_ShoppingCart
OrderGroup_ShoppingCart_Localization

Breaking changes

VippsPaymentService and VippsAsyncPaymentService

Dependency reference to IVippsService has been removed from the constructor. This will result in a build error that can be resolved by removing the IVippsService parameter from any inheriting classes.

IVippsOrderProcessor

Task<ProcessOrderResponse> CreatePurchaseOrder(ICart cart) has a new signature ProcessOrderResponse CreatePurchaseOrder(ICart cart) and is executed synchronously. If you previously used asynchronous method calls inside an overriding class, please use AsyncHelper.RunSync(() => ...) included in the Vipps package to execute.

Due to some performance concerns we have made some adjustments to the default implementation of IVippsOrderProcessor which should resonate in any inheriting implementation.

[Obsolete] Task<ProcessOrderResponse> ProcessOrderDetails(DetailsResponse detailsResponse, string orderId, Guid contactId, string marketId, string cartName) Is now considered Obsolete and will be removed in the future. Instead, different alternatives are to take its place.

Task<ProcessOrderResponse> FetchAndProcessOrderDetailsAsync(string orderId, Guid contactId, string marketId, string cartName) and ProcessOrderResponse FetchAndProcessOrderDetails(string orderId, Guid contactId, string marketId, string cartName) Encapsulates all loading of IPurchaseOrder, ICart and IVippsUserDetails to have more control over simultaneous execution. These methods should be used by callback controllers.

Task<ProcessOrderResponse> ProcessOrderDetails(DetailsResponse detailsResponse, string orderId, ICart cart) Reuses an already loaded cart and executes without the need for loading a purchase order. This method is used internally by the polling logic and is not suited for public exposure.

Help us improve our documentation

Did you find what you were looking for?