ARNPROXY

Beli Residential dengan saldo

POST/account/api/v1/residential/orders/create
Konfirmasikan operasi dengan sengaja

Operasi ini dapat mengubah catatan, saldo, atau pengaturan layanan. Baca cakupan dan catatan terlebih dahulu. Jika hasil tidak pasti, periksa operasi yang sama, jangan memulai yang baru.

Otorisasi

AuthorizationBearer YOUR_ARNPROXY_API_KEY
Izin yang diperlukanpurchases
Acceptapplication/json
Content-Typeapplication/json
Idempotency-Key16–100 huruf, angka, _ atau -. Simpan dan gunakan nilai yang sama untuk operasi yang sama.

Parameter

NamaTipeKeterangan
Idempotency-Key
headerWajib
string16–100 huruf/angka/_/-. Pertahankan nilai untuk operasi/status; jangan pakai lagi dengan isi berbeda.
mode
bodyWajib
stringnew membuat paket; topup menambah GB ke paket sendiri.
time_id
bodyWajib
integerID periode/paket GB dari katalog/options terkait, bukan jumlah hari/GB.
location_id
bodyBersyarat
integerWajib hanya untuk mode=new; dilarang untuk topup.
package_id
bodyBersyarat
integerWajib hanya untuk mode=topup; dilarang untuk new.
promo_code
bodyOpsional
stringPromo opsional, maksimal 100 byte. Pertahankan sama antara harga dan pembelian/perpanjangan.
Nilai bawaan: ""
currency
bodyWajib
stringTRY atau USD dari kutipan harga yang sama; harus cocok dengan mata uang akun.
expected_total_minor
bodyWajib
integertotal_minor dari harga sama sebagai integer, bukan desimal/string. Minimal 1.
expected_selection_hash
bodyWajib
stringselection_hash dari harga yang sama: 64 karakter heksadesimal kecil.
terms
bodyWajib
booleanPersetujuan harus berupa boolean JSON true, bukan string "true".

Isi permintaan

Ganti YOUR_/FROM_ dengan nilai katalog, kutipan harga, atau cakupan terkait. Persetujuan pada contoh tetap false; setujui operasi nyata secara sengaja.

request.json
{
    "mode": "topup",
    "package_id": "YOUR_PACKAGE_ID",
    "time_id": "FROM_RESIDENTIAL_CATALOG",
    "promo_code": "",
    "currency": "FROM_QUOTE",
    "expected_total_minor": "FROM_QUOTE_TOTAL_MINOR",
    "expected_selection_hash": "FROM_QUOTE_SELECTION_HASH",
    "terms": false
}

Contoh penggunaan tambahan

ID dan harga hanya contoh; gunakan nilai nyata dari katalog dan penawaran yang sama. ID JSON dan expected_total_minor harus berupa angka. Contoh sengaja memakai terms=false; kirim terms=true hanya setelah persetujuan jelas pelanggan untuk operasi berbayar.

Residential: paket baru dan penambahan GB · mode=new

Pelanggan tidak memilih tujuan penggunaan untuk pesanan Residential. Untuk paket baru, server otomatis menetapkan tujuan tetap yang sama dengan pembelian di situs; jangan kirim purpose_id, subpurpose_id, atau other_purpose. Penambahan GB mempertahankan tujuan paket yang ada.

application/json
{
    "mode": "new",
    "location_id": 20,
    "time_id": 201,
    "promo_code": "",
    "currency": "TRY",
    "expected_total_minor": 1000,
    "expected_selection_hash": "0000000000000000000000000000000000000000000000000000000000000000",
    "terms": false
}

Residential: paket baru dan penambahan GB · mode=topup

Pelanggan tidak memilih tujuan penggunaan untuk pesanan Residential. Untuk paket baru, server otomatis menetapkan tujuan tetap yang sama dengan pembelian di situs; jangan kirim purpose_id, subpurpose_id, atau other_purpose. Penambahan GB mempertahankan tujuan paket yang ada.

application/json
{
    "mode": "topup",
    "package_id": 10001,
    "time_id": 201,
    "promo_code": "",
    "currency": "TRY",
    "expected_total_minor": 1000,
    "expected_selection_hash": "0000000000000000000000000000000000000000000000000000000000000000",
    "terms": false
}

Contoh permintaan

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/residential/orders/create'

Contoh tidak dijalankan di halaman ini. Simpan kunci API dalam variabel lingkungan server, bukan URL atau kode browser. Siapkan request.json untuk contoh POST.

Respons

201Respons berhasil
application/json
{
    "ok": true,
    "data": {
        "state": "accepted",
        "mode": "topup",
        "delivery_state_at_acceptance": "queued",
        "currency": "TRY",
        "total": "15.00",
        "total_minor": 1500,
        "gb": 1,
        "days": 30,
        "target_package_id": 20001,
        "order": {
            "id": 20002,
            "number": "1000020002",
            "location_id": 20,
            "time_id": 201,
            "last_service_date": "2030-02-01"
        },
        "accepted_at": "2030-01-01T12:00:00+00:00",
        "automatic_renewal": false,
        "source": "existing_website_residential_delivery",
        "replayed": false
    },
    "meta": {
        "request_id": "000000000000000000000001",
        "phase": "public_v1",
        "source": "arnproxy_records"
    }
}
Kolom dan tipe respons
NamaTipeKeterangan
okbooleanPenanda berhasil; jika false, periksa error.code.
dataobjectHasil khusus operasi; contoh bersifat ilustratif dan sintetis.
data.statestringStatus catatan/operasi. accepted bukan terkirim; completed bukan tes koneksi.
data.modestringNilai khusus operasi untuk mode. Pertahankan tipe yang dikembalikan dan baca catatan perilaku.
data.delivery_state_at_acceptancestringNilai khusus operasi untuk delivery state at acceptance. Pertahankan tipe yang dikembalikan dan baca catatan perilaku.
data.currencystringMata uang transaksi akun: TRY atau USD.
data.totalstringNominal uang; pertahankan representasi string/integer untuk presisi.
data.total_minorintegerInteger satuan uang terkecil: 1000 berarti 10.00 TRY/USD.
data.gbintegerJumlah trafik; operasi daftar/pengaturan tidak membeli trafik.
data.daysintegerDurasi paket dalam hari, terpisah dari jumlah trafik paket GB.
data.target_package_idintegerNilai khusus operasi untuk target package id. Pertahankan tipe yang dikembalikan dan baca catatan perilaku.
data.orderobjectNilai khusus operasi untuk order. Pertahankan tipe yang dikembalikan dan baca catatan perilaku.
data.order.idintegerID catatan ARNPROXY terkait; gunakan alih-alih ID internal penyedia.
data.order.numberstringNomor pesanan tampilan; tidak sama dengan kolom yang meminta id.
data.order.location_idintegerID lokasi atau tipe produk katalog lokal.
data.order.time_idintegerID periode/paket GB lokal, bukan jumlah hari atau GB.
data.order.last_service_datestringHari layanan terakhir: saat ini, sebelumnya, atau proyeksi harga. Proyeksi tidak memperpanjang.
data.accepted_atstringStempel waktu sesuai representasi API; tanggal contoh sintetis.
data.automatic_renewalbooleanNilai khusus operasi untuk automatic renewal. Pertahankan tipe yang dikembalikan dan baca catatan perilaku.
data.sourcestringSumber data; catatan lokal dan kueri penyedia langsung merupakan bukti berbeda.
data.replayedbooleanHasil tersimpan dari operasi sama, bukan bukti debit/tindakan baru.
metaobjectMetadata korelasi permintaan dan sumber data.
meta.request_idstringID korelasi permintaan HTTP ini, bukan kunci operasi atau ID pesanan.
meta.phasestringNilai khusus operasi untuk phase. Pertahankan tipe yang dikembalikan dan baca catatan perilaku.
meta.sourcestringSumber data; catatan lokal dan kueri penyedia langsung merupakan bukti berbeda.

Respons kesalahan

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

Autentikasi dan validasi dapat menolak permintaan sebelum dijalankan. Lihat referensi kesalahan dan simpan request_id untuk dukungan. Jangan kirim kunci atau kata sandi. Kesalahan & batas →

Perilaku & catatan penting

  • ID paket/daftar adalah catatan ARNPROXY, bukan kunci penyedia. Snapshot usang tidak memberi akses; gunakan residential_package_refresh bila perlu.
  • mode=new membuat paket; mode=topup menambah GB. Gunakan residential_catalog/quote dahulu. Penerimaan saldo dan pengiriman latar terpisah; ikuti kunci operasi yang sama.
  • Timeout/5xx bukan bukti perubahan gagal. Gunakan Idempotency-Key awal untuk status. Jangan ulang dengan kunci baru; GET tidak mengirim ulang perubahan.
  • Pelanggan tidak memilih tujuan penggunaan untuk pesanan Residential. Untuk paket baru, server otomatis menetapkan tujuan tetap yang sama dengan pembelian di situs; jangan kirim purpose_id, subpurpose_id, atau other_purpose. Penambahan GB mempertahankan tujuan paket yang ada.
  • Untuk kompatibilitas, field lama subpurpose_id/other_purpose yang valid dapat diterima pada mode=new, tetapi tidak mengubah tujuan otomatis pesanan baru. Integrasi baru harus menghilangkannya. Field ini tidak didukung pada mode=topup. Periksa permintaan yang telah diterima dengan Idempotency-Key dan permintaan yang sama; jangan membeli ulang dengan kunci baru.
  • Jika konfigurasi tujuan otomatis tidak tersedia, respons RESIDENTIAL_DEFAULT_PURPOSE_UNAVAILABLE (HTTP 503) dikembalikan tanpa membuat pesanan atau memotong saldo. Administrator harus memeriksa konfigurasinya.
Lacak operasi yang samaStatus pengiriman Residential →

Cari dalam bahasa saat ini. Tutup dengan Esc