Skip to content

Commit

Permalink
Merge pull request #2 from al-mahd/master
Browse files Browse the repository at this point in the history
add feature retail outlet payments
  • Loading branch information
jiharal authored Dec 21, 2020
2 parents f4d88e5 + b2602bf commit 258598b
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 57 deletions.
25 changes: 22 additions & 3 deletions core.outlet.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ import (
)

const (
patFixedPaymentCode = "/fixed_payment_code"
pathUpdateFixedPaymentCode = "/fixed_payment_code/%s"
pathFixedPaymentCode = "/fixed_payment_code"
pathSimulateFixedPaymentCode = "/fixed_payment_code/simulate_payment"
pathUpdateFixedPaymentCode = "/fixed_payment_code/%s"
)

// UpdateFixedPaymentCode i sused to update payment
Expand Down Expand Up @@ -42,7 +43,25 @@ func (gw *CoreXendit) CreateFixedPaymentCode(req CreateFixedPaymentCodeRequest)
"Authorization": BasicAuth(gw.Client.SecretKey, ""),
"Content-Type": "application/json",
}
err = gw.Call(fasthttp.MethodPost, patFixedPaymentCode, headers, buf, &res)
err = gw.Call(fasthttp.MethodPost, pathFixedPaymentCode, headers, buf, &res)
if err != nil {
return
}
return
}

// SimulateFixedPayment is used to simulate payment to outlet.
func (gw *CoreXendit) SimulateFixedPayment(req SimulateRequest) (res SimulateResponse, err error) {
data, err := json.Marshal(req)
if err != nil {
return
}
buf := bytes.NewBuffer(data)
headers := map[string]string{
"Authorization": BasicAuth(gw.Client.SecretKey, ""),
"Content-Type": "application/json",
}
err = gw.Call(fasthttp.MethodPost, pathSimulateFixedPaymentCode, headers, buf, &res)
if err != nil {
return
}
Expand Down
108 changes: 54 additions & 54 deletions core_test.go
Original file line number Diff line number Diff line change
@@ -1,63 +1,63 @@
package xenditfasthttp

import (
"fmt"
"testing"
"time"
)

func TestHello(t *testing.T) {
// client := NewClient()
// client.Host = "https://api.xendit.co"
// client.SecretKey = "xnd_development_P4qDfOss0OCpl8RtKrROHjaQYNCk9dN5lSfk+R1l9Wbe+rSiCwZ3jw=="
func initial() *CoreXendit {
client := NewClient()
client.Host = "https://api.xendit.co"
client.SecretKey = ""

// core := CoreXendit{
// Client: client,
// }

// auth := BasicAuth(client.SecretKey, "")
// t.Log(auth)

// reqDis := DisbursementRequest{
// ExternalID: "JIHAR1122",
// BankCode: "BCA",
// AccountHolderName: "Jihar Al Gifari",
// AccountNumber: "1234567890",
// Description: "Hello",
// Amount: 120000,
// }

// createDisembursement, err := core.CreateDisbursement(reqDis)
// require.NoError(t, err)
// t.Log(createDisembursement)

// availDisBanks, err := core.GetAvailableDisbursementBanks()
// require.NoError(t, err)
// t.Log(availDisBanks)

// a, err := core.GetDisbursementsByExternalID("JIHAR1")
// require.NoError(t, err)
// t.Log(a)

// reqData := CreateVARequest{
// ExternalID: fmt.Sprintf("%v", time.Now().UnixNano()),
// BankCode: VABRI,
// Name: "Jihar",
// IsSingleUse: true,
// SuggestedAmount: 100000,
// ExpirationDate: time.Now().Add(24 * time.Hour).Format(time.RFC3339),
// }

// resp, err := core.CreataVA(reqData)
// require.NoError(t, err)
// t.Log(resp)
return &CoreXendit{
Client: client,
}
}
func TestOutlet(t *testing.T) {
init := initial()
req := CreateFixedPaymentCodeRequest{
ExternalID: fmt.Sprintf("%v", time.Now().Unix()),
RetailOutletName: OutletIndomaret,
Name: "Joe Doe",
ExpectedAmount: 10000,
ExpirationDate: time.Now().Add(24 * time.Hour).Format(time.RFC3339),
IsSingleUse: true,
}
reqData, err := init.CreateFixedPaymentCode(req)
if err != nil {
t.Fatal(err)
}

reqSimulate := SimulateRequest{
ExternalID: reqData.ExternalID,
RetailOutletName: reqData.RetailOutletName,
PaymentCode: reqData.PaymentCode,
TransferAmount: reqData.ExpectedAmount,
}

simResp, err := init.SimulateFixedPayment(reqSimulate)
if err != nil {
t.Fatal(err)
}
t.Log(simResp)
}

// reqOutlet := CreateFixedPaymentCodeRequest{
// ExternalID: fmt.Sprintf("KS%v", time.Now().UnixNano()),
// RetailOutletName: "INDOMARET",
// Name: "Jihar",
// ExpectedAmount: 100000,
// IsSingleUse: true,
// }
// outletResp, err := core.CreateFixedPaymentCode(reqOutlet)
// require.NoError(t, err)
// t.Log(outletResp)
func TestVA(t *testing.T) {
init := initial()

reqData := CreateVARequest{
ExternalID: fmt.Sprintf("%v", time.Now().UnixNano()),
BankCode: VABRI,
Name: "Jihar",
IsSingleUse: true,
SuggestedAmount: 100000,
ExpirationDate: time.Now().Add(24 * time.Hour).Format(time.RFC3339),
}
resp, err := init.CreataVA(reqData)
if err != nil {
t.Fatal(err)
}
t.Log(resp)
}
9 changes: 9 additions & 0 deletions request.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,15 @@ type (
ExpirationDate string `json:"expiration_date,omitempty"`
IsSingleUse bool `json:"is_single_use,omitempty"`
}

// SimulateRequest ...
SimulateRequest struct {
ExternalID string `json:"external_id"`
RetailOutletName string `json:"retail_outlet_name"`
PaymentCode string `json:"payment_code"`
TransferAmount int `json:"transfer_amount"`
}

// CreateVARequest is ...
CreateVARequest struct {
ExternalID string `json:"external_id,required"`
Expand Down
6 changes: 6 additions & 0 deletions response.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,10 @@ type (
ErrorCode string `json:"error_code"`
Message string `json:"message"`
}

// SimulateResponse struct ..
SimulateResponse struct {
Status string `json:"status"`
Message string `json:"message"`
}
)
9 changes: 9 additions & 0 deletions util.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@ const (

// VABRI is ...
VABRI = "BRI"

// VABNISyariah is ....
VABNISyariah = "BNI_SYARIAH"

// OutletIndomaret ...
OutletIndomaret = "INDOMARET"

// OutletAlfamart ...
OutletAlfamart = "ALFAMART"
)

// BasicAuth is ..
Expand Down

0 comments on commit 258598b

Please sign in to comment.