mirror of
https://github.com/valitydev/hellgate.git
synced 2024-11-06 02:45:20 +00:00
Temporarily revert second part of HG-538 (#444)
This reverts commit 7f23d74bf7
.
This commit is contained in:
parent
7f23d74bf7
commit
7eea076a4d
@ -2214,10 +2214,12 @@ process_failure({payment, Step} = Activity, Events, Action, Failure, St, _Refund
|
|||||||
_ = maybe_notify_fault_detector(Activity, TargetType, OperationStatus, St),
|
_ = maybe_notify_fault_detector(Activity, TargetType, OperationStatus, St),
|
||||||
process_fatal_payment_failure(Target, Events, Action, Failure, St)
|
process_fatal_payment_failure(Target, Events, Action, Failure, St)
|
||||||
end;
|
end;
|
||||||
|
process_failure({refund_new, ID}, Events, Action, Failure, St, RefundSt) ->
|
||||||
process_failure({refund_new, ID}, [], Action, Failure, _St, _RefundSt) ->
|
_Clocks = rollback_refund_cashflow(RefundSt, St),
|
||||||
{next, {[?refund_ev(ID, ?refund_rollback_started(Failure))], hg_machine_action:set_timeout(0, Action)}};
|
{done, {Events ++ [?refund_ev(ID, ?refund_status_changed(?refund_failed(Failure)))], Action}};
|
||||||
process_failure({refund_session, ID}, Events, Action, Failure, St, _RefundSt) ->
|
% process_failure({refund_new, ID}, [], Action, Failure, _St, _RefundSt) ->
|
||||||
|
% {next, {[?refund_ev(ID, ?refund_rollback_started(Failure))], hg_machine_action:set_timeout(0, Action)}};
|
||||||
|
process_failure({refund_session, ID}, Events, Action, Failure, St, RefundSt) ->
|
||||||
Target = ?refunded(),
|
Target = ?refunded(),
|
||||||
case check_retry_possibility(Target, Failure, St) of
|
case check_retry_possibility(Target, Failure, St) of
|
||||||
{retry, Timeout} ->
|
{retry, Timeout} ->
|
||||||
@ -2226,10 +2228,16 @@ process_failure({refund_session, ID}, Events, Action, Failure, St, _RefundSt) ->
|
|||||||
Events1 = [?refund_ev(ID, E) || E <- SessionEvents],
|
Events1 = [?refund_ev(ID, E) || E <- SessionEvents],
|
||||||
{next, {Events ++ Events1, SessionAction}};
|
{next, {Events ++ Events1, SessionAction}};
|
||||||
fatal ->
|
fatal ->
|
||||||
|
_Clocks = rollback_refund_cashflow(RefundSt, St),
|
||||||
Events1 = [
|
Events1 = [
|
||||||
?refund_ev(ID, ?refund_rollback_started(Failure))
|
?refund_ev(ID, ?refund_status_changed(?refund_failed(Failure)))
|
||||||
],
|
],
|
||||||
{next, {Events ++ Events1, hg_machine_action:set_timeout(0, Action)}}
|
{done, {Events ++ Events1, Action}}
|
||||||
|
% fatal ->
|
||||||
|
% Events1 = [
|
||||||
|
% ?refund_ev(ID, ?refund_rollback_started(Failure))
|
||||||
|
% ],
|
||||||
|
% {next, {Events ++ Events1, hg_machine_action:set_timeout(0, Action)}}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
choose_fd_operation_status_for_failure({failure, Failure}) ->
|
choose_fd_operation_status_for_failure({failure, Failure}) ->
|
||||||
@ -2292,9 +2300,15 @@ process_fatal_payment_failure(?cancelled(), _Events, _Action, Failure, _St) ->
|
|||||||
error({invalid_cancel_failure, Failure});
|
error({invalid_cancel_failure, Failure});
|
||||||
process_fatal_payment_failure(?captured(), _Events, _Action, Failure, _St) ->
|
process_fatal_payment_failure(?captured(), _Events, _Action, Failure, _St) ->
|
||||||
error({invalid_capture_failure, Failure});
|
error({invalid_capture_failure, Failure});
|
||||||
process_fatal_payment_failure(?processed(), Events, Action, Failure, _St) ->
|
% process_fatal_payment_failure(?processed(), [], Action, Failure, _St) ->
|
||||||
RollbackStarted = [?payment_rollback_started(Failure)],
|
% {next, {[?payment_rollback_started(Failure)], hg_machine_action:set_timeout(0, Action)}};
|
||||||
{next, {Events ++ RollbackStarted, hg_machine_action:set_timeout(0, Action)}}.
|
% process_fatal_payment_failure(?processed(), Events, Action, Failure, _St) ->
|
||||||
|
% RollbackStarted = [?payment_rollback_started(Failure)],
|
||||||
|
% {next, {Events ++ RollbackStarted, hg_machine_action:set_timeout(0, Action)}};
|
||||||
|
process_fatal_payment_failure(_Target, Events, Action, Failure, St) ->
|
||||||
|
_Clocks = rollback_payment_cashflow(St),
|
||||||
|
PaymentFailed = [?payment_status_changed(?failed(Failure))],
|
||||||
|
{done, {Events ++ PaymentFailed, Action}}.
|
||||||
|
|
||||||
retry_session(Action, Target, Timeout) ->
|
retry_session(Action, Target, Timeout) ->
|
||||||
NewEvents = start_session(Target),
|
NewEvents = start_session(Target),
|
||||||
@ -2831,7 +2845,12 @@ merge_change(?payment_status_changed(Status), #st{activity = {adjustment_pending
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
merge_change(Change = ?payment_rollback_started(Failure), St, Opts) ->
|
merge_change(Change = ?payment_rollback_started(Failure), St, Opts) ->
|
||||||
_ = validate_transition([{payment, processing_session}], Change, St, Opts),
|
_ = validate_transition([{payment, S} || S <- [
|
||||||
|
risk_scoring,
|
||||||
|
routing,
|
||||||
|
processing_session,
|
||||||
|
processing_failure
|
||||||
|
]], Change, St, Opts),
|
||||||
St#st{
|
St#st{
|
||||||
failure = Failure,
|
failure = Failure,
|
||||||
activity = {payment, processing_failure},
|
activity = {payment, processing_failure},
|
||||||
@ -2841,6 +2860,7 @@ merge_change(Change = ?payment_status_changed({failed, _} = Status), #st{payment
|
|||||||
_ = validate_transition([{payment, S} || S <- [
|
_ = validate_transition([{payment, S} || S <- [
|
||||||
risk_scoring,
|
risk_scoring,
|
||||||
routing,
|
routing,
|
||||||
|
processing_session,
|
||||||
processing_failure
|
processing_failure
|
||||||
]], Change, St, Opts),
|
]], Change, St, Opts),
|
||||||
St#st{
|
St#st{
|
||||||
@ -2943,7 +2963,7 @@ merge_change(Change = ?refund_ev(ID, Event), St, Opts) ->
|
|||||||
_ = validate_transition([{refund_session, ID}, {refund_new, ID}], Change, St, Opts),
|
_ = validate_transition([{refund_session, ID}, {refund_new, ID}], Change, St, Opts),
|
||||||
St#st{activity = {refund_failure, ID}};
|
St#st{activity = {refund_failure, ID}};
|
||||||
?refund_status_changed(?refund_failed(_)) ->
|
?refund_status_changed(?refund_failed(_)) ->
|
||||||
_ = validate_transition([{refund_failure, ID}], Change, St, Opts),
|
_ = validate_transition([{refund_session, ID}, {refund_new, ID}, {refund_failure, ID}], Change, St, Opts),
|
||||||
St;
|
St;
|
||||||
_ ->
|
_ ->
|
||||||
_ = validate_transition([{refund_session, ID}], Change, St, Opts),
|
_ = validate_transition([{refund_session, ID}], Change, St, Opts),
|
||||||
|
@ -947,7 +947,6 @@ processing_deadline_reached_test(C) ->
|
|||||||
PaymentParams = PaymentParams0#payproc_InvoicePaymentParams{processing_deadline = Deadline},
|
PaymentParams = PaymentParams0#payproc_InvoicePaymentParams{processing_deadline = Deadline},
|
||||||
PaymentID = start_payment(InvoiceID, PaymentParams, Client),
|
PaymentID = start_payment(InvoiceID, PaymentParams, Client),
|
||||||
PaymentID = await_sessions_restarts(PaymentID, ?processed(), InvoiceID, Client, 0),
|
PaymentID = await_sessions_restarts(PaymentID, ?processed(), InvoiceID, Client, 0),
|
||||||
[?payment_ev(PaymentID, ?payment_rollback_started({failure, Failure}))] = next_event(InvoiceID, Client),
|
|
||||||
[?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, Failure})))] = next_event(InvoiceID, Client),
|
[?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, Failure})))] = next_event(InvoiceID, Client),
|
||||||
ok = payproc_errors:match(
|
ok = payproc_errors:match(
|
||||||
'PaymentFailure',
|
'PaymentFailure',
|
||||||
@ -1252,11 +1251,8 @@ payment_suspend_timeout_failure(C) ->
|
|||||||
] = next_event(InvoiceID, Client),
|
] = next_event(InvoiceID, Client),
|
||||||
PaymentID = await_payment_session_started(InvoiceID, PaymentID, Client, ?processed()),
|
PaymentID = await_payment_session_started(InvoiceID, PaymentID, Client, ?processed()),
|
||||||
[
|
[
|
||||||
?payment_ev(PaymentID, ?session_ev(?processed(), ?session_finished(?session_failed({failure, Failure})))),
|
?payment_ev(PaymentID, ?session_ev(?processed(), ?session_finished(?session_failed({failure, _Failure})))),
|
||||||
?payment_ev(PaymentID, ?payment_rollback_started({failure, Failure}))
|
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, _Failure})))
|
||||||
] = next_event(InvoiceID, Client),
|
|
||||||
[
|
|
||||||
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, Failure})))
|
|
||||||
] = next_event(InvoiceID, Client).
|
] = next_event(InvoiceID, Client).
|
||||||
|
|
||||||
-spec payment_w_wallet_success(config()) -> _ | no_return().
|
-spec payment_w_wallet_success(config()) -> _ | no_return().
|
||||||
@ -3448,9 +3444,6 @@ payment_refund_success(C) ->
|
|||||||
Refund0 = #domain_InvoicePaymentRefund{id = RefundID0} =
|
Refund0 = #domain_InvoicePaymentRefund{id = RefundID0} =
|
||||||
hg_client_invoicing:refund_payment(InvoiceID, PaymentID, RefundParams, Client),
|
hg_client_invoicing:refund_payment(InvoiceID, PaymentID, RefundParams, Client),
|
||||||
PaymentID = refund_payment(InvoiceID, PaymentID, RefundID0, Refund0, Client),
|
PaymentID = refund_payment(InvoiceID, PaymentID, RefundID0, Refund0, Client),
|
||||||
[
|
|
||||||
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_rollback_started(Failure)))
|
|
||||||
] = next_event(InvoiceID, Client),
|
|
||||||
[
|
[
|
||||||
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_status_changed(?refund_failed(Failure))))
|
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_status_changed(?refund_failed(Failure))))
|
||||||
] = next_event(InvoiceID, Client),
|
] = next_event(InvoiceID, Client),
|
||||||
@ -3500,9 +3493,6 @@ payment_refund_failure(C) ->
|
|||||||
Refund0 = #domain_InvoicePaymentRefund{id = RefundID0} =
|
Refund0 = #domain_InvoicePaymentRefund{id = RefundID0} =
|
||||||
hg_client_invoicing:refund_payment(InvoiceID, PaymentID, RefundParams, Client),
|
hg_client_invoicing:refund_payment(InvoiceID, PaymentID, RefundParams, Client),
|
||||||
PaymentID = refund_payment(InvoiceID, PaymentID, RefundID0, Refund0, Client),
|
PaymentID = refund_payment(InvoiceID, PaymentID, RefundID0, Refund0, Client),
|
||||||
[
|
|
||||||
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_rollback_started(NoFunds)))
|
|
||||||
] = next_event(InvoiceID, Client),
|
|
||||||
[
|
[
|
||||||
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_status_changed(?refund_failed(NoFunds))))
|
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_status_changed(?refund_failed(NoFunds))))
|
||||||
] = next_event(InvoiceID, Client),
|
] = next_event(InvoiceID, Client),
|
||||||
@ -3519,9 +3509,6 @@ payment_refund_failure(C) ->
|
|||||||
PaymentID = await_refund_session_started(InvoiceID, PaymentID, RefundID, Client),
|
PaymentID = await_refund_session_started(InvoiceID, PaymentID, RefundID, Client),
|
||||||
[
|
[
|
||||||
?payment_ev(PaymentID, ?refund_ev(ID, ?session_ev(?refunded(), ?session_finished(?session_failed(Failure))))),
|
?payment_ev(PaymentID, ?refund_ev(ID, ?session_ev(?refunded(), ?session_finished(?session_failed(Failure))))),
|
||||||
?payment_ev(PaymentID, ?refund_ev(ID, ?refund_rollback_started(Failure)))
|
|
||||||
] = next_event(InvoiceID, Client),
|
|
||||||
[
|
|
||||||
?payment_ev(PaymentID, ?refund_ev(ID, ?refund_status_changed(?refund_failed(Failure))))
|
?payment_ev(PaymentID, ?refund_ev(ID, ?refund_status_changed(?refund_failed(Failure))))
|
||||||
] = next_event(InvoiceID, Client),
|
] = next_event(InvoiceID, Client),
|
||||||
#domain_InvoicePaymentRefund{status = ?refund_failed(Failure)} =
|
#domain_InvoicePaymentRefund{status = ?refund_failed(Failure)} =
|
||||||
@ -3544,17 +3531,14 @@ deadline_doesnt_affect_payment_refund(C) ->
|
|||||||
PaymentID = await_payment_capture(InvoiceID, PaymentID, Client),
|
PaymentID = await_payment_capture(InvoiceID, PaymentID, Client),
|
||||||
timer:sleep(ProcessingDeadline),
|
timer:sleep(ProcessingDeadline),
|
||||||
% not enough funds on the merchant account
|
% not enough funds on the merchant account
|
||||||
NoFunds = {failure, payproc_errors:construct('RefundFailure',
|
Failure = {failure, payproc_errors:construct('RefundFailure',
|
||||||
{terms_violated, {insufficient_merchant_funds, #payprocerr_GeneralFailure{}}}
|
{terms_violated, {insufficient_merchant_funds, #payprocerr_GeneralFailure{}}}
|
||||||
)},
|
)},
|
||||||
Refund0 = #domain_InvoicePaymentRefund{id = RefundID0} =
|
Refund0 = #domain_InvoicePaymentRefund{id = RefundID0} =
|
||||||
hg_client_invoicing:refund_payment(InvoiceID, PaymentID, RefundParams, Client),
|
hg_client_invoicing:refund_payment(InvoiceID, PaymentID, RefundParams, Client),
|
||||||
PaymentID = refund_payment(InvoiceID, PaymentID, RefundID0, Refund0, Client),
|
PaymentID = refund_payment(InvoiceID, PaymentID, RefundID0, Refund0, Client),
|
||||||
[
|
[
|
||||||
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_rollback_started(NoFunds)))
|
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_status_changed(?refund_failed(Failure))))
|
||||||
] = next_event(InvoiceID, Client),
|
|
||||||
[
|
|
||||||
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_status_changed(?refund_failed(NoFunds))))
|
|
||||||
] = next_event(InvoiceID, Client),
|
] = next_event(InvoiceID, Client),
|
||||||
% top up merchant account
|
% top up merchant account
|
||||||
InvoiceID2 = start_invoice(ShopID, <<"rubberduck">>, make_due_date(10), 42000, C),
|
InvoiceID2 = start_invoice(ShopID, <<"rubberduck">>, make_due_date(10), 42000, C),
|
||||||
@ -3594,7 +3578,7 @@ payment_manual_refund(C) ->
|
|||||||
},
|
},
|
||||||
PaymentID = await_payment_capture(InvoiceID, PaymentID, Client),
|
PaymentID = await_payment_capture(InvoiceID, PaymentID, Client),
|
||||||
% not enough funds on the merchant account
|
% not enough funds on the merchant account
|
||||||
NoFunds = {failure, payproc_errors:construct('RefundFailure',
|
Failure = {failure, payproc_errors:construct('RefundFailure',
|
||||||
{terms_violated, {insufficient_merchant_funds, #payprocerr_GeneralFailure{}}}
|
{terms_violated, {insufficient_merchant_funds, #payprocerr_GeneralFailure{}}}
|
||||||
)},
|
)},
|
||||||
Refund0 = #domain_InvoicePaymentRefund{id = RefundID0} =
|
Refund0 = #domain_InvoicePaymentRefund{id = RefundID0} =
|
||||||
@ -3603,10 +3587,7 @@ payment_manual_refund(C) ->
|
|||||||
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_created(Refund0, _, TrxInfo)))
|
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_created(Refund0, _, TrxInfo)))
|
||||||
] = next_event(InvoiceID, Client),
|
] = next_event(InvoiceID, Client),
|
||||||
[
|
[
|
||||||
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_rollback_started(NoFunds)))
|
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_status_changed(?refund_failed(Failure))))
|
||||||
] = next_event(InvoiceID, Client),
|
|
||||||
[
|
|
||||||
?payment_ev(PaymentID, ?refund_ev(RefundID0, ?refund_status_changed(?refund_failed(NoFunds))))
|
|
||||||
] = next_event(InvoiceID, Client),
|
] = next_event(InvoiceID, Client),
|
||||||
% top up merchant account
|
% top up merchant account
|
||||||
InvoiceID2 = start_invoice(ShopID, <<"rubberduck">>, make_due_date(10), 42000, C),
|
InvoiceID2 = start_invoice(ShopID, <<"rubberduck">>, make_due_date(10), 42000, C),
|
||||||
@ -4490,9 +4471,6 @@ payment_with_offsite_preauth_failed(C) ->
|
|||||||
PaymentID,
|
PaymentID,
|
||||||
?session_ev(?processed(), ?session_finished(?session_failed({failure, Failure})))
|
?session_ev(?processed(), ?session_finished(?session_failed({failure, Failure})))
|
||||||
),
|
),
|
||||||
?payment_ev(PaymentID, ?payment_rollback_started({failure, Failure}))
|
|
||||||
] = next_event(InvoiceID, 8000, Client),
|
|
||||||
[
|
|
||||||
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, Failure})))
|
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, Failure})))
|
||||||
] = next_event(InvoiceID, 8000, Client),
|
] = next_event(InvoiceID, 8000, Client),
|
||||||
ok = payproc_errors:match('PaymentFailure', Failure, fun({authorization_failed, _}) -> ok end),
|
ok = payproc_errors:match('PaymentFailure', Failure, fun({authorization_failed, _}) -> ok end),
|
||||||
@ -4527,6 +4505,7 @@ repair_fail_pre_processing_succeeded(C) ->
|
|||||||
|
|
||||||
timeout = next_event(InvoiceID, 2000, Client),
|
timeout = next_event(InvoiceID, 2000, Client),
|
||||||
ok = repair_invoice_with_scenario(InvoiceID, fail_pre_processing, Client),
|
ok = repair_invoice_with_scenario(InvoiceID, fail_pre_processing, Client),
|
||||||
|
|
||||||
[
|
[
|
||||||
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, _Failure})))
|
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, _Failure})))
|
||||||
] = next_event(InvoiceID, Client).
|
] = next_event(InvoiceID, Client).
|
||||||
@ -4579,9 +4558,6 @@ repair_fail_session_succeeded(C) ->
|
|||||||
|
|
||||||
[
|
[
|
||||||
?payment_ev(PaymentID, ?session_ev(?processed(), ?session_finished(?session_failed({failure, Failure})))),
|
?payment_ev(PaymentID, ?session_ev(?processed(), ?session_finished(?session_failed({failure, Failure})))),
|
||||||
?payment_ev(PaymentID, ?payment_rollback_started({failure, Failure}))
|
|
||||||
] = next_event(InvoiceID, Client),
|
|
||||||
[
|
|
||||||
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, Failure})))
|
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, Failure})))
|
||||||
] = next_event(InvoiceID, Client).
|
] = next_event(InvoiceID, Client).
|
||||||
|
|
||||||
@ -4605,6 +4581,7 @@ repair_fail_session_on_pre_processing(C) ->
|
|||||||
repair_invoice_with_scenario(InvoiceID, fail_session, Client)
|
repair_invoice_with_scenario(InvoiceID, fail_session, Client)
|
||||||
),
|
),
|
||||||
ok = repair_invoice_with_scenario(InvoiceID, fail_pre_processing, Client),
|
ok = repair_invoice_with_scenario(InvoiceID, fail_pre_processing, Client),
|
||||||
|
|
||||||
[
|
[
|
||||||
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, _Failure})))
|
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, _Failure})))
|
||||||
] = next_event(InvoiceID, Client).
|
] = next_event(InvoiceID, Client).
|
||||||
@ -4657,9 +4634,6 @@ repair_complex_succeeded_second(C) ->
|
|||||||
|
|
||||||
[
|
[
|
||||||
?payment_ev(PaymentID, ?session_ev(?processed(), ?session_finished(?session_failed({failure, Failure})))),
|
?payment_ev(PaymentID, ?session_ev(?processed(), ?session_finished(?session_failed({failure, Failure})))),
|
||||||
?payment_ev(PaymentID, ?payment_rollback_started({failure, Failure}))
|
|
||||||
] = next_event(InvoiceID, Client),
|
|
||||||
[
|
|
||||||
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, Failure})))
|
?payment_ev(PaymentID, ?payment_status_changed(?failed({failure, Failure})))
|
||||||
] = next_event(InvoiceID, Client).
|
] = next_event(InvoiceID, Client).
|
||||||
|
|
||||||
@ -5193,9 +5167,6 @@ await_payment_process_failure(InvoiceID, PaymentID, Client, Restarts, Target) ->
|
|||||||
PaymentID,
|
PaymentID,
|
||||||
?session_ev(Target, ?session_finished(?session_failed(Failure)))
|
?session_ev(Target, ?session_finished(?session_failed(Failure)))
|
||||||
),
|
),
|
||||||
?payment_ev(PaymentID, ?payment_rollback_started(Failure))
|
|
||||||
] = next_event(InvoiceID, Client),
|
|
||||||
[
|
|
||||||
?payment_ev(PaymentID, ?payment_status_changed(?failed(Failure)))
|
?payment_ev(PaymentID, ?payment_status_changed(?failed(Failure)))
|
||||||
] = next_event(InvoiceID, Client),
|
] = next_event(InvoiceID, Client),
|
||||||
{failed, PaymentID, Failure}.
|
{failed, PaymentID, Failure}.
|
||||||
|
Loading…
Reference in New Issue
Block a user