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 Body — AuthPayment 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.
| Field | Type | Presence |
|---|---|---|
partnerReferenceNo | string | Wajib |
merchantId | string | Wajib |
subMerchantId | string | Opsional |
amount | *snap.Money | Opsional |
feeType | string | Opsional |
mcc | string | Opsional |
productCode | string | Opsional |
title | string | Wajib |
items | json.RawMessage | Opsional |
additionalInfo | json.RawMessage | Opsional |
Response — AuthPaymentResponse
AuthPaymentResponse adalah response body untuk Auth Payment. referenceNo bersifat Kondisional — hanya muncul saat berhasil.
| Field | Type | Presence |
|---|---|---|
responseCode | string | Wajib |
responseMessage | string | Wajib |
referenceNo | string | Opsional |
partnerReferenceNo | string | Opsional |
amount | snap.Money | Wajib |
paidTime | string | Wajib |
additionalInfo | json.RawMessage | Opsional |
AuthPaymentQuery
AuthPaymentQuery memanggil endpoint SNAP Payment Query (Service Code 64, HTTP POST) untuk mengecek status Auth Payment sebelumnya. Isi hb dengan semua field kecuali Body — AuthPaymentQuery 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.
| Field | Type | Presence |
|---|---|---|
originalPartnerReferenceNo | string | Opsional |
originalReferenceNo | string | Opsional |
merchantId | string | Opsional |
subMerchantId | string | Opsional |
externalStoreId | string | Opsional |
additionalInfo | json.RawMessage | Opsional |
Response — AuthPaymentQueryResponse
AuthPaymentQueryResponse adalah response body untuk Payment Query. paidTime dan latestTransactionStatus bersifat Wajib.
| Field | Type | Presence |
|---|---|---|
responseCode | string | Wajib |
responseMessage | string | Wajib |
originalPartnerReferenceNo | string | Opsional |
originalReferenceNo | string | Opsional |
amount | *snap.Money | Opsional |
paidTime | string | Wajib |
latestTransactionStatus | string | Wajib |
transactionStatusDesc | string | Opsional |
additionalInfo | json.RawMessage | Opsional |
AuthCapture
AuthCapture memanggil endpoint SNAP Capture (Service Code 65, HTTP POST). Isi hb dengan semua field kecuali Body — AuthCapture 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.
| Field | Type | Presence |
|---|---|---|
originalReferenceNo | string | Wajib |
originalPartnerReferenceNo | string | Wajib |
merchantId | string | Wajib |
subMerchantId | string | Opsional |
partnerCaptureNo | string | Wajib |
captureAmount | *snap.Money | Opsional |
title | string | Wajib |
lastCapture | string | Opsional |
additionalInfo | json.RawMessage | Opsional |
Response — AuthCaptureResponse
AuthCaptureResponse adalah response body untuk Capture. captureNo dan captureTime bersifat Kondisional — hanya muncul saat berhasil.
| Field | Type | Presence |
|---|---|---|
responseCode | string | Wajib |
responseMessage | string | Wajib |
originalReferenceNo | string | Opsional |
originalPartnerReferenceNo | string | Opsional |
partnerCaptureNo | string | Opsional |
captureNo | string | Opsional |
captureAmount | snap.Money | Wajib |
captureTime | string | Opsional |
additionalInfo | json.RawMessage | Opsional |
AuthCaptureQuery
AuthCaptureQuery memanggil endpoint SNAP Capture Query (Service Code 66, HTTP POST) untuk mengecek status Capture sebelumnya. Isi hb dengan semua field kecuali Body — AuthCaptureQuery 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.
| Field | Type | Presence |
|---|---|---|
originalReferenceNo | string | Wajib |
originalPartnerReferenceNo | string | Opsional |
merchantId | string | Wajib |
subMerchantId | string | Opsional |
captureNo | string | Opsional |
partnerCaptureNo | string | Wajib |
additionalInfo | json.RawMessage | Opsional |
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.
| Field | Type | Presence |
|---|---|---|
responseCode | string | Wajib |
responseMessage | string | Wajib |
originalReferenceNo | string | Opsional |
originalPartnerReferenceNo | string | Opsional |
captureNo | string | Opsional |
captureAmount | snap.Money | Wajib |
captureTime | string | Opsional |
latestCaptureStatus | string | Opsional |
partnerCaptureNo | string | Wajib |
additionalInfo | json.RawMessage | Opsional |
AuthVoid
AuthVoid memanggil endpoint SNAP Void (Service Code 67, HTTP POST). Isi hb dengan semua field kecuali Body — AuthVoid 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.
| Field | Type | Presence |
|---|---|---|
originalReferenceNo | string | Wajib |
originalPartnerReferenceNo | string | Wajib |
merchantId | string | Wajib |
subMerchantId | string | Opsional |
voidAmount | *snap.Money | Opsional |
partnerVoidNo | string | Wajib |
voidRemainingAmount | string | Opsional |
reason | string | Opsional |
additionalInfo | json.RawMessage | Opsional |
Response — AuthVoidResponse
AuthVoidResponse adalah response body untuk Void. voidNo dan voidTime bersifat Kondisional — hanya muncul saat berhasil.
| Field | Type | Presence |
|---|---|---|
responseCode | string | Wajib |
responseMessage | string | Wajib |
originalReferenceNo | string | Opsional |
originalPartnerReferenceNo | string | Opsional |
voidNo | string | Opsional |
partnerVoidNo | string | Wajib |
voidAmount | snap.Money | Wajib |
voidTime | string | Opsional |
additionalInfo | json.RawMessage | Opsional |
AuthVoidQuery
AuthVoidQuery memanggil endpoint SNAP Void Query (Service Code 68, HTTP POST) untuk mengecek status Void sebelumnya. Isi hb dengan semua field kecuali Body — AuthVoidQuery 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.
| Field | Type | Presence |
|---|---|---|
originalReferenceNo | string | Wajib |
originalPartnerReferenceNo | string | Opsional |
merchantId | string | Wajib |
subMerchantId | string | Opsional |
voidNo | string | Opsional |
partnerVoidNo | string | Wajib |
additionalInfo | json.RawMessage | Opsional |
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.
| Field | Type | Presence |
|---|---|---|
responseCode | string | Wajib |
responseMessage | string | Wajib |
originalReferenceNo | string | Opsional |
originalPartnerReferenceNo | string | Opsional |
voidNo | string | Opsional |
voidAmount | snap.Money | Wajib |
voidTime | string | Opsional |
latestVoidStatus | string | Opsional |
partnerVoidNo | string | Opsional |
additionalInfo | json.RawMessage | Opsional |
AuthRefund
AuthRefund memanggil endpoint SNAP Refund (Service Code 69, HTTP POST). Isi hb dengan semua field kecuali Body — AuthRefund 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.
| Field | Type | Presence |
|---|---|---|
originalPartnerReferenceNo | string | Wajib |
originalReferenceNo | string | Opsional |
partnerRefundNo | string | Wajib |
merchantId | string | Opsional |
subMerchantId | string | Opsional |
originalCaptureNo | string | Opsional |
refundAmount | *snap.Money | Opsional |
externalStoreId | string | Opsional |
reason | string | Opsional |
additionalInfo | json.RawMessage | Opsional |
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.
| Field | Type | Presence |
|---|---|---|
responseCode | string | Wajib |
responseMessage | string | Wajib |
originalCaptureNo | string | Opsional |
originalReferenceNo | string | Opsional |
originalPartnerReferenceNo | string | Opsional |
partnerRefundNo | string | Opsional |
refundNo | string | Wajib |
refundAmount | *snap.Money | Opsional |
refundTime | string | Wajib |
additionalInfo | json.RawMessage | Opsional |