View a markdown version of this page

Aggiorna gli ordini di acquisto dopo l'accettazione del contratto utilizzando un AWS SDK - AWS Esempi di codice SDK

Sono disponibili altri esempi di AWS SDK nel repository AWS Doc SDK Examples. GitHub

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiorna gli ordini di acquisto dopo l'accettazione del contratto utilizzando un AWS SDK

I seguenti esempi di codice mostrano come aggiornare gli ordini di acquisto dopo l'accettazione del contratto.

Java
SDK per Java 2.x
Nota

C'è altro su GitHub. Trova l’esempio completo e scopri come eseguire la configurazione e l’esecuzione nel repository di esempi di codice dell’API AWS Marketplace.

package com.example.awsmarketplace.agreementapi.buyer; import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.marketplaceagreement.MarketplaceAgreementClient; import software.amazon.awssdk.services.marketplaceagreement.model.AcceptAgreementRequestRequest; import software.amazon.awssdk.services.marketplaceagreement.model.AcceptAgreementRequestResponse; import software.amazon.awssdk.services.marketplaceagreement.model.Charge; import software.amazon.awssdk.services.marketplaceagreement.model.ConfigurableUpfrontPricingTermConfiguration; import software.amazon.awssdk.services.marketplaceagreement.model.CreateAgreementRequestRequest; import software.amazon.awssdk.services.marketplaceagreement.model.CreateAgreementRequestResponse; import software.amazon.awssdk.services.marketplaceagreement.model.Dimension; import software.amazon.awssdk.services.marketplaceagreement.model.Intent; import software.amazon.awssdk.services.marketplaceagreement.model.ListAgreementChargesRequest; import software.amazon.awssdk.services.marketplaceagreement.model.ListAgreementChargesResponse; import software.amazon.awssdk.services.marketplaceagreement.model.PurchaseOrder; import software.amazon.awssdk.services.marketplaceagreement.model.RequestedTerm; import software.amazon.awssdk.services.marketplaceagreement.model.RequestedTermConfiguration; import software.amazon.awssdk.services.marketplaceagreement.model.UpdatePurchaseOrdersRequest; import utils.AgreementApiUtils; /** * Demonstrates how to associate a purchase order reference with a SaaS agreement with CONTRACT pricing model * using the AWS Marketplace Agreement Service APIs. * * <p>Scenario: A buyer creates a SaaS agreement request with CONTRACT pricing model and provides a purchase order * reference in AcceptAgreementRequest. After acceptance, the buyer lists the resulting * charges via ListAgreementCharges and associates the purchase order reference with a * specific charge via UpdatePurchaseOrders. * * <p>Before running this sample, replace the placeholder constants below with values from * your AWS Marketplace offer: * <ul> * <li>{@code AGREEMENT_PROPOSAL_IDENTIFIER} — the agreementProposalId from the offer.</li> * <li>Term IDs (starting with {@code term-}) — found in the offer's term list.</li> * <li>{@code SELECTOR_VALUE} — duration for the agreement.</li> * <li>{@code DIMENSION_1_KEY} — dimension key defined in the offer.</li> * <li>{@code PURCHASE_ORDER_REFERENCE} — your internal purchase order number (e.g., {@code po-123456}).</li> * </ul> */ public class UpdatePurchaseOrdersAfterAgreementAcceptance { // Your internal purchase order reference number (e.g., "po-123456"). private static final String PURCHASE_ORDER_REFERENCE = "po-123456"; // The agreementProposalId from the offer. private static final String AGREEMENT_PROPOSAL_IDENTIFIER = "<your-agreement-proposal-identifier>"; // Term ID for the ConfigurableUpfrontPricingTerm in your offer. private static final String CONFIGURABLE_UPFRONT_PRICING_TERM_ID = "<your-configurable-upfront-pricing-term-id>"; // Duration for the agreement (e.g., "P366D" for 366 days). private static final String SELECTOR_VALUE = "<your-selector-value>"; // Dimension key and quantity defined in your offer. private static final String DIMENSION_1_KEY = "<your-dimension-key>"; private static final int DIMENSION_1_VALUE = 1; // Term ID for the LegalTerm in your offer. private static final String LEGAL_TERM_ID = "<your-legal-term-id>"; // Term ID for the ValidityTerm in your offer. private static final String VALIDITY_TERM_ID = "<your-validity-term-id>"; public static void main(String[] args) { listAgreementChargesAndUpdatePurchaseOrders(); } /** * Full end-to-end flow: * 1. Create a SaaS agreement with CONTRACT pricing model with a purchase order reference. * 2. List charges to retrieve charge IDs and revisions. * 3. Associate the purchase order reference with a specific charge via UpdatePurchaseOrders. * 4. List charges again to confirm the update. */ private static void listAgreementChargesAndUpdatePurchaseOrders() { MarketplaceAgreementClient marketplaceAgreementClient = MarketplaceAgreementClient.builder() .httpClient(ApacheHttpClient.builder().build()) .credentialsProvider(ProfileCredentialsProvider.create()) .build(); RequestedTerm configurableUpfrontPricingTerm = RequestedTerm.builder() .id(CONFIGURABLE_UPFRONT_PRICING_TERM_ID) .configuration(RequestedTermConfiguration.fromConfigurableUpfrontPricingTermConfiguration( ConfigurableUpfrontPricingTermConfiguration.builder() .selectorValue(SELECTOR_VALUE) .dimensions(Dimension.builder() .dimensionKey(DIMENSION_1_KEY) .dimensionValue(DIMENSION_1_VALUE) .build()) .build())) .build(); RequestedTerm legalTerm = RequestedTerm.builder().id(LEGAL_TERM_ID).build(); RequestedTerm validityTerm = RequestedTerm.builder().id(VALIDITY_TERM_ID).build(); // --- Create Agreement --- CreateAgreementRequestRequest createAgreementRequestRequest = CreateAgreementRequestRequest.builder() .clientToken(AgreementApiUtils.generateClientToken()) .intent(Intent.NEW) .requestedTerms(configurableUpfrontPricingTerm, legalTerm, validityTerm) .agreementProposalIdentifier(AGREEMENT_PROPOSAL_IDENTIFIER) .build(); CreateAgreementRequestResponse createAgreementRequestResponse = marketplaceAgreementClient.createAgreementRequest(createAgreementRequestRequest); System.out.println("Agreement request created. AgreementRequestId: " + createAgreementRequestResponse.agreementRequestId()); // --- Accept Agreement Request with Purchase Order --- // The chargeId is available from the CAR response's chargeSummary.expectedCharges. String chargeId = createAgreementRequestResponse.chargeSummary().expectedCharges().get(0).id(); PurchaseOrder purchaseOrderAtAcceptance = PurchaseOrder.builder() .chargeId(chargeId) .purchaseOrderReference(PURCHASE_ORDER_REFERENCE) .build(); AcceptAgreementRequestRequest acceptAgreementRequestRequest = AcceptAgreementRequestRequest.builder() .agreementRequestId(createAgreementRequestResponse.agreementRequestId()) .purchaseOrders(purchaseOrderAtAcceptance) .build(); AcceptAgreementRequestResponse acceptAgreementRequestResponse = marketplaceAgreementClient.acceptAgreementRequest(acceptAgreementRequestRequest); final String agreementId = acceptAgreementRequestResponse.agreementId(); System.out.println("Agreement request accepted with purchase order reference '" + PURCHASE_ORDER_REFERENCE + "'. AgreementId: " + agreementId); // --- List Agreement Charges --- ListAgreementChargesRequest listAgreementChargesRequest = ListAgreementChargesRequest.builder() .agreementId(agreementId) .build(); ListAgreementChargesResponse listAgreementChargesResponse = marketplaceAgreementClient.listAgreementCharges(listAgreementChargesRequest); System.out.println("All charges for agreement " + agreementId + ":"); AgreementApiUtils.formatOutput(listAgreementChargesResponse); // --- Update Purchase Order --- Charge firstCharge = listAgreementChargesResponse.items().get(0); PurchaseOrder purchaseOrder = PurchaseOrder.builder() .agreementId(agreementId) .purchaseOrderReference(PURCHASE_ORDER_REFERENCE) .chargeRevision(firstCharge.revision()) .chargeId(firstCharge.id()) .build(); UpdatePurchaseOrdersRequest updatePurchaseOrdersRequest = UpdatePurchaseOrdersRequest.builder() .purchaseOrders(purchaseOrder) .build(); marketplaceAgreementClient.updatePurchaseOrders(updatePurchaseOrdersRequest); System.out.println("Purchase order reference '" + PURCHASE_ORDER_REFERENCE + "' updated for ChargeId: " + firstCharge.id()); // --- Verify Update --- ListAgreementChargesRequest lacRequest = ListAgreementChargesRequest.builder() .agreementId(agreementId) .build(); ListAgreementChargesResponse lacResponse = marketplaceAgreementClient.listAgreementCharges(lacRequest); System.out.println("Verified updated charge:"); AgreementApiUtils.formatOutput(lacResponse.items().get(0)); } }
  • Per i dettagli sull'API, consulta la UpdatePurchaseOrderssezione AWS SDK for Java 2.x API Reference.

JavaScript
SDK per JavaScript (v3)
Nota

C'è altro da fare. GitHub Trova l’esempio completo e scopri come eseguire la configurazione e l’esecuzione nel repository di esempi di codice dell’API AWS Marketplace.

const { MarketplaceAgreementClient, CreateAgreementRequestCommand, AcceptAgreementRequestCommand, ListAgreementChargesCommand, UpdatePurchaseOrdersCommand, } = require("@aws-sdk/client-marketplace-agreement"); const { generateClientToken, formatOutput } = require("./utils/AgreementApiUtils"); /** * Demonstrates how to associate a purchase order reference with a SaaS agreement with CONTRACT pricing model * using the AWS Marketplace Agreement Service APIs. * * Scenario: A buyer creates a SaaS agreement request with CONTRACT pricing model and provides a purchase order * reference in AcceptAgreementRequest. After acceptance, the buyer lists the resulting * charges via ListAgreementCharges and associates the purchase order reference with a * specific charge via UpdatePurchaseOrders. * * Before running this sample, replace the placeholder constants below with values from * your AWS Marketplace offer: * - AGREEMENT_PROPOSAL_IDENTIFIER — the agreementProposalId from the offer. * - Term IDs (starting with "term-") — found in the offer's term list. * - SELECTOR_VALUE — duration for the agreement. * - DIMENSION_1_KEY — dimension key defined in the offer. * - PURCHASE_ORDER_REFERENCE — your internal purchase order number (e.g., "po-123456"). */ // Your internal purchase order reference number (e.g., "po-123456"). const PURCHASE_ORDER_REFERENCE = "po-123456"; // The agreementProposalId from the offer. const AGREEMENT_PROPOSAL_IDENTIFIER = "<your-agreement-proposal-identifier>"; // Term ID for the ConfigurableUpfrontPricingTerm in your offer. const CONFIGURABLE_UPFRONT_PRICING_TERM_ID = "<your-configurable-upfront-pricing-term-id>"; // Duration for the agreement (e.g., "P366D" for 366 days). const SELECTOR_VALUE = "<your-selector-value>"; // Dimension key and quantity defined in your offer. const DIMENSION_1_KEY = "<your-dimension-key>"; const DIMENSION_1_VALUE = 1; // Term ID for the LegalTerm in your offer. const LEGAL_TERM_ID = "<your-legal-term-id>"; // Term ID for the ValidityTerm in your offer. const VALIDITY_TERM_ID = "<your-validity-term-id>"; /** * Full end-to-end flow: * 1. Create a SaaS agreement with CONTRACT pricing model with a purchase order reference. * 2. List charges to retrieve charge IDs and revisions. * 3. Associate the purchase order reference with a specific charge via UpdatePurchaseOrders. * 4. List charges again to confirm the update. */ async function listAgreementChargesAndUpdatePurchaseOrders() { const client = new MarketplaceAgreementClient(); const configurableUpfrontPricingTerm = { id: CONFIGURABLE_UPFRONT_PRICING_TERM_ID, configuration: { configurableUpfrontPricingTermConfiguration: { selectorValue: SELECTOR_VALUE, dimensions: [ { dimensionKey: DIMENSION_1_KEY, dimensionValue: DIMENSION_1_VALUE }, ], }, }, }; const legalTerm = { id: LEGAL_TERM_ID }; const validityTerm = { id: VALIDITY_TERM_ID }; // --- Create Agreement --- const createAgreementRequestResponse = await client.send( new CreateAgreementRequestCommand({ clientToken: generateClientToken(), intent: "NEW", requestedTerms: [configurableUpfrontPricingTerm, legalTerm, validityTerm], agreementProposalIdentifier: AGREEMENT_PROPOSAL_IDENTIFIER, }) ); console.log("Agreement request created. AgreementRequestId: " + createAgreementRequestResponse.agreementRequestId); // --- Accept Agreement Request with Purchase Order --- // The chargeId is available from the CAR response's chargeSummary.expectedCharges. const chargeId = createAgreementRequestResponse.chargeSummary.expectedCharges[0].id; const purchaseOrderAtAcceptance = { chargeId: chargeId, purchaseOrderReference: PURCHASE_ORDER_REFERENCE, }; const acceptAgreementRequestResponse = await client.send( new AcceptAgreementRequestCommand({ agreementRequestId: createAgreementRequestResponse.agreementRequestId, purchaseOrders: [purchaseOrderAtAcceptance], }) ); const agreementId = acceptAgreementRequestResponse.agreementId; console.log("Agreement request accepted with purchase order reference '" + PURCHASE_ORDER_REFERENCE + "'. AgreementId: " + agreementId); // --- List Agreement Charges --- const listAgreementChargesResponse = await client.send( new ListAgreementChargesCommand({ agreementId: agreementId, }) ); console.log("All charges for agreement " + agreementId + ":"); formatOutput(listAgreementChargesResponse); // --- Update Purchase Order --- const firstCharge = listAgreementChargesResponse.items[0]; const purchaseOrder = { agreementId: agreementId, purchaseOrderReference: PURCHASE_ORDER_REFERENCE, chargeRevision: firstCharge.revision, chargeId: firstCharge.id, }; await client.send( new UpdatePurchaseOrdersCommand({ purchaseOrders: [purchaseOrder], }) ); console.log("Purchase order reference '" + PURCHASE_ORDER_REFERENCE + "' updated for ChargeId: " + firstCharge.id); // --- Verify Update --- const lacResponse = await client.send( new ListAgreementChargesCommand({ agreementId: agreementId, }) ); console.log("Verified updated charge:"); formatOutput(lacResponse.items[0]); } listAgreementChargesAndUpdatePurchaseOrders();
  • Per i dettagli sull'API, consulta la UpdatePurchaseOrderssezione AWS SDK per JavaScript API Reference.

Python
SDK per Python (Boto3)
Nota

C'è altro su GitHub. Trova l’esempio completo e scopri come eseguire la configurazione e l’esecuzione nel repository di esempi di codice dell’API AWS Marketplace.

""" Demonstrates how to associate a purchase order reference with a SaaS agreement with CONTRACT pricing model using the AWS Marketplace Agreement Service APIs. Scenario: A buyer creates a SaaS agreement request with CONTRACT pricing model and provides a purchase order reference in AcceptAgreementRequest. After acceptance, the buyer lists the resulting charges via ListAgreementCharges and associates the purchase order reference with a specific charge via UpdatePurchaseOrders. Before running this sample, replace the placeholder constants below with values from your AWS Marketplace offer: - AGREEMENT_PROPOSAL_IDENTIFIER — the agreementProposalId from the offer. - Term IDs (starting with term-) — found in the offer's term list. - SELECTOR_VALUE — duration for the agreement. - DIMENSION_1_KEY — dimension key defined in the offer. - PURCHASE_ORDER_REFERENCE — your internal purchase order number (e.g., po-123456). """ import boto3 from utils.agreement_api_utils import format_output, generate_client_token class UpdatePurchaseOrdersAfterAgreementAcceptance: # Your internal purchase order reference number (e.g., "po-123456"). PURCHASE_ORDER_REFERENCE = "po-123456" # The agreementProposalId from the offer. AGREEMENT_PROPOSAL_IDENTIFIER = "<your-agreement-proposal-identifier>" # Term ID for the ConfigurableUpfrontPricingTerm in your offer. CONFIGURABLE_UPFRONT_PRICING_TERM_ID = "<your-configurable-upfront-pricing-term-id>" # Duration for the agreement (e.g., "P366D" for 366 days). SELECTOR_VALUE = "<your-selector-value>" # Dimension key and quantity defined in your offer. DIMENSION_1_KEY = "<your-dimension-key>" DIMENSION_1_VALUE = 1 # Term ID for the LegalTerm in your offer. LEGAL_TERM_ID = "<your-legal-term-id>" # Term ID for the ValidityTerm in your offer. VALIDITY_TERM_ID = "<your-validity-term-id>" @staticmethod def list_agreement_charges_and_update_purchase_orders(): """ Full end-to-end flow: 1. Create a SaaS agreement with CONTRACT pricing model with a purchase order reference. 2. List charges to retrieve charge IDs and revisions. 3. Associate the purchase order reference with a specific charge via UpdatePurchaseOrders. 4. List charges again to confirm the update. """ client = boto3.client("marketplace-agreement") cls = UpdatePurchaseOrdersAfterAgreementAcceptance configurable_upfront_pricing_term = { "id": cls.CONFIGURABLE_UPFRONT_PRICING_TERM_ID, "configuration": { "configurableUpfrontPricingTermConfiguration": { "selectorValue": cls.SELECTOR_VALUE, "dimensions": [ { "dimensionKey": cls.DIMENSION_1_KEY, "dimensionValue": cls.DIMENSION_1_VALUE, }, ], } }, } legal_term = {"id": cls.LEGAL_TERM_ID} validity_term = {"id": cls.VALIDITY_TERM_ID} # --- Create Agreement --- create_response = client.create_agreement_request( clientToken=generate_client_token(), intent="NEW", requestedTerms=[configurable_upfront_pricing_term, legal_term, validity_term], agreementProposalIdentifier=cls.AGREEMENT_PROPOSAL_IDENTIFIER, ) agreement_request_id = create_response["agreementRequestId"] print("Agreement request created. AgreementRequestId: " + agreement_request_id) # --- Accept Agreement Request with Purchase Order --- # The chargeId is available from the CAR response's chargeSummary.expectedCharges. charge_id = create_response["chargeSummary"]["expectedCharges"][0]["id"] accept_response = client.accept_agreement_request( agreementRequestId=agreement_request_id, purchaseOrders=[ { "chargeId": charge_id, "purchaseOrderReference": cls.PURCHASE_ORDER_REFERENCE, } ], ) agreement_id = accept_response["agreementId"] print( "Agreement request accepted with purchase order reference '" + cls.PURCHASE_ORDER_REFERENCE + "'. AgreementId: " + agreement_id ) # --- List Agreement Charges --- list_charges_response = client.list_agreement_charges(agreementId=agreement_id) print("All charges for agreement " + agreement_id + ":") format_output(list_charges_response) # --- Update Purchase Order --- first_charge = list_charges_response["items"][0] client.update_purchase_orders( purchaseOrders=[ { "agreementId": agreement_id, "purchaseOrderReference": cls.PURCHASE_ORDER_REFERENCE, "chargeRevision": first_charge["revision"], "chargeId": first_charge["id"], } ], ) print( "Purchase order reference '" + cls.PURCHASE_ORDER_REFERENCE + "' updated for ChargeId: " + first_charge["id"] ) # --- Verify Update --- lac_response = client.list_agreement_charges(agreementId=agreement_id) print("Verified updated charge:") format_output(lac_response["items"][0]) if __name__ == "__main__": UpdatePurchaseOrdersAfterAgreementAcceptance.list_agreement_charges_and_update_purchase_orders()