<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="content_v2.html">Content API for Shopping</a> . <a href="content_v2.orderpayments.html">orderpayments</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#notifyauthapproved">notifyauthapproved(merchantId, orderId, body)</a></code></p>
<p class="firstline">Notify about successfully authorizing user's payment method for a given amount.</p>
<p class="toc_element">
  <code><a href="#notifyauthdeclined">notifyauthdeclined(merchantId, orderId, body)</a></code></p>
<p class="firstline">Notify about failure to authorize user's payment method.</p>
<p class="toc_element">
  <code><a href="#notifycharge">notifycharge(merchantId, orderId, body)</a></code></p>
<p class="firstline">Notify about charge on user's selected payments method.</p>
<p class="toc_element">
  <code><a href="#notifyrefund">notifyrefund(merchantId, orderId, body)</a></code></p>
<p class="firstline">Notify about refund on user's selected payments method.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="notifyauthapproved">notifyauthapproved(merchantId, orderId, body)</code>
  <pre>Notify about successfully authorizing user's payment method for a given amount.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order for for which payment authorization is happening. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "authAmountTax": { # Authorized amount for tax charge on user's credit card.
      "currency": "A String", # The currency of the price.
      "value": "A String", # The price represented as a number.
    },
    "authAmountPretax": { # Authorized amount for pre-tax charge on user's credit card.
      "currency": "A String", # The currency of the price.
      "value": "A String", # The price represented as a number.
    },
  }


Returns:
  An object of the form:

    {
    "kind": "content#orderpaymentsNotifyAuthApprovedResponse", # Identifies what kind of resource this is. Value: the fixed string "content#orderpaymentsNotifyAuthApprovedResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="notifyauthdeclined">notifyauthdeclined(merchantId, orderId, body)</code>
  <pre>Notify about failure to authorize user's payment method.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order for which payment authorization was declined. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "declineReason": "A String", # Reason why payment authorization was declined.
  }


Returns:
  An object of the form:

    {
    "kind": "content#orderpaymentsNotifyAuthDeclinedResponse", # Identifies what kind of resource this is. Value: the fixed string "content#orderpaymentsNotifyAuthDeclinedResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="notifycharge">notifycharge(merchantId, orderId, body)</code>
  <pre>Notify about charge on user's selected payments method.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order for which charge is happening. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "chargeState": "A String", # Whether charge was successful.
    "invoiceId": "A String", # Deprecated. Please use invoiceIds instead.
    "invoiceIds": [ # Invoice IDs from the orderinvoices service that correspond to the charge.
      "A String",
    ],
  }


Returns:
  An object of the form:

    {
    "kind": "content#orderpaymentsNotifyChargeResponse", # Identifies what kind of resource this is. Value: the fixed string "content#orderpaymentsNotifyChargeResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

<div class="method">
    <code class="details" id="notifyrefund">notifyrefund(merchantId, orderId, body)</code>
  <pre>Notify about refund on user's selected payments method.

Args:
  merchantId: string, The ID of the account that manages the order. This cannot be a multi-client account. (required)
  orderId: string, The ID of the order for which charge is happening. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "invoiceId": "A String", # Deprecated. Please use invoiceIds instead.
    "refundState": "A String", # Whether refund was successful.
    "invoiceIds": [ # Invoice IDs from the orderinvoices service that correspond to the refund.
      "A String",
    ],
  }


Returns:
  An object of the form:

    {
    "kind": "content#orderpaymentsNotifyRefundResponse", # Identifies what kind of resource this is. Value: the fixed string "content#orderpaymentsNotifyRefundResponse".
    "executionStatus": "A String", # The status of the execution.
  }</pre>
</div>

</body></html>