Skip to content

Bulk Cash In

Bulk Cash In

Kirim sekumpulan instruksi cash-in; hasil settlement datang sebagai notifikasi masuk, bukan response sinkron.

resp, err := transfercredit.SubmitBulkCashIn(ctx, transport, hb, transfercredit.SubmitBulkCashInRequest{
	TransactionDate: "2026-09-14T10:00:00+07:00",
})
if err != nil {
	// errors.Is(err, snap.ErrBadRequest), snap.ErrUnauthorized, etc.
}

SubmitBulkCashIn

Memanggil endpoint SNAP Submit Bulk Cash In (Service Code 40, path …/{version}/emoney/bulk-cashin-payment). hb harus sudah membawa setiap field yang dibutuhkan snap.HeaderBuilder kecuali Body, yang diatur sendiri oleh SubmitBulkCashIn agar byte hasil marshal yang sama persis dipakai untuk signing dan wire body.

Tidak idempotent dan package ini tidak melakukan retry. Bila memanggil ulang setelah gagal/timeout, gunakan X-EXTERNAL-ID yang sama — deteksi duplikat di server mengacu pada header ini.

func SubmitBulkCashIn(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req SubmitBulkCashInRequest) (SubmitBulkCashInResponse, error)

Request — SubmitBulkCashInRequest

TransactionDate satu-satunya field wajib di level atas.

FieldTypePresence
partnerBulkIdstringOpsional
transactionDatestringWajib
currencystringOpsional
bulkObject[]BulkCashInItemOpsional
feeTypestringOpsional
additionalInfojson.RawMessageOpsional
Field BulkCashInItem

Satu entri dalam array bulkObject[] pada request Submit Bulk Cash In. AccountNumber dan PartnerReferenceNo wajib.

FieldTypePresence
accountNumberstringWajib
accountNamestringOpsional
amount*snap.MoneyOpsional
partnerReferenceNostringWajib
additionalInfojson.RawMessageOpsional

Response — SubmitBulkCashInResponse

Perhatikan field-nya bulkid (huruf d kecil) — kemungkinan salah ketik di standar, tapi package ini mengikuti casing yang terdokumentasi apa adanya karena tidak ada contoh yang mengoreksinya. Response Notify Bulk Cash In di bawah memakai camelCase normal bulkId.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
bulkidstringWajib
partnerBulkIdstringOpsional

Notify Bulk Cash In

Hanya masuk (inbound) — package ini tidak memanggil endpoint untuk ini. Partner/switcher yang POST ke callback URL Anda; unmarshal body ke NotifyBulkCashInRequest setelah memverifikasinya dengan snap.ServerVerifier (lihat Verifying inbound requests), lalu balas dengan bentuk di bawah.

Diterima — NotifyBulkCashInRequest

Ini adalah callback settlement yang diterima PJP, bukan panggilan dari package ini — buat HTTP handler sendiri untuk path ini, autentikasi dengan ServerVerifier.VerifyTransactionRequest, lalu json.Unmarshal body ke tipe ini. BulkID dan PartnerBulkID wajib.

FieldTypePresence
bulkIdstringWajib
partnerBulkIdstringWajib
bulkObject[]BulkCashInNotificationItemWajib
Field BulkCashInNotificationItem

Satu entri dalam array bulkObject[] notifikasi ini — bentuk hasil settlement, berbeda dari bentuk instruksi transfer BulkCashInItem. CustomerNumber, ReferenceNo, PartnerReferenceNo, ResponseCode, dan ResponseMessage semuanya wajib.

FieldTypePresence
customerNumberstringWajib
customerNamestringOpsional
amount*snap.MoneyOpsional
referenceNostringWajib
partnerReferenceNostringWajib
responseCodestringWajib
responseMessagestringWajib
additionalInfojson.RawMessageOpsional

Handler Anda membalas dengan — NotifyBulkCashInResponse

BulkID dan PartnerBulkID wajib. Field bulkId-nya camelCase normal — beda dari bulkid huruf kecil pada SubmitBulkCashInResponse di atas.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
bulkIdstringWajib
partnerBulkIdstringWajib