ARNPROXY

Bakiyeden satın alma; gerçek ücret

POST/account/api/v1/orders/create
İşlemi bilinçli olarak onaylayın

Bu işlem kayıt, bakiye veya hizmet ayarını değiştirebilir. Önce kapsamı ve notları okuyun. Sonuç belirsizse yeni işlem başlatmak yerine aynı işlemi sorgulayın.

Yetkilendirme

AuthorizationBearer YOUR_ARNPROXY_API_KEY
Gerekli izinpurchases
Acceptapplication/json
Content-Typeapplication/json
Idempotency-Key16–100 harf, rakam, _ veya -. Aynı işlem için değeri saklayıp tekrar kullanın.

Parametreler

AdTürAçıklama
Idempotency-Key
headerZorunlu
string16–100 harf/rakam/_/-. Aynı işlem ve durum sorgusunda aynı değer; farklı gövdeyle yeniden kullanmayın.
product_id
bodyZorunlu
integerproducts yanıtındaki ürün ID’si; 1–2147483647.
lines
bodyZorunlu
object[]1–20 farklı ülke satırı; aynı proxy türü. Aynı location_id tekrar edemez; toplam adet en fazla 100000.
lines[].location_id
bodyZorunlu
integerÜrüne ait katalogdan ülke ID’si.
lines[].time_id
bodyZorunlu
integerO ülkenin katalogdaki süre ID’si.
lines[].quantity
bodyZorunlu
integer1–100000; ürünün minimum_quantity koşulu ayrıca geçerli.
lines[].purpose_id
bodyZorunlu
integerMevcut müşteri akışında 201 gönderin.
lines[].subpurpose_id
bodyZorunlu
integer201’e bağlı aktif alt kullanım amacı ID’si; Diğer için -1.
lines[].other_purpose
bodyKoşula bağlı
stringsubpurpose_id=-1 ise 1–30 UTF-8 karakter; diğer seçimlerde uygulanmaz.
currency
bodyZorunlu
stringAynı fiyat yanıtındaki TRY veya USD. Hesabın para birimiyle eşleşmeli.
expected_total_minor
bodyZorunlu
integerAynı fiyat yanıtındaki total_minor; küsuratlı tutar veya metin göndermeyin. 1–999999999999.
terms
bodyZorunlu
booleanGerçek işlem onayı için tam olarak true; "true" metni kabul edilmez.
promo_code
bodyİsteğe bağlı
stringİsteğe bağlı promosyon; en fazla 100 bayt. Fiyat ve satın alma/uzatma isteğinde aynı değeri koruyun.
Varsayılan: ""
auth
bodyİsteğe bağlı
objectTeslimat yetkilendirmesi; varsayılan {"mode":"username_password"}. Mevcut ana login yönetimini API’ye açmaz.
auth.mode
bodyKoşula bağlı
stringauth nesnesi gönderilirse zorunlu: username_password veya ip. Kullanıcı adı/şifre bu nesnede belirlenmez.
auth.ip
bodyKoşula bağlı
stringYalnız auth.mode=ip olduğunda zorunlu IPv4; username_password ile göndermeyin.

İstek gövdesi

YOUR_/FROM_ alanlarını ilgili katalog, fiyat veya kapsam değerleriyle değiştirin. Örneklerde onay false bırakılır; gerçek işlemi yalnız bilinçli olarak onaylayın.

request.json
{
    "product_id": "FROM_PRODUCTS",
    "lines": [
        {
            "location_id": "FROM_CATALOG",
            "time_id": "FROM_CATALOG",
            "quantity": 1,
            "purpose_id": 201,
            "subpurpose_id": "FROM_CATALOG_CHILDREN"
        }
    ],
    "currency": "FROM_QUOTE",
    "expected_total_minor": "FROM_QUOTE_TOTAL_MINOR",
    "promo_code": "",
    "terms": false
}

Ek kullanım örnekleri

Kimlik ve fiyatlar temsilidir; gerçek değerleri katalog ve aynı fiyat yanıtından alın. JSON kimlikleri ve expected_total_minor sayısal olmalıdır. Güvenlik için örneklerde terms=false bırakılmıştır; gerçek ücretli işlem ancak açık müşteri onayıyla terms=true gönderildiğinde başlatılmalıdır.

Aynı türde iki ülkeden sipariş

Tek product_id içinde en fazla 20 farklı location_id kullanılabilir. Her ülke ayrı sipariş kaydı olur; bağlı alışveriş tek faturada işlenir. Adet indirimi her ülkenin kendi adedine göre hesaplanır.

application/json
{
    "product_id": 5,
    "lines": [
        {
            "location_id": 10,
            "time_id": 101,
            "quantity": 1,
            "purpose_id": 201,
            "subpurpose_id": 202
        },
        {
            "location_id": 11,
            "time_id": 102,
            "quantity": 1,
            "purpose_id": 201,
            "subpurpose_id": 202
        }
    ],
    "currency": "TRY",
    "expected_total_minor": 2000,
    "promo_code": "",
    "terms": false
}

“Diğer” kullanım amacı

“Diğer” seçilirse subpurpose_id=-1 ve 1–30 karakterlik other_purpose gönderin. Diğer seçimlerde other_purpose gerekmez. purpose_id yine 201’dir.

application/json
{
    "product_id": 5,
    "lines": [
        {
            "location_id": 10,
            "time_id": 101,
            "quantity": 1,
            "purpose_id": 201,
            "subpurpose_id": -1,
            "other_purpose": "Custom purpose"
        }
    ],
    "currency": "TRY",
    "expected_total_minor": 1000,
    "promo_code": "",
    "terms": false
}

İstek örneği

cURL
printf 'Authorization: Bearer %s\n' "$ARNPROXY_API_KEY" |
  curl --silent --show-error --header @- \
    --header 'Accept: application/json' \
    --connect-timeout 10 --max-time 30 \
    --header 'Idempotency-Key: YOUR_SAVED_OPERATION_KEY' \
    --request POST --header 'Content-Type: application/json' \
    --data-binary @request.json \
    'https://www.arnproxy.com/account/api/v1/orders/create'

Örnekler bu sayfada çalıştırılmaz. API anahtarını sunucu ortam değişkeninde tutun; gerçek anahtarı URL veya tarayıcı koduna yazmayın. POST örnekleri için request.json hazırlayın.

Yanıtlar

201Başarılı yanıt
application/json
{
    "ok": true,
    "data": {
        "state": "accepted",
        "delivery_state_at_acceptance": "queued",
        "currency": "TRY",
        "total": "10.00",
        "total_minor": 1000,
        "checkout_group_id": null,
        "orders": [
            {
                "id": 10001,
                "number": "1000010001",
                "location_id": 10,
                "time_id": 101,
                "quantity": 1,
                "total": "10.00"
            }
        ],
        "accepted_at": "2030-01-01T12:00:00+00:00",
        "automatic_renewal": false,
        "replayed": false
    },
    "meta": {
        "request_id": "000000000000000000000001",
        "phase": "public_v1",
        "source": "arnproxy_records"
    }
}
Yanıt alanları ve türleri
AdTürAçıklama
okbooleanBaşarılı istek zarfı; false ise error.code alanını okuyun.
dataobjectİşleme özel sonuç. Örnekler temsili ve sentetiktir.
data.statestringBu kaydın/işlemin durumu. accepted teslimat, completed bağlantı testi anlamına gelmez.
data.delivery_state_at_acceptancestringdelivery state at acceptance alanının işleme özel değeri; örnekteki türü ve ilgili davranış notlarını esas alın.
data.currencystringHesabın işlem para birimi: TRY veya USD.
data.totalstringPara tutarı; hassasiyet için yanıtın metin/tam sayı türünü koruyun.
data.total_minorintegerEn küçük para biriminde tam sayı: 1000 = 10.00 TRY/USD.
data.checkout_group_idinteger|nullcheckout group id alanının işleme özel değeri; örnekteki türü ve ilgili davranış notlarını esas alın.
data.ordersarrayorders alanının işleme özel değeri; örnekteki türü ve ilgili davranış notlarını esas alın.
data.orders[]objectorders alanının işleme özel değeri; örnekteki türü ve ilgili davranış notlarını esas alın.
data.orders[].idintegerİlgili ARNPROXY kayıt kimliği. Sağlayıcının iç kimliği yerine bunu kullanın.
data.orders[].numberstringGörünen sipariş numarası; API’de id isteyen alanlarla karıştırmayın.
data.orders[].location_idintegerYerel katalogdaki lokasyon veya ürün türü kimliği.
data.orders[].time_idintegerSüre/GB planının yerel kayıt kimliği; gün veya GB sayısı değildir.
data.orders[].quantityintegerSeçilen veya sipariş edilen proxy adedi.
data.orders[].totalstringPara tutarı; hassasiyet için yanıtın metin/tam sayı türünü koruyun.
data.accepted_atstringKodun döndürdüğü zaman değeri; örnekte sentetik tarih kullanılır.
data.automatic_renewalbooleanautomatic renewal alanının işleme özel değeri; örnekteki türü ve ilgili davranış notlarını esas alın.
data.replayedbooleanAynı işlem kimliğinin kayıtlı sonucu döndü; tek başına yeni ücret/işlem anlamına gelmez.
metaobjectİstek izleme ve veri kaynağı bilgileri.
meta.request_idstringBu HTTP isteğinin kimliği; işlem anahtarı veya sipariş ID’si değildir.
meta.phasestringphase alanının işleme özel değeri; örnekteki türü ve ilgili davranış notlarını esas alın.
meta.sourcestringBu alanın veri kaynağı; yerel kayıt ile canlı sağlayıcı okuması aynı şey değildir.

Hata yanıtı

HTTP 401 · INVALID_API_KEY
{
  "ok": false,
  "error": { "code": "INVALID_API_KEY" },
  "meta": { "request_id": "000000000000000000000001" }
}

Kimlik doğrulama ve alan denetimleri işlemi başlamadan reddedebilir. Hata rehberini inceleyin; destek için request_id saklayın. Anahtar veya şifre göndermeyin. Hatalar ve limitler →

Davranış ve önemli notlar

  • Tüm kimlikleri products/catalog yanıtından alın. quote satırları yalnız location_id, time_id ve quantity içerir. purchase satırında purpose_id=201 ve seçilen subpurpose_id ayrıca zorunludur.
  • Birden fazla ülke ayrı siparişler ve tek çok satırlı fatura oluşturur. İndirim ülke bazındadır. accepted teslim edildi anlamına gelmez; order_delivery ve order_proxies ile takip edin.
  • Yazma sonucunda zaman aşımı/5xx, başarısızlık kanıtı değildir. Aynı Idempotency-Key ile durum sorgusunu kullanın. Yeni anahtarla tekrar başlatmayın; GET değişikliği tekrar göndermez.
  • Normal siparişte iki ayrı seçim yaptırmayın. catalog.purposes içinden id=201 kaydını bulun ve yalnız onun children seçeneklerini gösterin. purchase isteğinde purpose_id sayısal 201 olarak sabittir; subpurpose_id müşterinin seçtiği alt seçeneğin ID’sidir. Katalogdaki üst/alt yapı eski entegrasyonlarla uyumluluk için korunur.
  • “Diğer” seçilirse subpurpose_id=-1 ve 1–30 karakterlik other_purpose gönderin. Diğer seçimlerde other_purpose gerekmez. purpose_id yine 201’dir.
  • Tek product_id içinde en fazla 20 farklı location_id kullanılabilir. Her ülke ayrı sipariş kaydı olur; bağlı alışveriş tek faturada işlenir. Adet indirimi her ülkenin kendi adedine göre hesaplanır.
Aynı işlemi takip edinKaydedilmiş satın alma sonucu →

Geçerli dilde arar. Kapatmak için Esc