Scenari di simulazione
Come seguire questo capitolo
Dati richiesti: I dati dell’ordine da Apertura del portafoglio e un ambiente isolato.
Passaggi e risultato atteso: Invia un ordine distinto per scenario e verifica lo stato successivo. La prima risposta HTTP conferma la richiesta; lo scenario descrive l’elaborazione seguente.
Alternative e operazioni successive: Scenari di sviluppo opzionali, separati dal percorso normale.
Codice sorgente dei DTO: PortfolioOrderOutputModel
Le variabili assegnate in un blocco precedente vengono riutilizzate nei successivi. I dati inseriti dal cliente provengono dalla tua interfaccia. Conserva identificativi e valori di riferimento nel contesto del cliente; non ricreare il contesto a ogni passaggio.
Gli esempi utilizzano classi helper condivise. Consulta Classi helper condivise: codice C# e Java completo prima di copiare un esempio.
Prima di iniziare: Un ambiente di simulazione configurato separatamente, un adattatore compatibile e gli input di Apertura del portafoglio.
Da conservare per il passaggio successivo: Un ordine il cui stato successivo va verificato. La simulazione dipende dall’integrazione.
Le parole chiave seguenti descrivono gli scenari di alcuni adattatori degli ordini. Sono specifiche dell’integrazione. L’API accetta Note, ma ciò non garantisce che l’adattatore attivo supporti una parola chiave.
Verifica supporto e configurazione con il gestore dell’ambiente isolato. Sono scenari alternativi: invia un ordine distinto per ciascuno e verifica lo stato successivo. Non presumere un supporto universale da parte di tutte le banche o di tutti i deployment.
Verifica supporto e configurazione con il gestore dell’ambiente isolato. Sono scenari alternativi: invia un ordine distinto per ciascuno e verifica lo stato successivo. Non presumere un supporto universale da parte di tutte le banche o di tutti i deployment.
Invio dell’ordine non riuscito
In un adattatore compatibile, !#PORTFOLIO-SUBMISSION-FAIL#! richiede un invio non riuscito, ad esempio un errore di rete simulato.
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var orderPortfolioCreationInputModel = new
{
AccountHoldingInstitutionCode = accountHoldingInstitution.Code,
UserId = userId,
InvestmentCategoryId = investmentCategory3A.Id,
ProposalId = proposalSelectedByUser.Id,
ReasonToChangeProposalResponsesIds = selectedReasonIds,
Note = "!#PORTFOLIO-SUBMISSION-FAIL#!"
};
using var httpContent = GuideHttp.CreateMultipartContent(orderPortfolioCreationInputModel, pdfContractAsByteArray);
(await httpClient.PostAsync("api/v1/user-portfolio-orders/creation", httpContent)).EnsureSuccessStatusCode();
// Use only in an environment whose order adapter supports this keyword.
JsonObject payload = new JsonObject();
payload.addProperty("AccountHoldingInstitutionCode", accountHoldingInstitutionObj.Code);
payload.addProperty("UserId", userId);
payload.addProperty("InvestmentCategoryId", investmentCategoryId);
payload.addProperty("ProposalId", proposalId);
payload.add("ReasonToChangeProposalResponsesIds", new Gson().toJsonTree(selectedReasonIds));
payload.addProperty("Note", "!#PORTFOLIO-SUBMISSION-FAIL#!");
MultiPartBodyPublisher body = new MultiPartBodyPublisher()
.addPart("jsonPayload", payload.toString())
.addPart("userContracts", () -> new ByteArrayInputStream(pdfAsByteArray), "Contract.pdf", "application/pdf");
HttpRequest request = HttpRequest.newBuilder()
.uri(Settings.wmsUri("user-portfolio-orders/creation"))
.timeout(Duration.ofMinutes(1))
.header("Authorization", "Bearer " + accessToken)
.header("Content-Type", "multipart/form-data; boundary=" + body.getBoundary())
.POST(body.build()).build();
var response = httpClient.send(request, BodyHandlers.ofString());
Api.requireSuccess(response);
PortfolioOrderOutputModel order = new Gson().fromJson(response.body(), PortfolioOrderOutputModel.class);
// Check the order status separately; HTTP success does not prove the simulated outcome.
Ordine inviato
In un adattatore compatibile, !#PORTFOLIO-SUBMITTED#! richiede un ordine inviato con dati esterni simulati.
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var orderPortfolioCreationInputModel = new
{
AccountHoldingInstitutionCode = accountHoldingInstitution.Code,
UserId = userId,
InvestmentCategoryId = investmentCategory3A.Id,
ProposalId = proposalSelectedByUser.Id,
ReasonToChangeProposalResponsesIds = selectedReasonIds,
Note = "!#PORTFOLIO-SUBMITTED#!"
};
using var httpContent = GuideHttp.CreateMultipartContent(orderPortfolioCreationInputModel, pdfContractAsByteArray);
(await httpClient.PostAsync("api/v1/user-portfolio-orders/creation", httpContent)).EnsureSuccessStatusCode();
// Use only in an environment whose order adapter supports this keyword.
JsonObject payload = new JsonObject();
payload.addProperty("AccountHoldingInstitutionCode", accountHoldingInstitutionObj.Code);
payload.addProperty("UserId", userId);
payload.addProperty("InvestmentCategoryId", investmentCategoryId);
payload.addProperty("ProposalId", proposalId);
payload.add("ReasonToChangeProposalResponsesIds", new Gson().toJsonTree(selectedReasonIds));
payload.addProperty("Note", "!#PORTFOLIO-SUBMITTED#!");
MultiPartBodyPublisher body = new MultiPartBodyPublisher()
.addPart("jsonPayload", payload.toString())
.addPart("userContracts", () -> new ByteArrayInputStream(pdfAsByteArray), "Contract.pdf", "application/pdf");
HttpRequest request = HttpRequest.newBuilder()
.uri(Settings.wmsUri("user-portfolio-orders/creation"))
.timeout(Duration.ofMinutes(1))
.header("Authorization", "Bearer " + accessToken)
.header("Content-Type", "multipart/form-data; boundary=" + body.getBoundary())
.POST(body.build()).build();
var response = httpClient.send(request, BodyHandlers.ofString());
Api.requireSuccess(response);
PortfolioOrderOutputModel order = new Gson().fromJson(response.body(), PortfolioOrderOutputModel.class);
// Check the order status separately; HTTP success does not prove the simulated outcome.
Ordine accettato
In un adattatore compatibile, !#PORTFOLIO-ACCEPTED#! richiede un ordine accettato con dati esterni simulati.
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var orderPortfolioCreationInputModel = new
{
AccountHoldingInstitutionCode = accountHoldingInstitution.Code,
UserId = userId,
InvestmentCategoryId = investmentCategory3A.Id,
ProposalId = proposalSelectedByUser.Id,
ReasonToChangeProposalResponsesIds = selectedReasonIds,
Note = "!#PORTFOLIO-ACCEPTED#!"
};
using var httpContent = GuideHttp.CreateMultipartContent(orderPortfolioCreationInputModel, pdfContractAsByteArray);
(await httpClient.PostAsync("api/v1/user-portfolio-orders/creation", httpContent)).EnsureSuccessStatusCode();
// Use only in an environment whose order adapter supports this keyword.
JsonObject payload = new JsonObject();
payload.addProperty("AccountHoldingInstitutionCode", accountHoldingInstitutionObj.Code);
payload.addProperty("UserId", userId);
payload.addProperty("InvestmentCategoryId", investmentCategoryId);
payload.addProperty("ProposalId", proposalId);
payload.add("ReasonToChangeProposalResponsesIds", new Gson().toJsonTree(selectedReasonIds));
payload.addProperty("Note", "!#PORTFOLIO-ACCEPTED#!");
MultiPartBodyPublisher body = new MultiPartBodyPublisher()
.addPart("jsonPayload", payload.toString())
.addPart("userContracts", () -> new ByteArrayInputStream(pdfAsByteArray), "Contract.pdf", "application/pdf");
HttpRequest request = HttpRequest.newBuilder()
.uri(Settings.wmsUri("user-portfolio-orders/creation"))
.timeout(Duration.ofMinutes(1))
.header("Authorization", "Bearer " + accessToken)
.header("Content-Type", "multipart/form-data; boundary=" + body.getBoundary())
.POST(body.build()).build();
var response = httpClient.send(request, BodyHandlers.ofString());
Api.requireSuccess(response);
PortfolioOrderOutputModel order = new Gson().fromJson(response.body(), PortfolioOrderOutputModel.class);
// Check the order status separately; HTTP success does not prove the simulated outcome.
Ordine accettato e portafoglio investito
In un adattatore compatibile, !#PORTFOLIO-TRADED#! richiede un ordine accettato e investito.
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var orderPortfolioCreationInputModel = new
{
AccountHoldingInstitutionCode = accountHoldingInstitution.Code,
UserId = userId,
InvestmentCategoryId = investmentCategory3A.Id,
ProposalId = proposalSelectedByUser.Id,
ReasonToChangeProposalResponsesIds = selectedReasonIds,
Note = "!#PORTFOLIO-TRADED#!"
};
using var httpContent = GuideHttp.CreateMultipartContent(orderPortfolioCreationInputModel, pdfContractAsByteArray);
(await httpClient.PostAsync("api/v1/user-portfolio-orders/creation", httpContent)).EnsureSuccessStatusCode();
// Use only in an environment whose order adapter supports this keyword.
JsonObject payload = new JsonObject();
payload.addProperty("AccountHoldingInstitutionCode", accountHoldingInstitutionObj.Code);
payload.addProperty("UserId", userId);
payload.addProperty("InvestmentCategoryId", investmentCategoryId);
payload.addProperty("ProposalId", proposalId);
payload.add("ReasonToChangeProposalResponsesIds", new Gson().toJsonTree(selectedReasonIds));
payload.addProperty("Note", "!#PORTFOLIO-TRADED#!");
MultiPartBodyPublisher body = new MultiPartBodyPublisher()
.addPart("jsonPayload", payload.toString())
.addPart("userContracts", () -> new ByteArrayInputStream(pdfAsByteArray), "Contract.pdf", "application/pdf");
HttpRequest request = HttpRequest.newBuilder()
.uri(Settings.wmsUri("user-portfolio-orders/creation"))
.timeout(Duration.ofMinutes(1))
.header("Authorization", "Bearer " + accessToken)
.header("Content-Type", "multipart/form-data; boundary=" + body.getBoundary())
.POST(body.build()).build();
var response = httpClient.send(request, BodyHandlers.ofString());
Api.requireSuccess(response);
PortfolioOrderOutputModel order = new Gson().fromJson(response.body(), PortfolioOrderOutputModel.class);
// Check the order status separately; HTTP success does not prove the simulated outcome.
Ordine rifiutato
In un adattatore compatibile, !#PORTFOLIO-REJECTED#! richiede un ordine rifiutato.
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var orderPortfolioCreationInputModel = new
{
AccountHoldingInstitutionCode = accountHoldingInstitution.Code,
UserId = userId,
InvestmentCategoryId = investmentCategory3A.Id,
ProposalId = proposalSelectedByUser.Id,
ReasonToChangeProposalResponsesIds = selectedReasonIds,
Note = "!#PORTFOLIO-REJECTED#!"
};
using var httpContent = GuideHttp.CreateMultipartContent(orderPortfolioCreationInputModel, pdfContractAsByteArray);
(await httpClient.PostAsync("api/v1/user-portfolio-orders/creation", httpContent)).EnsureSuccessStatusCode();
// Use only in an environment whose order adapter supports this keyword.
JsonObject payload = new JsonObject();
payload.addProperty("AccountHoldingInstitutionCode", accountHoldingInstitutionObj.Code);
payload.addProperty("UserId", userId);
payload.addProperty("InvestmentCategoryId", investmentCategoryId);
payload.addProperty("ProposalId", proposalId);
payload.add("ReasonToChangeProposalResponsesIds", new Gson().toJsonTree(selectedReasonIds));
payload.addProperty("Note", "!#PORTFOLIO-REJECTED#!");
MultiPartBodyPublisher body = new MultiPartBodyPublisher()
.addPart("jsonPayload", payload.toString())
.addPart("userContracts", () -> new ByteArrayInputStream(pdfAsByteArray), "Contract.pdf", "application/pdf");
HttpRequest request = HttpRequest.newBuilder()
.uri(Settings.wmsUri("user-portfolio-orders/creation"))
.timeout(Duration.ofMinutes(1))
.header("Authorization", "Bearer " + accessToken)
.header("Content-Type", "multipart/form-data; boundary=" + body.getBoundary())
.POST(body.build()).build();
var response = httpClient.send(request, BodyHandlers.ofString());
Api.requireSuccess(response);
PortfolioOrderOutputModel order = new Gson().fromJson(response.body(), PortfolioOrderOutputModel.class);
// Check the order status separately; HTTP success does not prove the simulated outcome.