Покупка ETH с помощью Coinbase API

Согласно документации, я должен иметь возможность покупать ETH с помощью Coinbase API (см. Разместите заказ на покупку).

Теперь похоже, что вместо этого я получаю BTC.

private static void placeNonCommitBuy(String paymentMethod) {
    if (sAccountID != null) {
        String url = String.format("https://api.coinbase.com/v2/accounts/%s/buys", sAccountID);

        try {
            JSONObject params = new JSONObject();
            params.put("amount", "0.001");
            params.put("currency", "ETH");
            params.put("payment_method", paymentMethod);
            params.put("agree_btc_amount_varies", true);
            params.put("commit", false);
            params.put("quote", true);

            doPost(url, params, sJustPrint);
        } catch (JSONException ex) {
            Assert.fail();
        }
    }
}

Я получил это подтверждение:

{
  "data": {
    "id": <...snip...>,
    "status": "created",
    "payment_method": {
      "id": <...snip...>,
      "resource": "payment_method",
      "resource_path": <...snip...>
    },
    "transaction": null,
    "user_reference": <...snip...>,
    "created_at": "2018-01-18T01:37:15Z",
    "updated_at": "2018-01-18T01:37:16Z",
    "resource": "buy",
    "resource_path": <...snip...>,
    "fee": {
      "amount": "0.99",
      "currency": "USD"
    },
    "amount": {
      "amount": "0.00008968",
      "currency": "BTC"
    },
    "total": {
      "amount": "2.02",
      "currency": "USD"
    },
    "subtotal": {
      "amount": "1.03",
      "currency": "USD"
    },
    "committed": true,
    "payout_at": "2018-01-18T01:37:14Z",
    "instant": true,
    "requires_completion_step": false
  }
}

На веб-сайте я вижу, что теперь у меня есть немного BTC (примерно на 1 доллар США), но не ETH.

Есть ли отсутствующие / недокументированные параметры, которые мне нужно использовать? Или ошибка в моем запросе?


person Laurent Parenteau    schedule 18.01.2018    source источник
comment
Вы пробовали params.put("amount", "0.001 ETH");?   -  person Adam Kipnis    schedule 18.01.2018
comment
@AdamKipnis Хорошая идея, но не работает :(   -  person Laurent Parenteau    schedule 19.01.2018


Ответы (1)


Итак, похоже, что Coinbase API на самом деле не принимает во внимание поле currency (даже если в их документации по API это упоминается и объясняется, что оно делает).

Что происходит, так это то, что ваша транзакция будет выполняться с использованием любой валюты, связанной с учетной записью, которая была авторизована пользователем в рамках процесса Oauth. По умолчанию выбирается BTC; пользователь должен щелкнуть раскрывающийся список и выбрать что-нибудь еще.

Итак, «исправление» состоит в том, чтобы убедиться, что пользователь выбрал правильную учетную запись.

Настоящее исправление заключается в том, что Coinbase исправляет свой API и возвращает ошибку, если выбранная вами валюта не авторизована (вместо того, чтобы игнорировать это поле и использовать авторизованную валюту, не сообщая никому).

person Laurent Parenteau    schedule 19.01.2018