Sono disponibili altri esempi di AWS SDK nel repository AWS Doc SDK Examples.
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()-
Per i dettagli sull'API, consulta UpdatePurchaseOrders AWSSDK for Python (Boto3) API Reference.
-