@@ -59,43 +59,49 @@ public virtual async Task<PostProcessPaymentRequestResult> PostProcessPaymentAsy
5959 foreach ( var inPayment in customerOrder . InPayments . Where ( x => x . PaymentMethod != null && ( string . IsNullOrEmpty ( paymentParameters . PaymentMethodCode ) || x . GatewayCode . EqualsIgnoreCase ( paymentParameters . PaymentMethodCode ) ) ) )
6060 {
6161 //Each payment method must check that these parameters are addressed to it
62- var result = inPayment . PaymentMethod . ValidatePostProcessRequest ( paymentParameters . Parameters ) ;
62+ var paymentMethodValidationResult = inPayment . PaymentMethod . ValidatePostProcessRequest ( paymentParameters . Parameters ) ;
6363
64- if ( result . IsSuccess )
64+ if ( ! paymentMethodValidationResult . IsSuccess )
6565 {
66- var request = new PostProcessPaymentRequest
67- {
68- OrderId = customerOrder . Id ,
69- Order = customerOrder ,
70- PaymentId = inPayment . Id ,
71- Payment = inPayment ,
72- StoreId = customerOrder . StoreId ,
73- Store = store ,
74- OuterId = result . OuterId ,
75- Parameters = paymentParameters . Parameters
76- } ;
66+ continue ;
67+ }
68+
69+ var paymentMethodRequest = new PostProcessPaymentRequest
70+ {
71+ OrderId = customerOrder . Id ,
72+ Order = customerOrder ,
73+ PaymentId = inPayment . Id ,
74+ Payment = inPayment ,
75+ StoreId = customerOrder . StoreId ,
76+ Store = store ,
77+ OuterId = paymentMethodValidationResult . OuterId ,
78+ Parameters = paymentParameters . Parameters
79+ } ;
80+
81+ var paymentMethodPostProcessResult = inPayment . PaymentMethod . PostProcessPayment ( paymentMethodRequest ) ;
82+
83+ if ( paymentMethodPostProcessResult == null )
84+ {
85+ continue ;
86+ }
7787
78- var retVal = inPayment . PaymentMethod . PostProcessPayment ( request ) ;
88+ var customerOrderValidationResult = await ValidateAsync ( customerOrder ) ;
7989
80- if ( retVal != null )
90+ if ( ! customerOrderValidationResult . IsValid )
91+ {
92+ return new PostProcessPaymentRequestNotValidResult ( )
8193 {
82- var validationResult = await ValidateAsync ( customerOrder ) ;
83- if ( ! validationResult . IsValid )
84- {
85- return new PostProcessPaymentRequestNotValidResult ( )
86- {
87- Errors = validationResult . Errors ,
88- ErrorMessage = string . Join ( " " , validationResult . Errors . Select ( x => x . ErrorMessage ) )
89- } ;
90- }
91- await customerOrderService . SaveChangesAsync ( new [ ] { customerOrder } ) ;
92-
93- // order Number is required
94- retVal . OrderId = customerOrder . Number ;
95- }
96-
97- return retVal ;
94+ Errors = customerOrderValidationResult . Errors ,
95+ ErrorMessage = string . Join ( " " , customerOrderValidationResult . Errors . Select ( x => x . ErrorMessage ) )
96+ } ;
9897 }
98+
99+ await customerOrderService . SaveChangesAsync ( new [ ] { customerOrder } ) ;
100+
101+ // order Number is required
102+ paymentMethodPostProcessResult . OrderId = customerOrder . Number ;
103+
104+ return paymentMethodPostProcessResult ;
99105 }
100106
101107 return new PostProcessPaymentRequestResult { ErrorMessage = "Payment method not found" } ;
0 commit comments