Skip to content

Auth Payment

Auth Payment

Alur otorisasi/capture/void/refund gaya kartu: tahan dana dengan AuthPayment, lalu capture, void, atau refund; setiap operasi tulis punya query pasangannya.

resp, err := transferdebit.AuthPayment(ctx, transport, hb, transferdebit.AuthPaymentRequest{
	PartnerReferenceNo: "2020102900000000000001",
	MerchantID: "...",
	Title: "...",
})
if err != nil {
	// errors.Is(err, snap.ErrBadRequest), snap.ErrUnauthorized, etc.
}

AuthPayment

AuthPayment memanggil endpoint SNAP Auth Payment (Service Code 63, HTTP POST). Fungsi ini menahan dana tanpa menagihnya. Isi hb dengan semua field kecuali BodyAuthPayment melakukan marshal request itu sendiri dan memakai byte yang sama persis untuk signing maupun body di wire.

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

func AuthPayment(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req AuthPaymentRequest) (AuthPaymentResponse, error)

Request — AuthPaymentRequest

AuthPaymentRequest adalah request body untuk Auth Payment. Fungsi ini menahan dana — Capture (65) nanti menagih sebagian atau seluruhnya, Void (67) melepas bagian yang tidak dicapture.

items (daftar barang yang dibeli) tidak punya skema tetap di standar, jadi tipenya json.RawMessage — sama seperti additionalInfo dan field lain yang memang tidak ditentukan bentuknya oleh standar.

FieldTypePresence
partnerReferenceNostringWajib
merchantIdstringWajib
subMerchantIdstringOpsional
amount*snap.MoneyOpsional
feeTypestringOpsional
mccstringOpsional
productCodestringOpsional
titlestringWajib
itemsjson.RawMessageOpsional
additionalInfojson.RawMessageOpsional

Response — AuthPaymentResponse

AuthPaymentResponse adalah response body untuk Auth Payment. referenceNo bersifat Kondisional — hanya muncul saat berhasil.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
referenceNostringOpsional
partnerReferenceNostringOpsional
amountsnap.MoneyWajib
paidTimestringWajib
additionalInfojson.RawMessageOpsional

AuthPaymentQuery

AuthPaymentQuery memanggil endpoint SNAP Payment Query (Service Code 64, HTTP POST) untuk mengecek status Auth Payment sebelumnya. Isi hb dengan semua field kecuali BodyAuthPaymentQuery melakukan marshal request itu sendiri.

func AuthPaymentQuery(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req AuthPaymentQueryRequest) (AuthPaymentQueryResponse, error)

Request — AuthPaymentQueryRequest

AuthPaymentQueryRequest adalah request body untuk Payment Query. Tidak ada field Wajib — cari berdasarkan reference, merchant, atau store ID mana pun yang Anda punya.

FieldTypePresence
originalPartnerReferenceNostringOpsional
originalReferenceNostringOpsional
merchantIdstringOpsional
subMerchantIdstringOpsional
externalStoreIdstringOpsional
additionalInfojson.RawMessageOpsional

Response — AuthPaymentQueryResponse

AuthPaymentQueryResponse adalah response body untuk Payment Query. paidTime dan latestTransactionStatus bersifat Wajib.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
originalPartnerReferenceNostringOpsional
originalReferenceNostringOpsional
amount*snap.MoneyOpsional
paidTimestringWajib
latestTransactionStatusstringWajib
transactionStatusDescstringOpsional
additionalInfojson.RawMessageOpsional

AuthCapture

AuthCapture memanggil endpoint SNAP Capture (Service Code 65, HTTP POST). Isi hb dengan semua field kecuali BodyAuthCapture melakukan marshal request itu sendiri.

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

func AuthCapture(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req AuthCaptureRequest) (AuthCaptureResponse, error)

Request — AuthCaptureRequest

AuthCaptureRequest adalah request body untuk Capture. Fungsi ini menagih sebagian atau seluruh dana yang ditahan oleh Auth Payment (63) — panggil beberapa kali untuk capture parsial.

lastCapture adalah string berisi "true"/"false", bukan boolean asli — set untuk menandai capture terakhir dalam rangkaian capture parsial.

FieldTypePresence
originalReferenceNostringWajib
originalPartnerReferenceNostringWajib
merchantIdstringWajib
subMerchantIdstringOpsional
partnerCaptureNostringWajib
captureAmount*snap.MoneyOpsional
titlestringWajib
lastCapturestringOpsional
additionalInfojson.RawMessageOpsional

Response — AuthCaptureResponse

AuthCaptureResponse adalah response body untuk Capture. captureNo dan captureTime bersifat Kondisional — hanya muncul saat berhasil.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
originalReferenceNostringOpsional
originalPartnerReferenceNostringOpsional
partnerCaptureNostringOpsional
captureNostringOpsional
captureAmountsnap.MoneyWajib
captureTimestringOpsional
additionalInfojson.RawMessageOpsional

AuthCaptureQuery

AuthCaptureQuery memanggil endpoint SNAP Capture Query (Service Code 66, HTTP POST) untuk mengecek status Capture sebelumnya. Isi hb dengan semua field kecuali BodyAuthCaptureQuery melakukan marshal request itu sendiri.

func AuthCaptureQuery(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req AuthCaptureQueryRequest) (AuthCaptureQueryResponse, error)

Request — AuthCaptureQueryRequest

AuthCaptureQueryRequest adalah request body untuk Capture Query (Service Code 66). originalReferenceNo, merchantId, dan partnerCaptureNo bersifat Wajib.

FieldTypePresence
originalReferenceNostringWajib
originalPartnerReferenceNostringOpsional
merchantIdstringWajib
subMerchantIdstringOpsional
captureNostringOpsional
partnerCaptureNostringWajib
additionalInfojson.RawMessageOpsional

Response — AuthCaptureQueryResponse

AuthCaptureQueryResponse adalah response body untuk Capture Query. captureAmount dan partnerCaptureNo bersifat Wajib di sini — berbeda dari response Capture sendiri, di mana partnerCaptureNo Opsional. latestCaptureStatus bernilai salah satu dari INIT, SUCCESS, atau FAILED.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
originalReferenceNostringOpsional
originalPartnerReferenceNostringOpsional
captureNostringOpsional
captureAmountsnap.MoneyWajib
captureTimestringOpsional
latestCaptureStatusstringOpsional
partnerCaptureNostringWajib
additionalInfojson.RawMessageOpsional

AuthVoid

AuthVoid memanggil endpoint SNAP Void (Service Code 67, HTTP POST). Isi hb dengan semua field kecuali BodyAuthVoid melakukan marshal request itu sendiri.

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

func AuthVoid(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req AuthVoidRequest) (AuthVoidResponse, error)

Request — AuthVoidRequest

AuthVoidRequest adalah request body untuk Void. Fungsi ini melepas dana hasil hold dari Auth Payment (63) yang belum dicapture.

voidRemainingAmount adalah string berisi "true"/"false", konvensi yang sama dengan lastCapture pada Capture.

FieldTypePresence
originalReferenceNostringWajib
originalPartnerReferenceNostringWajib
merchantIdstringWajib
subMerchantIdstringOpsional
voidAmount*snap.MoneyOpsional
partnerVoidNostringWajib
voidRemainingAmountstringOpsional
reasonstringOpsional
additionalInfojson.RawMessageOpsional

Response — AuthVoidResponse

AuthVoidResponse adalah response body untuk Void. voidNo dan voidTime bersifat Kondisional — hanya muncul saat berhasil.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
originalReferenceNostringOpsional
originalPartnerReferenceNostringOpsional
voidNostringOpsional
partnerVoidNostringWajib
voidAmountsnap.MoneyWajib
voidTimestringOpsional
additionalInfojson.RawMessageOpsional

AuthVoidQuery

AuthVoidQuery memanggil endpoint SNAP Void Query (Service Code 68, HTTP POST) untuk mengecek status Void sebelumnya. Isi hb dengan semua field kecuali BodyAuthVoidQuery melakukan marshal request itu sendiri.

func AuthVoidQuery(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req AuthVoidQueryRequest) (AuthVoidQueryResponse, error)

Request — AuthVoidQueryRequest

AuthVoidQueryRequest adalah request body untuk Void Query. originalReferenceNo, merchantId, dan partnerVoidNo bersifat Wajib.

FieldTypePresence
originalReferenceNostringWajib
originalPartnerReferenceNostringOpsional
merchantIdstringWajib
subMerchantIdstringOpsional
voidNostringOpsional
partnerVoidNostringWajib
additionalInfojson.RawMessageOpsional

Response — AuthVoidQueryResponse

AuthVoidQueryResponse adalah response body untuk Void Query. voidAmount bersifat Wajib; partnerVoidNo di sini Opsional — berbeda dari response Void sendiri, di mana field itu Wajib. latestVoidStatus bernilai salah satu dari INIT, SUCCESS, atau FAILED.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
originalReferenceNostringOpsional
originalPartnerReferenceNostringOpsional
voidNostringOpsional
voidAmountsnap.MoneyWajib
voidTimestringOpsional
latestVoidStatusstringOpsional
partnerVoidNostringOpsional
additionalInfojson.RawMessageOpsional

AuthRefund

AuthRefund memanggil endpoint SNAP Refund (Service Code 69, HTTP POST). Isi hb dengan semua field kecuali BodyAuthRefund melakukan marshal request itu sendiri.

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

func AuthRefund(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req AuthRefundRequest) (AuthRefundResponse, error)

Request — AuthRefundRequest

AuthRefundRequest adalah request body untuk Refund. Fungsi ini membalikkan dana yang sudah dicapture oleh Auth Capture (65).

originalCaptureNo bersifat Kondisional — tidak seperti kebanyakan field Kondisional di package ini, field ini wajib diisi justru saat transaksi asal-nya gagal, bukan saat berhasil.

FieldTypePresence
originalPartnerReferenceNostringWajib
originalReferenceNostringOpsional
partnerRefundNostringWajib
merchantIdstringOpsional
subMerchantIdstringOpsional
originalCaptureNostringOpsional
refundAmount*snap.MoneyOpsional
externalStoreIdstringOpsional
reasonstringOpsional
additionalInfojson.RawMessageOpsional

Response — AuthRefundResponse

AuthRefundResponse adalah response body untuk Refund. refundNo dan refundTime bersifat Wajib; partnerRefundNo Opsional.

originalCaptureNo dan originalReferenceNo sama-sama Kondisional tapi pemicunya berkebalikan: originalCaptureNo muncul saat transaksi gagal, originalReferenceNo saat berhasil.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
originalCaptureNostringOpsional
originalReferenceNostringOpsional
originalPartnerReferenceNostringOpsional
partnerRefundNostringOpsional
refundNostringWajib
refundAmount*snap.MoneyOpsional
refundTimestringWajib
additionalInfojson.RawMessageOpsional