From 7597d1ea82f413d7900eb3cda8d7bb5799906fb2 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 22 Jun 2024 08:01:33 +0300 Subject: [PATCH 1/3] feat: impl deposit search --- remittance/const.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/remittance/const.go b/remittance/const.go index a319fa17..182a7c40 100644 --- a/remittance/const.go +++ b/remittance/const.go @@ -8,6 +8,7 @@ const ( accountRegistrationPath = "api/AccountRegistration.json" depositRegistrationPath = "api/DepositRegistration.json" realDepositRegistrationPath = "api/RealDepositRegistration.json" + depositSearchPath = "api/DepositSearch.json" ) type MailDepositMethod string @@ -45,3 +46,26 @@ const ( DepositResultCompleted DepositResult = "1" DepositResultFailed DepositResult = "4" ) + +type DepositBankStatus string + +const ( + DepositBankStatusRegistered DepositBankStatus = "0" + DepositBankStatusCreated DepositBankStatus = "1" + DepositBankStatusFailedCreating DepositBankStatus = "2" + DepositBankStatusSent DepositBankStatus = "3" + DepositBankStatusFailedSending DepositBankStatus = "4" + DepositBankStatusCanceled DepositBankStatus = "9" +) + +type DepositBankResultDetail string + +const ( + DepositBankResultDetailNoAccount DepositBankResultDetail = "01" + DepositBankResultDetailNameMismatch DepositBankResultDetail = "02" + DepositBankResultDetailAccountNumberMismatch DepositBankResultDetail = "03" + DepositBankResultDetailSubjectMismatch DepositBankResultDetail = "04" + DepositBankResultDetailAccountClosed DepositBankResultDetail = "05" + DepositBankResultDetailAcceptTimeError DepositBankResultDetail = "06" + DepositBankResultDetailOther DepositBankResultDetail = "09" +) From d80d219d4a00c86bd64b1eb4a69c3f5fde5f3965 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 22 Jun 2024 08:01:35 +0300 Subject: [PATCH 2/3] feat: impl deposit search --- remittance/deposit_search_test.go | 43 +++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 remittance/deposit_search_test.go diff --git a/remittance/deposit_search_test.go b/remittance/deposit_search_test.go new file mode 100644 index 00000000..ade30e89 --- /dev/null +++ b/remittance/deposit_search_test.go @@ -0,0 +1,43 @@ +package remittance + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "net/url" + "testing" + + "gopkg.in/go-playground/assert.v1" +) + +func TestDepositSearch(t *testing.T) { + + expected := &DepositSearchResponse{ + DepositID: "depositID", + Bank: &DepositSearchBankResponse{ + BankID: "bankID", + }, + } + + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + respBody, _ := json.Marshal(expected) + w.Header().Set("Content-Type", "application/json") + w.Write(respBody) + })) + defer ts.Close() + defaultProxy := http.DefaultTransport.(*http.Transport).Proxy + http.DefaultTransport.(*http.Transport).Proxy = func(req *http.Request) (*url.URL, error) { + return url.Parse(ts.URL) + } + defer func() { http.DefaultTransport.(*http.Transport).Proxy = defaultProxy }() + + cli, _ := NewClient("shopID", "shopPass", false) + cli.APIHost = apiHostTest + cli.SetHTTPClient(http.DefaultClient) + req := &DepositSearchRequest{ + DepositID: "depositID", + } + result, err := cli.DepositSearch(req) + assert.Equal(t, nil, err) + assert.Equal(t, expected, result) +} From 25527e8e68ae41051855ff6d4365ca337ac10163 Mon Sep 17 00:00:00 2001 From: abyssparanoia Date: Sat, 22 Jun 2024 08:01:36 +0300 Subject: [PATCH 3/3] feat: impl deposit search --- remittance/deposit_search.go | 61 ++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 remittance/deposit_search.go diff --git a/remittance/deposit_search.go b/remittance/deposit_search.go new file mode 100644 index 00000000..ca095871 --- /dev/null +++ b/remittance/deposit_search.go @@ -0,0 +1,61 @@ +package remittance + +import ( + "github.com/abyssparanoia/go-gmo/internal/pkg/converter" + "github.com/abyssparanoia/go-gmo/internal/pkg/validate" +) + +type DepositSearchRequest struct { + DepositID string `json:"Deposit_ID" validate:"required,max=27"` +} + +func (r *DepositSearchRequest) Validate() error { + if err := validate.Struct(r); err != nil { + return err + } + return nil +} + +type DepositSearchResponse struct { + DepositID string `json:"Deposit_ID"` + Amount string `json:"Amount"` + Free string `json:"Free"` + SelectKey string `json:"Select_Key"` + Bank *DepositSearchBankResponse `json:"bank"` +} + +type DepositSearchBankResponse struct { + BankID string `json:"Bank_ID"` + BankName string `json:"Bank_Name"` + BankCode string `json:"Bank_Code"` + BranchName string `json:"Branch_Name"` + BranchCode string `json:"Branch_Code"` + AccountType string `json:"Account_Type"` + AccountNumber string `json:"Account_Number"` + AccountName string `json:"Account_Name"` + BankFee string `json:"Bank_Fee"` + Result DepositBankStatus `json:"Result"` + BranchCodeJpbank string `json:"Branch_Code_Jpbank"` + AccountNumberJpbank string `json:"Account_Number_Jpbank"` + DepositDate string `json:"Deposit_Date"` + ResultDetail DepositBankResultDetail `json:"Result_Detail"` + ClientName string `json:"Client_Name"` +} + +func (cli *Client) DepositSearch( + req *DepositSearchRequest, +) (*DepositSearchResponse, error) { + if err := req.Validate(); err != nil { + return nil, err + } + reqMap, err := converter.StructToJsonTagMap(req) + if err != nil { + return nil, err + } + res := &DepositSearchResponse{} + _, err = cli.do(depositSearchPath, reqMap, res) + if err != nil { + return nil, err + } + return res, nil +}