# 決済 金額変更

`PUT /v1/payments/{id}/change`

- operationId: `changeAmountOfPayment`
- tags: 決済

決済の利用金額を変更します。\
既に売上確定となっている決済は請求金額が変更され、仮売上となっている決済は確保している与信枠の金額が変更されます。


## コードサンプル

### cURL

```bash
curl \
    -X PUT \
    -H "Authorization:Bearer <Secret API Key>" \
    -H "Content-Type: application/json" \
    -d '{
    "pay_type": "Card",
    "access_id": "<Access ID>",
    "job_code": "CAPTURE",
    "amount": "1500"
}' \
'https://api.test.fincode.jp/v1/payments/{id}/change'
```

### Node.js

```javascript
import { createFincode } from "@fincode/node";

const API_KEY = "<Secret API Key>";

(async () => {
    const fincode = createFincode({ apiKey: API_KEY, isLiveMode: false });

    const orderId = "<Order ID>";
    const accessID = "<Access ID>";

    try {
        // リクエストの送信
        const payment = await fincode.payments.changeAmount(orderId, {
            pay_type: "Card",
            access_id: accessID,
            job_code: "CAPTURE",
            amount: "1200",
        });
    } catch (e) {
        // エラーの処理
    }
})();
```

### Go

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"log"
	"net/http"
)

func main() {

	apiKey := "<Secret API Key>"

	orderID := "<Order ID>"

	body := ChangingAmountRequest{
		PayType:  "Card",
		AccessID: "<Access ID>",
		JobCode:  "1",
	}

	marshalledBody, _ := json.Marshal(body)

	// リクエストの作成
	req, _ := http.NewRequest(
		"PUT",
		fmt.Sprintf("https://api.test.fincode.jp/v1/payments/%s/change", orderID),
		bytes.NewBuffer(marshalledBody),
	)
	req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", apiKey))
	req.Header.Set("Content-Type", "application/json")

	// リクエストの送信
	client := &http.Client{}
	res, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer res.Body.Close()

}

type ChangingAmountRequest struct {
	PayType  string `json:"pay_type"`
	AccessID string `json:"access_id"`
	JobCode  string `json:"job_code"`
}
```

### PHP

```php
<?php

$apiKey = '<Secret API Key>';

$orderId = '<Order ID>';

$baseUrl = "https://api.test.fincode.jp";
$endpoint = "/v1/payments/{$orderId}/change";
$headers = [
    "Authorization: Bearer " . $apiKey,
    "Content-Type: application/json"
];

$data = json_encode([
    "pay_type" => "<Pay Type>",
    "access_id" => "<Access ID>",
    "job_code" => "CAPTURE",
    "amount" => "1000",
]);

$session = curl_init();
curl_setopt($session, CURLOPT_URL, $baseUrl . $endpoint);
curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
curl_setopt($session, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($session, CURLOPT_POSTFIELDS, $data);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($session, CURLOPT_SSL_VERIFYPEER, );
// curl_setopt($session, CURLOPT_SSL_VERIFYHOST, );

$response = curl_exec($session);

if ($response === false) {
    # エラー処理
    echo "cURL Error: " . curl_error($session);
} else {
    # APIからのデータを処理
    var_dump($response);
}

curl_close($session);
```

### Python 3

```python
import requests

api_key = '<Secret API Key>'

order_id = '<Order ID>'

url = f'https://api.test.fincode.jp/v1/payments/{order_id}/change'

# ヘッダーを設定
headers = {
    'Authorization': f'Bearer {api_key}',
    'Content-Type': 'application/json'
}

data = {
    "pay_type": "Card",
    "access_id": "<Access ID>",
    "job_code": "CAPTURE",
    "amount": "1500"
}

# HTTP POSTリクエストの送信
try:
    response = requests.put(url, headers=headers, json=data)

    # レスポンスの処理
    if response.status_code == 200:
        # 成功した場合の処理
        print(f"Success: {response.json()}")
    else:
        # エラーの処理
        print(f"Error: {response.json()}")
except requests.RequestException as e:
    # 通信エラーの処理
    print(f"Request error: {e}")
```

### Ruby

```ruby
require 'net/http'
require 'uri'
require 'json'


API_KEY = '<Secret API Key>'
BASE_URL = 'https://api.test.fincode.jp'

def main
    order_id = '<Order ID>'
    endpoint = "/v1/payments/#{order_id}/change"
    
    uri = URI.parse(BASE_URL + endpoint)

    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true

    data = {
        pay_type: "Card",
        access_id: "<Access ID>",
        job_code: "CAPTURE",
        amount: "1500"
    }

    # リクエストの作成
    request = Net::HTTP::Put.new(uri.request_uri)
    request['Authorization'] = "Bearer #{API_KEY}"
    request['Content-Type'] = 'application/json'

    request.body = data.to_json

    # リクエストの送信
    response = http.request(request)

    case response
    when Net::HTTPSuccess
        puts 'SUCCESS'
    else
        puts 'ERROR'
    end

    # レスポンスの表示
    puts response.body
end

main
```

## パラメータ

| 名前 | 位置 | 必須 | 型 | 説明 |
| --- | --- | --- | --- | --- |
| `Tenant-Shop-Id` | header |  | schema | <span class="smallText color--red-400">※ プラットフォームのメインショップのみ指定可</span> |
| `id` | path | ✓ | OrderId_schema | オーダーID（決済情報のID） |

## リクエストボディ

Content-Type: `application/json`

#### カード決済

| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `pay_type` | PayType | ✓ | 決済種別 |
| `access_id` | access_id | ✓ |  |
| `amount` | amount | ✓ | 利用金額 |
| `tax` | tax |  | 税送料 |
| `job_code` | enum(AUTH | CAPTURE) | ✓ | 取引種別 |

#### Google Pay

| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `pay_type` | PayType | ✓ | 決済種別 |
| `access_id` | access_id | ✓ |  |
| `amount` | amount | ✓ | 利用金額 |
| `tax` | tax |  | 税送料 |
| `job_code` | enum(AUTH | CAPTURE) | ✓ | 取引種別 |

#### PayPay

| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `pay_type` | PayType | ✓ | 決済種別 |
| `access_id` | access_id | ✓ |  |
| `amount` | amount | ✓ | 利用金額 |
| `tax` | tax |  | 税送料 |
| `update_description` | update_description |  |  |

#### 口座振替

| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `pay_type` | PayType | ✓ | 決済種別 |
| `access_id` | access_id | ✓ |  |
| `amount` | amount | ✓ | 利用金額 |
| `tax` | tax |  | 税送料 |

## レスポンス

### 200 リクエストに成功

##### カード決済

| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `shop_id` | Shop_properties-id |  |  |
| `id` | string |  | オーダーID |
| `access_id` | string |  | 取引ID |
| `amount` | integer |  | 利用金額 |
| `tax` | integer |  | 税送料 |
| `total_amount` | integer(int64) |  | 合計金額 |
| `client_field_1` | client_field_n |  | 加盟店自由項目 1 |
| `client_field_2` | client_field_n |  | 加盟店自由項目 2 |
| `client_field_3` | client_field_n |  | 加盟店自由項目 3 |
| `process_date` | string |  | 決済 処理日時 |
| `customer_id` | id |  | 顧客ID |
| `customer_group_id` | string |  | 顧客情報共有グループID |
| `error_code` | error_code |  | この決済において発生したエラーのうち、一番最新のエラーのエラーコードです。 |
| `bill_id` | string |  | 請求ID |
| `created` | created |  |  |
| `updated` | updated |  |  |
| `pay_type` | PayType |  | 決済種別 |
| `job_code` | enum(CHECK | AUTH | CAPTURE | CANCEL) |  | 取引種別 |
| `status` | PaymentStatus |  | 決済ステータス |
| `card_id` | properties-id |  | カードID |
| `brand` | CardBrand |  |  |
| `card_no` | card_no |  |  |
| `expire` | expire |  |  |
| `holder_name` | holder_name |  |  |
| `card_no_hash` | card_no_hash |  |  |
| `method` | CardPayMethod |  |  |
| `pay_times` | CardPayTimesResponse |  |  |
| `bulk_payment_id` | PaymentBulk_properties-id |  | 一括決済ID |
| `subscription_id` | Subscription_properties-id |  | サブスクリプションID |
| `tds_type` | tds_type |  |  |
| `tds2_type` | tds2_type |  |  |
| `tds2_ret_url` | tds2_ret_url |  |  |
| `return_url` | x-req-properties-return_url |  |  |
| `return_url_on_failure` | x-req-properties-return_url_on_failure |  |  |
| `tds2_status` | ThreeDSecure2Status |  |  |
| `merchant_name` | td_tenant_name |  |  |
| `forward` | string |  | 仕向け先 |
| `issuer` | string |  | イシュア |
| `transaction_id` | string |  | トランザクションID |
| `approve` | string |  | 承認番号 |
| `auth_max_date` | string |  | 仮売上有効期限 |
| `item_code` | string |  | 商品コード |
| `send_url` | string |  | ※ 閉塞機能 |
| `acs` | string |  | ※ 閉塞機能 |

##### Google Pay

| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `shop_id` | Shop_properties-id |  |  |
| `id` | string |  | オーダーID |
| `access_id` | string |  | 取引ID |
| `amount` | integer |  | 利用金額 |
| `tax` | integer |  | 税送料 |
| `total_amount` | integer(int64) |  | 合計金額 |
| `client_field_1` | client_field_n |  | 加盟店自由項目 1 |
| `client_field_2` | client_field_n |  | 加盟店自由項目 2 |
| `client_field_3` | client_field_n |  | 加盟店自由項目 3 |
| `process_date` | string |  | 決済 処理日時 |
| `customer_id` | id |  | 顧客ID |
| `customer_group_id` | string |  | 顧客情報共有グループID |
| `error_code` | error_code |  | この決済において発生したエラーのうち、一番最新のエラーのエラーコードです。 |
| `bill_id` | string |  | 請求ID |
| `created` | created |  |  |
| `updated` | updated |  |  |
| `pay_type` | PayType |  | 決済種別 |
| `job_code` | enum(AUTH | CAPTURE | CANCEL) |  | 取引種別 |
| `status` | PaymentStatus |  | 決済ステータス |
| `brand` | GooglePayCardBrand |  |  |
| `card_no` | card_no |  | マスク済みカード番号。 |
| `expire` | expire |  |  |
| `card_no_hash` | card_no_hash |  |  |
| `method` | CardPayMethod |  |  |
| `pay_times` | CardPayTimesResponse |  |  |
| `tds_type` | tds_type |  |  |
| `tds2_type` | tds2_type |  |  |
| `tds2_ret_url` | tds2_ret_url |  |  |
| `tds2_status` | ThreeDSecure2Status |  |  |
| `merchant_name` | td_tenant_name |  |  |
| `forward` | string |  | 仕向け先 |
| `issuer` | string |  | イシュア |
| `transaction_id` | string |  | トランザクションID |
| `approve` | string |  | 承認番号 |
| `auth_max_date` | string |  | 仮売上有効期限 |
| `acs` | string |  |  |
| `item_code` | string |  | 商品コード |
| `return_url` | x-req-properties-return_url |  |  |
| `return_url_on_failure` | x-req-properties-return_url_on_failure |  |  |

##### PayPay

| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `shop_id` | Shop_properties-id |  |  |
| `id` | string |  | オーダーID |
| `access_id` | string |  | 取引ID |
| `amount` | integer |  | 利用金額 |
| `tax` | integer |  | 税送料 |
| `total_amount` | integer(int64) |  | 合計金額 |
| `client_field_1` | client_field_n |  | 加盟店自由項目 1 |
| `client_field_2` | client_field_n |  | 加盟店自由項目 2 |
| `client_field_3` | client_field_n |  | 加盟店自由項目 3 |
| `process_date` | string |  | 決済 処理日時 |
| `customer_id` | id |  | 顧客ID |
| `customer_group_id` | string |  | 顧客情報共有グループID |
| `error_code` | error_code |  | この決済において発生したエラーのうち、一番最新のエラーのエラーコードです。 |
| `bill_id` | string |  | 請求ID |
| `created` | created |  |  |
| `updated` | updated |  |  |
| `pay_type` | PayType |  | 決済種別 |
| `job_code` | enum(AUTH | CAPTURE | CANCEL) |  | 取引種別 |
| `status` | PaymentStatus |  | 決済ステータス |
| `code_url` | string |  | PayPay支払いURL |
| `code_expiry_date` | string |  | 支払期限 |
| `redirect_url` | string |  | リダイレクトURL |
| `redirect_type` | enum(1 | 2) |  | リダイレクト先種別 |
| `auth_max_date` | string |  | 仮売上期限 |
| `order_description` | string |  | 注文内容の説明 |
| `capture_description` | string |  | 売上確定の説明 |
| `update_description` | string |  | 金額変更の説明 |
| `cancel_description` | string |  | キャンセルの説明 |
| `store_id` | string |  | 店舗ID |
| `code_id` | string |  | PayPayの支払いコードID |
| `payment_id` | string |  | PayPay 決済ID |
| `paypay_result_code` | string |  | PayPay処理結果コード |
| `merchant_payment_id` | string |  | PayPay トランザクションID |
| `merchant_capture_id` | string |  | PayPay 売上確定ID |
| `merchant_update_id` | string |  | PayPay 金額変更ID |
| `merchant_revert_id` | string |  | PayPay キャンセルID |
| `merchant_refund_id` | string |  | PayPay 返金ID |
| `payment_date` | string |  | 支払日時 |

##### 口座振替

| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `shop_id` | Shop_properties-id |  |  |
| `id` | string |  | オーダーID |
| `access_id` | string |  | 取引ID |
| `amount` | integer |  | 利用金額 |
| `tax` | integer |  | 税送料 |
| `total_amount` | integer(int64) |  | 合計金額 |
| `client_field_1` | client_field_n |  | 加盟店自由項目 1 |
| `client_field_2` | client_field_n |  | 加盟店自由項目 2 |
| `client_field_3` | client_field_n |  | 加盟店自由項目 3 |
| `process_date` | string |  | 決済 処理日時 |
| `customer_id` | id |  | 顧客ID |
| `customer_group_id` | string |  | 顧客情報共有グループID |
| `error_code` | error_code |  | この決済において発生したエラーのうち、一番最新のエラーのエラーコードです。 |
| `bill_id` | string |  | 請求ID |
| `created` | created |  |  |
| `updated` | updated |  |  |
| `pay_type` | PayType |  | 決済種別 |
| `status` | PaymentStatus |  | 決済ステータス |
| `result_code` | DirectDebitResultCode |  |  |
| `target_date` | string |  | 振替指定日 |
| `withdrawal_date` | string |  | 引き落とし日 |
| `request_accept_end_date` | string |  | 請求依頼受付期間 終了日 |
| `transfer_return_date` | string |  | 請求結果反映 予定日 |
| `payment_method_id` | string |  | 決済手段ID |
| `bank_code` | string |  | 金融機関コード |
| `bank_name` | string |  | 金融機関名 |
| `branch_code` | string |  | 支店コード |
| `branch_name` | string |  | 支店名 |
| `remarks` | string |  | ご利用明細表示内容 |
| `subscription_id` | Subscription_properties-id |  | サブスクリプションID |
| `settlement_route` | DirectDebitSettlementRoute |  |  |

##### 銀行振込（指定口座）

| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `shop_id` | string |  | ショップID |
| `id` | string |  | オーダーID |
| `pay_type` | enum(Payeeaccount) |  | 決済種別 |
| `status` | enum(UNPROCESSED | AWAITING_PAYMENT_APPROVAL | CAPTURED | CANCELED) |  | 決済ステータス |
| `access_id` | string |  | 取引ID |
| `process_date` | string(date-time) |  | 処理日時 形式：`yyyy/MM/dd HH:mm:ss.SSS` |
| `billing_amount` | string |  | 請求金額 |
| `billing_tax` | string |  | 請求税送料 |
| `billing_total_amount` | string |  | 請求合計金額 |
| `customer_group_id` | string |  | 顧客情報共有グループID |
| `customer_id` | string |  | 顧客ID |
| `payment_term_day` | integer |  | 支払期限日数 |
| `payment_term` | string |  | 支払期限 |
| `payment_method_id` | string |  | ショップ決済手段ID（入金口座） |
| `bank_code` | string |  | 金融機関コード |
| `bank_name` | string |  | 金融機関名 |
| `branch_code` | string |  | 支店コード |
| `branch_name` | string |  | 支店名 |
| `account_number` | string |  | 口座番号 |
| `account_name` | string |  | 口座名義人名 |
| `transaction_date` | string |  | 取引日 形式：`yyyy/MM/dd` |
| `amount` | string |  | 利用金額（入金額） |
| `expire_overpayment_flag` | enum(0 | 1) |  | 期限後支払フラグ |
| `bill_id` | string |  | 請求ID |
| `invoice_id` | string |  | インボイスID |
| `error_code` | string |  | エラーコード |
| `client_field_1` | string |  | 加盟店向け自由項目 1 |
| `client_field_2` | string |  | 加盟店向け自由項目 2 |
| `client_field_3` | string |  | 加盟店向け自由項目 3 |
| `created` | string(date-time) |  | 作成日時 形式：`yyyy/MM/dd HH:mm:ss.SSS` |
| `updated` | string(date-time) |  | 更新日時 形式：`yyyy/MM/dd HH:mm:ss.SSS` |

### 400 不正なリクエスト

| パラメータ | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `errors` | array<FincodeAPIError> |  |  |

