ยอมรับหรือยกเลิกข้อเสนอ

คุณใช้วิธีการต่อไปนี้เพื่อยอมรับหรือยกเลิกข้อเสนอสำหรับบัญชีผู้ซื้อ และลูกค้าของคุณ ได้

ยอมรับข้อเสนอ

คุณใช้ buyers.proposals.accept เพื่ออนุมัติข้อเสนอที่ระบุและดีลที่เชื่อมโยงใน proposalRevision ที่ระบุได้

ผู้ซื้อจะยอมรับข้อเสนอได้หลังจากที่ผู้เผยแพร่โฆษณายอมรับข้อเสนอแล้วเท่านั้น หากคุณยอมรับข้อเสนอก่อนผู้เผยแพร่โฆษณา buyers.proposals.accept ระบบจะแสดงข้อผิดพลาด

หากทั้ง 2 ฝ่ายยอมรับข้อเสนอ stateของข้อเสนอจะเป็น FINALIZED และดีลของข้อเสนอจะมีสิทธิ์เริ่มแสดงตามการกำหนดค่า

ตัวอย่างต่อไปนี้แสดงวิธีที่คุณยอมรับข้อเสนอด้วยเมธอด accept

REST

ส่งคำขอ

POST https://authorizedbuyersmarketplace.googleapis.com/v1/buyers/12345678/proposals/MP48576074:accept?alt=json
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

{
 "proposalRevision": "4"
}

การตอบกลับ

{
 "name": "buyers/12345678/proposals/MP49876074",
 "updateTime": "2022-03-26T04:03:19.282Z",
 "proposalRevision": "5",
 "dealType": "PROGRAMMATIC_GUARANTEED",
 "displayName": "Test PG Proposal #0ce643e9-5518-4e8e-b352-0cb45cc2eeb2",
 "state": "FINALIZED",
 "originatorRole": "BUYER",
 "publisherProfile": "buyers/12345678/publisherProfiles/PP111111",
 "buyer": "buyers/12345678",
 "buyerPrivateData": {
   "referenceId": "2f5e9550-8d22-495e-ba38-9b9496347a3b"
 },
 "billedBuyer": "buyers/12345678",
 "sellerContacts": [
   {
     "email": "jeff@hypersonicmedia.com"
   },
   {
     "email": "alex@hypersonicmedia.com"
   },
 ],
 "buyerContacts": [
   {
     "email": "testemail89319783@test.com",
     "displayName": "Joe"
   }
 ],
 "lastUpdaterOrCommentorRole": "BUYER",
 "pausingConsented": true,
 "notes": [
   {
     "createTime": "2022-03-26T04:03:19.548Z",
     "creatorRole": "BUYER",
     "note": "Test programmatic guaranteed deal proposal."
   },
   {
     "createTime": "2022-03-26T05:36:23.406Z",
     "creatorRole": "BUYER",
     "note": "Test note."
   }
 ]
}

Java

/*
 * Copyright 2022 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.api.services.samples.authorizedbuyers.marketplace.v1.buyers.proposals;

import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace;
import com.google.api.services.authorizedbuyersmarketplace.v1.model.AcceptProposalRequest;
import com.google.api.services.authorizedbuyersmarketplace.v1.model.Proposal;
import com.google.api.services.samples.authorizedbuyers.marketplace.v1.Utils;
import java.io.IOException;
import java.security.GeneralSecurityException;
import net.sourceforge.argparse4j.ArgumentParsers;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.ArgumentParserException;
import net.sourceforge.argparse4j.inf.Namespace;

/**
 * Accepts a proposal for the given account and proposal IDs.
 *
 * <p>Note that a proposal can only be accepted if it is in the BUYER_ACCEPTANCE_REQUESTED state.
 * Once both a buyer and seller have accepted a proposal, its state will change to FINALIZED.
 */
public class AcceptProposals {

  public static void execute(AuthorizedBuyersMarketplace marketplaceClient, Namespace parsedArgs) {
    Long accountId = parsedArgs.getLong("account_id");
    String proposalId = parsedArgs.getString("proposal_id");
    String name = String.format("buyers/%d/proposals/%s", accountId, proposalId);

    AcceptProposalRequest acceptProposalRequest = new AcceptProposalRequest();
    acceptProposalRequest.setProposalRevision(parsedArgs.getLong("proposal_revision"));

    Proposal proposal = null;

    try {
      proposal =
          marketplaceClient.buyers().proposals().accept(name, acceptProposalRequest).execute();
    } catch (IOException ex) {
      System.out.printf("Marketplace API returned error response:%n%s", ex);
      System.exit(1);
    }

    System.out.printf("Accepting proposal with name \"%s\":%n", name);
    Utils.printProposal(proposal);
  }

  public static void main(String[] args) {
    ArgumentParser parser =
        ArgumentParsers.newFor("AcceptProposals")
            .build()
            .defaultHelp(true)
            .description(("Accepts a proposal for the given account and proposal IDs."));
    parser
        .addArgument("-a", "--account_id")
        .help(
            "The resource ID of the buyers resource under which the proposal exists. This will "
                + "be used to construct the name used as a path parameter for the proposals.accept "
                + "request.")
        .required(true)
        .type(Long.class);
    parser
        .addArgument("-p", "--proposal_id")
        .help(
            "The resource ID of the buyers.proposals resource that is being accepted. This "
                + "will be used to construct the name used as a path parameter for the "
                + "proposals.accept request.")
        .required(true);
    parser
        .addArgument("-r", "--proposal_revision")
        .help(
            "The last known revision number of the proposal. If this is less than the "
                + "revision number stored server-side, it means that the proposal revision being "
                + "worked upon is obsolete, and an error message will be returned.")
        .required(true)
        .type(Long.class);

    Namespace parsedArgs = null;
    try {
      parsedArgs = parser.parseArgs(args);
    } catch (ArgumentParserException ex) {
      parser.handleError(ex);
      System.exit(1);
    }

    AuthorizedBuyersMarketplace client = null;
    try {
      client = Utils.getMarketplaceClient();
    } catch (IOException ex) {
      System.out.printf("Unable to create Marketplace API service:%n%s", ex);
      System.out.println("Did you specify a valid path to a service account key file?");
      System.exit(1);
    } catch (GeneralSecurityException ex) {
      System.out.printf("Unable to establish secure HttpTransport:%n%s", ex);
      System.exit(1);
    }

    execute(client, parsedArgs);
  }
}

ยกเลิกการเจรจาต่อรอง

คุณใช้เมธอด buyers.proposals.cancelNegotiation เพื่อยกเลิกการเจรจาต่อรองสำหรับข้อเสนอที่ระบุได้

หากยกเลิกข้อเสนอที่ยังไม่เคยสรุปผล ระบบจะตั้งค่า state เป็น TERMINATED และการเจรจาต่อรองกับผู้เผยแพร่โฆษณาจะสิ้นสุดลง หากคุณยกเลิกข้อเสนอ ที่มีproposalRevisionที่สรุปผลไปแล้วก่อนหน้านี้ ข้อเสนอจะเปลี่ยนกลับไปเป็นproposalRevisionที่สรุปผลล่าสุด แทนที่จะถูกสิ้นสุด

คุณยกเลิกดีลการประมูลส่วนตัวด้วย Marketplace API ไม่ได้ คุณสามารถเก็บดีลการประมูลส่วนตัวใน UI ของมาร์เก็ตเพลส Authorized Buyers

ตัวอย่างต่อไปนี้แสดงวิธียกเลิกการเจรจาสำหรับข้อเสนอ ด้วยเมธอด cancelNegotiation

REST

ส่งคำขอ

POST https://authorizedbuyersmarketplace.googleapis.com/v1/buyers/12345678/proposals/MP14138120:cancelNegotiation?alt=json
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

การตอบกลับ

{
 "name": "buyers/12345678/proposals/MP14138120",
 "updateTime": "2022-03-20T03:08:36.424Z",
 "proposalRevision": "2",
 "dealType": "PROGRAMMATIC_GUARANTEED",
 "displayName": "Test PG Proposal 3",
 "state": "TERMINATED",
 "originatorRole": "BUYER",
 "publisherProfile": "buyers/12345678/publisherProfiles/PP892146",
 "buyer": "buyers/12345678",
 "billedBuyer": "buyers/12345678",
 "sellerContacts": [
   {
     "email": "cindy@garb.com"
   }
 ],
 "buyerContacts": [
   {
     "email": "testemail2022@gmail.com"
   }
 ],
 "lastUpdaterOrCommentorRole": "BUYER",
 "notes": [
   {
     "createTime": "2022-03-20T03:08:36.424Z",
     "creatorRole": "BUYER",
     "note": "Verified that ad sizes are supported."
   }
 ]
}   

Java

/*
 * Copyright 2022 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.api.services.samples.authorizedbuyers.marketplace.v1.buyers.proposals;

import com.google.api.services.authorizedbuyersmarketplace.v1.AuthorizedBuyersMarketplace;
import com.google.api.services.authorizedbuyersmarketplace.v1.model.CancelNegotiationRequest;
import com.google.api.services.authorizedbuyersmarketplace.v1.model.Proposal;
import com.google.api.services.samples.authorizedbuyers.marketplace.v1.Utils;
import java.io.IOException;
import java.security.GeneralSecurityException;
import net.sourceforge.argparse4j.ArgumentParsers;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.ArgumentParserException;
import net.sourceforge.argparse4j.inf.Namespace;

/**
 * Cancels the ongoing negotiation for the specified proposal.
 *
 * <p>This method is not supported for proposals including private auction deals because negotiation
 * for that deal type can not be canceled. On successful cancelation, the proposal's state will be
 * set to TERMINATED.
 *
 * <p>This does not cancel or end serving for deals that have already been finalized. For finalized
 * deals that are under renegotiation, calling this method will instead reset the proposal's state
 * to FINALIZED.
 */
public class CancelNegotiationForProposals {

  public static void execute(AuthorizedBuyersMarketplace marketplaceClient, Namespace parsedArgs) {
    Long accountId = parsedArgs.getLong("account_id");
    String proposalId = parsedArgs.getString("proposal_id");
    String name = String.format("buyers/%d/proposals/%s", accountId, proposalId);

    CancelNegotiationRequest cancelNegotiationRequest = new CancelNegotiationRequest();

    Proposal proposal = null;

    try {
      proposal =
          marketplaceClient
              .buyers()
              .proposals()
              .cancelNegotiation(name, cancelNegotiationRequest)
              .execute();
    } catch (IOException ex) {
      System.out.printf("Marketplace API returned error response:%n%s", ex);
      System.exit(1);
    }

    System.out.printf("Canceling negotiation for a proposal with name \"%s\":%n", name);
    Utils.printProposal(proposal);
  }

  public static void main(String[] args) {
    ArgumentParser parser =
        ArgumentParsers.newFor("CancelNegotiationForProposals")
            .build()
            .defaultHelp(true)
            .description(
                ("Cancels negotiation for a proposal with the given account and proposal "
                    + "IDs."));
    parser
        .addArgument("-a", "--account_id")
        .help(
            "The resource ID of the buyers resource under which the proposal exists. This will "
                + "be used to construct the name used as a path parameter for the "
                + "proposals.cancelNegotiaton request.")
        .required(true)
        .type(Long.class);
    parser
        .addArgument("-p", "--proposal_id")
        .help(
            "The resource ID of the buyers.proposals resource that is being canceled. This "
                + "will be used to construct the name used as a path parameter for the "
                + "proposals.cancelNegotiation request.")
        .required(true);

    Namespace parsedArgs = null;
    try {
      parsedArgs = parser.parseArgs(args);
    } catch (ArgumentParserException ex) {
      parser.handleError(ex);
      System.exit(1);
    }

    AuthorizedBuyersMarketplace client = null;
    try {
      client = Utils.getMarketplaceClient();
    } catch (IOException ex) {
      System.out.printf("Unable to create Marketplace API service:%n%s", ex);
      System.out.println("Did you specify a valid path to a service account key file?");
      System.exit(1);
    } catch (GeneralSecurityException ex) {
      System.out.printf("Unable to establish secure HttpTransport:%n%s", ex);
      System.exit(1);
    }

    execute(client, parsedArgs);
  }
}