Skip to content

Transfer to Bank

Transfer to Bank

Inquiry dan pembayaran untuk transfer yang dirutekan ke bank eksternal.

resp, err := transfercredit.TransferToBankPayment(ctx, transport, hb, transfercredit.TransferToBankPaymentRequest{
	PartnerReferenceNo: "2020102900000000000001",
	CustomerNumber: "2020102900000000000001",
	BeneficiaryAccountNumber: "...",
	Amount: snap.Money{Value: "500000.00", Currency: "IDR"},
})
if err != nil {
	// errors.Is(err, snap.ErrBadRequest), snap.ErrUnauthorized, etc.
}

TransferToBankAccountInquiry

Memanggil endpoint SNAP Transfer To Bank - Account Inquiry (Service Code 42, path …/{version}/emoney/bank-account-inquiry, HTTP POST — tanpa override method). hb harus sudah membawa setiap field yang dibutuhkan snap.HeaderBuilder kecuali Body, yang diatur sendiri oleh TransferToBankAccountInquiry agar byte hasil marshal yang sama persis dipakai untuk signing dan wire body.

func TransferToBankAccountInquiry(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req TransferToBankAccountInquiryRequest) (TransferToBankAccountInquiryResponse, error)

Request — TransferToBankAccountInquiryRequest

CustomerNumber dan Amount wajib. Perhatikan field wire-nya CustomerNumber (C besar) di sini — endpoint lain memakai customerNumber huruf kecil. Kemungkinan salah ketik dokumentasi, tapi package ini mengikuti casing yang terdokumentasi apa adanya.

FieldTypePresence
partnerReferenceNostringOpsional
CustomerNumberstringWajib
amountsnap.MoneyWajib
beneficiaryAccountNumberstringOpsional

Response — TransferToBankAccountInquiryResponse

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
accountTypestringOpsional
beneficiaryAccountNumberstringWajib
beneficiaryAccountNamestringWajib
beneficiaryBankCodestringOpsional
beneficiaryBankShortNamestringOpsional
beneficiaryBankNamestringOpsional
amountsnap.MoneyWajib
sessionIdstringOpsional

TransferToBankPayment

Memanggil endpoint SNAP Transfer To Bank - Payment Transaction (Service Code 43, path …/{version}/emoney/transfer-bank, HTTP POST — tanpa override method). hb harus sudah membawa setiap field yang dibutuhkan snap.HeaderBuilder kecuali Body, yang diatur sendiri oleh TransferToBankPayment 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 TransferToBankPayment(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req TransferToBankPaymentRequest) (TransferToBankPaymentResponse, error)

Request — TransferToBankPaymentRequest

PartnerReferenceNo, CustomerNumber, BeneficiaryAccountNumber, dan Amount wajib. Berbeda dari Account Inquiry di atas, customerNumber di sini memakai casing lowercase normal.

FieldTypePresence
partnerReferenceNostringWajib
customerNumberstringWajib
accountTypestringOpsional
beneficiaryAccountNumberstringWajib
beneficiaryBankCodestringOpsional
amountsnap.MoneyWajib
sessionIdstringOpsional
feeTypestringOpsional

Response — TransferToBankPaymentResponse

Perhatikan referenceNo dan referenceNumber adalah dua field terpisah yang sama-sama ada — bukan duplikat.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
referenceNostringOpsional
transactionDatestringOpsional
referenceNumberstringWajib