public override async Task <Order> Run(Order arg, CommercePipelineExecutionContext context)
        {
            if (!arg.HasComponent <IngenicoPaymentComponent>())
            {
                return(arg);
            }

            var paymentComponent = arg.GetComponent <IngenicoPaymentComponent>();

            switch (paymentComponent.TransactionStatus)
            {
            case "Problem":
                KnownOrderStatusPolicy knownOrderStatusPolicy = context.GetPolicy <KnownOrderStatusPolicy>();
                arg.Status = knownOrderStatusPolicy.Problem;
                await context.CommerceContext.AddMessage(context.CommerceContext.GetPolicy <KnownResultCodes>().Error,
                                                         "InvalidOrderState",
                                                         new object[] { arg.Id },
                                                         $"There was a problem with the Ingenico payment.");

                break;

            case "Settled":
                // The Payment has been settled, continue with the normal flow.
                break;

            default:
                // No payment received, abort the normal order flow.
                context.Abort("Ogone payment has not yet been received.", context);
                break;
            }

            return(arg);
        }
        public override Task <Order> Run(Order arg, CommercePipelineExecutionContext context)
        {
            KnownOrderStatusPolicy policy1 = context.GetPolicy <KnownOrderStatusPolicy>();

            if (!arg.Status.Equals(policy1.Pending, StringComparison.OrdinalIgnoreCase))
            {
                return(Task.FromResult(arg));
            }

            arg.Status = "WaitingForPayment";
            arg.GetComponent <TransientListMembershipsComponent>().Memberships.Add("WaitingForPaymentOrders");
            return(Task.FromResult(arg));
        }
Example #3
0
        public override async Task <Order> Run(Order arg, CommercePipelineExecutionContext context)
        {
            KnownOrderStatusPolicy policy = context.GetPolicy <KnownOrderStatusPolicy>();

            arg.Status = policy.Released;

            KnownOrderListsPolicy listPolicy = context.GetPolicy <KnownOrderListsPolicy>();

            arg.GetComponent <TransientListMembershipsComponent>().Memberships.Add(listPolicy.ReleasedOrders);

            await removeListEntitiesPipeline.Run(new ListEntitiesArgument(new string[1]
            {
                arg.Id
            }, "WaitingForPaymentOrders"), context);

            await persistEntityPipeline.Run(new PersistEntityArgument(arg), context).ConfigureAwait(false);

            await eventRegistry.ListItemUpdated().Send(arg, Name);

            return(arg);
        }