Documentation ¶
Index ¶
- func FormatCreditInstallmentOption(option CreditInstallmentOption) string
- func FormatDate(time time.Time) string
- func FormatDatetime(time time.Time) string
- func FormatIgnorePayment(option IgnorePaymentOption) string
- func FormatInvoiceItem(items []string) string
- func FormatItemName(items []string) string
- func GeneratePostForm(action string, form url.Values) string
- func GetCheckMacValue(req url.Values, hashKey, hashIV string) string
- func ParseQueryString(q string) (map[string]interface{}, error)
- func WithSandbox(client *Client) error
- type ATMParam
- type ActionType
- type AllocateStatusType
- type BindingCardType
- type CVSOrBarcodeParam
- type CarrierType
- type CharSetType
- type ChoosePaymentType
- type ChooseSubpaymentType
- type ClearanceMarkType
- type Client
- func (c *Client) AioCheckOut(order Order) (string, error)
- func (c *Client) DoAction(action CreditCardAction) (map[string]interface{}, error)
- func (c *Client) FundingReconDetail(statement Statement) (string, error)
- func (c *Client) Info() map[string]string
- func (c *Client) QueryCreditCardPeriodInfo(info CreditCardPeriodInfo) (map[string]interface{}, error)
- func (c *Client) QueryPaymentInfo(info PaymentInfo) (map[string]interface{}, error)
- func (c *Client) QueryTrade(trade Trade) (map[string]interface{}, error)
- func (c *Client) QueryTradeInfo(info TradeInfo) (map[string]interface{}, error)
- func (c *Client) TradeNoAio(statement CreditCardStatement) (string, error)
- type ClientOption
- type CreditCardAction
- type CreditCardPeriodInfo
- type CreditCardStatement
- type CreditInstallmentOption
- type CreditParam
- type DateType
- type DonationType
- type IgnorePaymentOption
- type InvoiceMarkType
- type InvoiceParam
- type InvoiceType
- type LanguageType
- type MediaFormatedType
- type MerchantPaymentType
- type NeedExtraPaidInfoType
- type Order
- type PayDateType
- type Payload
- type PaymentInfo
- type PaymentStatusType
- type PaymentType
- type PeriodType
- type PlatformStatusType
- type PrintType
- type RedeemType
- type Statement
- type TaxType
- type Trade
- type TradeInfo
- type UnionPayType
Examples ¶
- Client.AioCheckOut (All)
- Client.AioCheckOut (Atm)
- Client.AioCheckOut (Barcode)
- Client.AioCheckOut (CreditCard)
- Client.AioCheckOut (CreditCardPeriod)
- Client.AioCheckOut (CreditInstallment)
- Client.AioCheckOut (Cvs)
- Client.AioCheckOut (GooglePay)
- Client.AioCheckOut (Invoice)
- Client.AioCheckOut (WebATM)
- Client.DoAction
- Client.FundingReconDetail
- Client.QueryCreditCardPeriodInfo
- Client.QueryPaymentInfo
- Client.QueryTrade
- Client.QueryTradeInfo
- Client.TradeNoAio
- NewClient
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FormatCreditInstallmentOption ¶
func FormatCreditInstallmentOption(option CreditInstallmentOption) string
FormatCreditInstallmentOption joins the installment options with ','.
func FormatDate ¶
FormatDate convert time.Time into yyyy/MM/dd HH:mm:ss format.
func FormatDatetime ¶
FormatDatetime convert time.Time into yyyy/MM/dd HH:mm:ss format.
func FormatIgnorePayment ¶
func FormatIgnorePayment(option IgnorePaymentOption) string
FormatIgnorePayment joins the payments that will be ignored with '#'.
func FormatInvoiceItem ¶
FormatInvoiceItem joins the invoice item name with '|'. Apply to InvoiceItemName, InvoiceItemCount, InvoiceItemWord, InvoiceItemPrice and InvoiceItemTaxType.
func FormatItemName ¶
FormatItemName joins an array of item name with '#'.
func GetCheckMacValue ¶
GetCheckMacValue gets the check mac.
func ParseQueryString ¶
ParseQueryString parse the query string to map.
func WithSandbox ¶
WithSandbox configures the client, making it sending request to sandbox environment.
Types ¶
type ATMParam ¶
type ATMParam struct { // ExpireDate (允許繳費有效天數). ExpireDate int `json:"ExpireDate,omitempty"` // PaymentInfoURL (Server端回傳付款相關資訊). PaymentInfoURL string `json:"PaymentInfoURL,omitempty"` // ClientRedirectURL (Client端回傳付款相關資訊). ClientRedirectURL string `json:"ClientRedirectURL,omitempty"` }
ATMParam defines the parameters tailored for ATM transaction.
type ActionType ¶
type ActionType string
ActionType defines the struct of credit card action.
const ( // ActionTypeC (關帳). ActionTypeC ActionType = "C" // ActionTypeR (退刷). ActionTypeR ActionType = "R" // ActionTypeE (取消). ActionTypeE ActionType = "E" // ActionTypeN (放棄). ActionTypeN ActionType = "N" )
type AllocateStatusType ¶
type AllocateStatusType string
const ( // AllocateStatusTypeDone (已撥款). AllocateStatusTypeDone AllocateStatusType = "0" // AllocateStatusTypeNotYet (未撥款). AllocateStatusTypeNotYet AllocateStatusType = "1" )
type BindingCardType ¶
type BindingCardType string
BindingCardType defines the struct of binding card options (記憶卡號).
const ( BindingCardTypeYes BindingCardType = "1" BindingCardTypeNo BindingCardType = "0" )
type CVSOrBarcodeParam ¶
type CVSOrBarcodeParam struct { // StoreExpireDate (超商繳費截止時間). // unit: CVS (min), Barcode (day) StoreExpireDate int `json:"StoreExpireDate,omitempty"` // Desc1 (交易描述1). Desc1 string `json:"Desc1,omitempty"` // Desc2 (交易描述2). Desc2 string `json:"Desc2,omitempty"` // Desc3 (交易描述3). Desc3 string `json:"Desc3,omitempty"` // Desc4 (交易描述4). Desc4 string `json:"Desc4,omitempty"` // PaymentInfoURL (Server端回傳付款相關資訊). PaymentInfoURL string `json:"PaymentInfoURL,omitempty"` // ClientRedirectURL (Client端回傳付款方式相關資訊). ClientRedirectURL string `json:"ClientRedirectURL,omitempty"` }
CVSOrBarcodeParam defines the parameters tailored for CVS or bar code transaction.
type CarrierType ¶
type CarrierType string
CarrierType defines the struct of carrier options(載具類別).
const ( // CarrierTypeNone none (無載具). CarrierTypeNone CarrierType = "" // CarrierTypeMember member (特店載具). CarrierTypeMember CarrierType = "1" // CarrierTypeCitizen citizen (買受人之自然人憑證號碼). CarrierTypeCitizen CarrierType = "2" // CarrierTypeCellphone phone (買受人之手機條碼資料). CarrierTypeCellphone CarrierType = "3" )
type CharSetType ¶
type CharSetType string
const ( CharSetTypeBig5 CharSetType = "1" CharSetTypeUTF8 CharSetType = "2" )
type ChoosePaymentType ¶
type ChoosePaymentType string
ChoosePaymentType defines the struct of default payment type options (選擇預設付款方式).
const ( // ChoosePaymentTypeAll all type. ChoosePaymentTypeAll ChoosePaymentType = "ALL" // ChoosePaymentTypeCredit credit card (信用卡). ChoosePaymentTypeCredit ChoosePaymentType = "Credit" // ChoosePaymentTypeWebATM web ATM (網路ATM). ChoosePaymentTypeWebATM ChoosePaymentType = "WebATM" // ChoosePaymentTypeATM ATM. ChoosePaymentTypeATM ChoosePaymentType = "ATM" // ChoosePaymentTypeCVS convenience store payment code (超商代碼繳款) ChoosePaymentTypeCVS ChoosePaymentType = "CVS" // ChoosePaymentTypeBarCode bar code (超商條碼繳款). ChoosePaymentTypeBarCode ChoosePaymentType = "BARCODE" // ChoosePaymentTypeGooglePay Google Pay. ChoosePaymentTypeGooglePay ChoosePaymentType = "GooglePay" )
type ChooseSubpaymentType ¶
type ChooseSubpaymentType string
ChooseSubpaymentType defines the struct of subpayment type options (付款子項目).
const ( // ChooseSubpaymentTypeTaishin Taishin Bank (台新銀行). ChooseSubpaymentTypeTaishin ChooseSubpaymentType = "TAISHIN" // ChooseSubpaymentTypeESUN E.SUN Bank (玉山銀行). ChooseSubpaymentTypeESUN ChooseSubpaymentType = "ESUN" // ChooseSubpaymentTypeBOT Bank of Taiwan (台灣銀行). ChooseSubpaymentTypeBOT ChooseSubpaymentType = "BOT" // ChooseSubpaymentTypeFubon Fubon (富邦銀行). ChooseSubpaymentTypeFubon ChooseSubpaymentType = "FUBON" // ChooseSubpaymentTypeChinaTrust ChinaTrust Bank (中國信託). ChooseSubpaymentTypeChinaTrust ChooseSubpaymentType = "CHINATRUST" // ChooseSubpaymentTypeFirst First Commercial Bank (第一銀行). ChooseSubpaymentTypeFirst ChooseSubpaymentType = "FIRST" // ChooseSubpaymentTypeCathay Cathay Bank (花旗銀行). ChooseSubpaymentTypeCathay ChooseSubpaymentType = "CATHAY" // ChooseSubpaymentTypeMega Mega International Commercial Bank (兆豐銀行). ChooseSubpaymentTypeMega ChooseSubpaymentType = "MEGA" // ChooseSubpaymentTypeLand Land Bank (土地銀行). ChooseSubpaymentTypeLand ChooseSubpaymentType = "LAND" // ChooseSubpaymentTypeTachong (大眾銀行). ChooseSubpaymentTypeTachong ChooseSubpaymentType = "TACHONG" // ChooseSubpaymentTypeSinoPac SinoPac Bank (永豐銀行). ChooseSubpaymentTypeSinoPac ChooseSubpaymentType = "SINOPAC" // ChooseSubpaymentTypeCVS convenience store payment code (超商代碼繳款). ChooseSubpaymentTypeCVS ChooseSubpaymentType = "CVS" // ChooseSubpaymentTypeOK OK Mart. ChooseSubpaymentTypeOK ChooseSubpaymentType = "OK" // ChooseSubpaymentTypeFamily Family mart (全家). ChooseSubpaymentTypeFamily ChooseSubpaymentType = "FAMILY" // ChooseSubpaymentTypeHiLife HiFife. ChooseSubpaymentTypeHiLife ChooseSubpaymentType = "HILIFE" // ChooseSubpaymentTypeIBon 7-11 ibon. ChooseSubpaymentTypeIBon ChooseSubpaymentType = "IBON" // ChooseSubpaymentTypeBarcode barcode. ChooseSubpaymentTypeBarcode ChooseSubpaymentType = "BARCODE" )
type ClearanceMarkType ¶
type ClearanceMarkType string
ClearanceMarkType defines the struct of redeem options (通關方式).
const ( ClearanceMarkTypeNormal ClearanceMarkType = "1" ClearanceMarkTypeCustoms ClearanceMarkType = "2" )
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client implements client for making ECPay api.
func NewClient ¶
func NewClient(merchantID, hashKey, hashIV string, options ...ClientOption) (*Client, error)
NewClient create a client for communicating to ECPay server.
Example ¶
package main import ( "fmt" "log" "github.com/toastcheng/ecpay-sdk-go/ecpay" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } info := client.Info() fmt.Println(info["merchantID"]) fmt.Println(info["hashKey"]) fmt.Println(info["hashIV"]) fmt.Println(info["endpoint"]) fmt.Println(info["vendor"]) }
Output: <MERCHANT_ID> <HASH_KEY> <HASH_IV> https://payment-stage.ecpay.com.tw https://vendor-stage.ecpay.com.tw
func (*Client) AioCheckOut ¶
AioCheckOut sends an order to ECPay server (產生訂單).
Example (All) ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" "github.com/google/uuid" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } order := ecpay.Order{ MerchantTradeNo: fmt.Sprintf("%s%d", uuid.New().String()[:5], time.Now().Unix()%10000), StoreID: "", MerchantTradeDate: ecpay.FormatDatetime(time.Now()), PaymentType: ecpay.PaymentTypeAIO, TotalAmount: 2000, TradeDesc: "訂單測試", ItemName: ecpay.FormatItemName([]string{"商品1*", "商品2"}), ReturnURL: "https://www.ecpay.com.tw/return_url.php", ChoosePayment: ecpay.ChoosePaymentTypeAll, ClientBackURL: "https://www.ecpay.com.tw/client_back_url.php", ItemURL: "https://www.ecpay.com.tw/item_url.php", Remark: "交易備註", OrderResultURL: "https://www.ecpay.com.tw/order_result_url.php", NeedExtraPaidInfo: ecpay.NeedExtraPaidInfoTypeYes, InvoiceMark: ecpay.InvoiceMarkTypeNo, ATM: &ecpay.ATMParam{ ExpireDate: 7, PaymentInfoURL: "https://www.ecpay.com.tw/payment_info_url.php", }, CVSBarcode: &ecpay.CVSOrBarcodeParam{ StoreExpireDate: 15, PaymentInfoURL: "https://www.ecpay.com.tw/payment_info_url.php", }, IgnorePayment: ecpay.FormatIgnorePayment(ecpay.IgnorePaymentOption{ CVS: true, }), Credit: &ecpay.CreditParam{ BindingCard: ecpay.BindingCardTypeNo, }, } html, err := client.AioCheckOut(order) if err != nil { log.Fatal(err) } fmt.Println(html) }
Output:
Example (Atm) ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" "github.com/google/uuid" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } order := ecpay.Order{ MerchantTradeNo: fmt.Sprintf("%s%d", uuid.New().String()[:5], time.Now().Unix()%10000), StoreID: "", MerchantTradeDate: ecpay.FormatDatetime(time.Now()), PaymentType: ecpay.PaymentTypeAIO, TotalAmount: 2000, TradeDesc: "訂單測試", ItemName: ecpay.FormatItemName([]string{"商品1", "商品2"}), ReturnURL: "https://www.ecpay.com.tw/return_url.php", ChoosePayment: ecpay.ChoosePaymentTypeATM, ClientBackURL: "https://www.ecpay.com.tw/client_back_url.php", ItemURL: "https://www.ecpay.com.tw/item_url.php", Remark: "交易備註", OrderResultURL: "https://www.ecpay.com.tw/order_result_url.php", NeedExtraPaidInfo: ecpay.NeedExtraPaidInfoTypeYes, InvoiceMark: ecpay.InvoiceMarkTypeNo, ATM: &ecpay.ATMParam{ ExpireDate: 7, PaymentInfoURL: "https://www.ecpay.com.tw/payment_info_url.php", }, } html, err := client.AioCheckOut(order) if err != nil { log.Fatal(err) } fmt.Println(html) }
Output:
Example (Barcode) ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" "github.com/google/uuid" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } order := ecpay.Order{ MerchantTradeNo: fmt.Sprintf("%s%d", uuid.New().String()[:5], time.Now().Unix()%10000), StoreID: "", MerchantTradeDate: ecpay.FormatDatetime(time.Now()), PaymentType: ecpay.PaymentTypeAIO, TotalAmount: 2000, TradeDesc: "訂單測試", ItemName: ecpay.FormatItemName([]string{"商品1", "商品2"}), ReturnURL: "https://www.ecpay.com.tw/return_url.php", ChoosePayment: ecpay.ChoosePaymentTypeBarCode, ClientBackURL: "https://www.ecpay.com.tw/client_back_url.php", ItemURL: "https://www.ecpay.com.tw/item_url.php", Remark: "交易備註", OrderResultURL: "https://www.ecpay.com.tw/order_result_url.php", NeedExtraPaidInfo: ecpay.NeedExtraPaidInfoTypeYes, InvoiceMark: ecpay.InvoiceMarkTypeNo, CVSBarcode: &ecpay.CVSOrBarcodeParam{ StoreExpireDate: 15, PaymentInfoURL: "https://www.ecpay.com.tw/payment_info_url.php", }, } html, err := client.AioCheckOut(order) if err != nil { log.Fatal(err) } fmt.Println(html) }
Output:
Example (CreditCard) ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" "github.com/google/uuid" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } order := ecpay.Order{ MerchantTradeNo: fmt.Sprintf("%s%d", uuid.New().String()[:5], time.Now().Unix()%10000), StoreID: "", MerchantTradeDate: ecpay.FormatDatetime(time.Now()), PaymentType: ecpay.PaymentTypeAIO, TotalAmount: 2000, TradeDesc: "訂單測試", ItemName: ecpay.FormatItemName([]string{"商品1", "商品2"}), ReturnURL: "https://www.ecpay.com.tw/return_url.php", ChoosePayment: ecpay.ChoosePaymentTypeCredit, ClientBackURL: "https://www.ecpay.com.tw/client_back_url.php", ItemURL: "https://www.ecpay.com.tw/item_url.php", Remark: "交易備註", OrderResultURL: "https://www.ecpay.com.tw/order_result_url.php", NeedExtraPaidInfo: ecpay.NeedExtraPaidInfoTypeYes, InvoiceMark: ecpay.InvoiceMarkTypeNo, Credit: &ecpay.CreditParam{ BindingCard: ecpay.BindingCardTypeNo, Redeem: ecpay.RedeemTypeNo, UnionPay: ecpay.UnionPayTypeSelect, }, } html, err := client.AioCheckOut(order) if err != nil { log.Fatal(err) } fmt.Println(html) }
Output:
Example (CreditCardPeriod) ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" "github.com/google/uuid" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } order := ecpay.Order{ MerchantTradeNo: fmt.Sprintf("%s%d", uuid.New().String()[:5], time.Now().Unix()%10000), StoreID: "", MerchantTradeDate: ecpay.FormatDatetime(time.Now()), PaymentType: ecpay.PaymentTypeAIO, TotalAmount: 2000, TradeDesc: "訂單測試", ItemName: ecpay.FormatItemName([]string{"商品1", "商品2"}), ReturnURL: "https://www.ecpay.com.tw/return_url.php", ChoosePayment: ecpay.ChoosePaymentTypeCredit, ClientBackURL: "https://www.ecpay.com.tw/client_back_url.php", ItemURL: "https://www.ecpay.com.tw/item_url.php", Remark: "交易備註", OrderResultURL: "https://www.ecpay.com.tw/order_result_url.php", NeedExtraPaidInfo: ecpay.NeedExtraPaidInfoTypeYes, InvoiceMark: ecpay.InvoiceMarkTypeNo, Credit: &ecpay.CreditParam{ BindingCard: ecpay.BindingCardTypeNo, PeriodAmount: 2000, PeriodType: ecpay.PeriodTypeMonth, Frequency: 1, ExecTimes: 2, PeriodReturnURL: "https://www.ecpay.com.tw/receive.php", }, } html, err := client.AioCheckOut(order) if err != nil { log.Fatal(err) } fmt.Println(html) }
Output:
Example (CreditInstallment) ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" "github.com/google/uuid" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } order := ecpay.Order{ MerchantTradeNo: fmt.Sprintf("%s%d", uuid.New().String()[:5], time.Now().Unix()%10000), StoreID: "", MerchantTradeDate: ecpay.FormatDatetime(time.Now()), PaymentType: ecpay.PaymentTypeAIO, TotalAmount: 2000, TradeDesc: "訂單測試", ItemName: ecpay.FormatItemName([]string{"商品1", "商品2"}), ReturnURL: "https://www.ecpay.com.tw/return_url.php", ChoosePayment: ecpay.ChoosePaymentTypeCredit, ClientBackURL: "https://www.ecpay.com.tw/client_back_url.php", ItemURL: "https://www.ecpay.com.tw/item_url.php", Remark: "交易備註", OrderResultURL: "https://www.ecpay.com.tw/order_result_url.php", NeedExtraPaidInfo: ecpay.NeedExtraPaidInfoTypeYes, InvoiceMark: ecpay.InvoiceMarkTypeNo, Credit: &ecpay.CreditParam{ BindingCard: ecpay.BindingCardTypeNo, CreditInstallment: ecpay.FormatCreditInstallmentOption( ecpay.CreditInstallmentOption{ Month3: true, Month6: true, Month12: true, Month18: true, Month24: true, }, ), }, } html, err := client.AioCheckOut(order) if err != nil { log.Fatal(err) } fmt.Println(html) }
Output:
Example (Cvs) ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" "github.com/google/uuid" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } order := ecpay.Order{ MerchantTradeNo: fmt.Sprintf("%s%d", uuid.New().String()[:5], time.Now().Unix()%10000), StoreID: "", MerchantTradeDate: ecpay.FormatDatetime(time.Now()), PaymentType: ecpay.PaymentTypeAIO, TotalAmount: 2000, TradeDesc: "訂單測試", ItemName: ecpay.FormatItemName([]string{"商品1", "商品2"}), ReturnURL: "https://www.ecpay.com.tw/return_url.php", ChoosePayment: ecpay.ChoosePaymentTypeCVS, ClientBackURL: "https://www.ecpay.com.tw/client_back_url.php", ItemURL: "https://www.ecpay.com.tw/item_url.php", Remark: "交易備註", OrderResultURL: "https://www.ecpay.com.tw/order_result_url.php", NeedExtraPaidInfo: ecpay.NeedExtraPaidInfoTypeYes, InvoiceMark: ecpay.InvoiceMarkTypeNo, CVSBarcode: &ecpay.CVSOrBarcodeParam{ StoreExpireDate: 300, PaymentInfoURL: "https://www.ecpay.com.tw/payment_info_url.php", }, } html, err := client.AioCheckOut(order) if err != nil { log.Fatal(err) } fmt.Println(html) }
Output:
Example (GooglePay) ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" "github.com/google/uuid" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } order := ecpay.Order{ MerchantTradeNo: fmt.Sprintf("%s%d", uuid.New().String()[:5], time.Now().Unix()%10000), StoreID: "", MerchantTradeDate: ecpay.FormatDatetime(time.Now()), PaymentType: ecpay.PaymentTypeAIO, TotalAmount: 2000, TradeDesc: "訂單測試", ItemName: ecpay.FormatItemName([]string{"商品1...(*)", "商品2!!"}), ReturnURL: "https://www.ecpay.com.tw/return_url.php", ChoosePayment: ecpay.ChoosePaymentTypeGooglePay, ClientBackURL: "https://www.ecpay.com.tw/client_back_url.php", ItemURL: "https://www.ecpay.com.tw/item_url.php", Remark: "交易備註", OrderResultURL: "https://www.ecpay.com.tw/order_result_url.php", NeedExtraPaidInfo: ecpay.NeedExtraPaidInfoTypeYes, InvoiceMark: ecpay.InvoiceMarkTypeNo, } html, err := client.AioCheckOut(order) if err != nil { log.Fatal(err) } fmt.Println(html) }
Output:
Example (Invoice) ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" "github.com/google/uuid" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } order := ecpay.Order{ MerchantTradeNo: fmt.Sprintf("%s%d", uuid.New().String()[:5], time.Now().Unix()%10000), StoreID: "", MerchantTradeDate: ecpay.FormatDatetime(time.Now()), PaymentType: ecpay.PaymentTypeAIO, TotalAmount: 2000, TradeDesc: "訂單測試", ItemName: ecpay.FormatItemName([]string{"商品1", "商品2"}), ReturnURL: "https://www.ecpay.com.tw/return_url.php", ChoosePayment: ecpay.ChoosePaymentTypeATM, ClientBackURL: "https://www.ecpay.com.tw/client_back_url.php", ItemURL: "https://www.ecpay.com.tw/item_url.php", Remark: "交易備註", OrderResultURL: "https://www.ecpay.com.tw/order_result_url.php", NeedExtraPaidInfo: ecpay.NeedExtraPaidInfoTypeYes, InvoiceMark: ecpay.InvoiceMarkTypeYes, Invoice: &ecpay.InvoiceParam{ RelateNumber: "Tea9527", CustomerID: "TEA_0000001", CustomerIdentifier: "53348111", CustomerName: "客戶名稱", CustomerAddr: "客戶地址", CustomerPhone: "0912345678", CustomerEmail: "abc@ecpay.com.tw", ClearanceMark: ecpay.ClearanceMarkTypeCustoms, TaxType: ecpay.TaxTypeZero, Donation: ecpay.DonationTypeNo, Print: ecpay.PrintTypeYes, InvoiceItemName: ecpay.FormatInvoiceItem([]string{"測試商品1", "測試商品2"}), InvoiceItemCount: ecpay.FormatInvoiceItem([]string{"2", "3"}), InvoiceItemWord: ecpay.FormatInvoiceItem([]string{"個", "包"}), InvoiceItemPrice: ecpay.FormatInvoiceItem([]string{"35", "10"}), InvoiceItemTaxType: ecpay.FormatInvoiceItem([]string{string(ecpay.TaxTypeFree), string(ecpay.TaxTypeFree)}), InvoiceRemark: ecpay.FormatInvoiceItem([]string{"測試商品1的說明", "測試商品2的說明"}), DelayDay: 1, }, } html, err := client.AioCheckOut(order) if err != nil { log.Fatal(err) } fmt.Println(html) }
Output:
Example (WebATM) ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" "github.com/google/uuid" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } order := ecpay.Order{ MerchantTradeNo: fmt.Sprintf("%s%d", uuid.New().String()[:5], time.Now().Unix()%10000), StoreID: "", MerchantTradeDate: ecpay.FormatDatetime(time.Now()), PaymentType: ecpay.PaymentTypeAIO, TotalAmount: 2000, TradeDesc: "訂單測試", ItemName: ecpay.FormatItemName([]string{"商品1", "商品2"}), ReturnURL: "https://www.ecpay.com.tw/return_url.php", ChoosePayment: ecpay.ChoosePaymentTypeWebATM, ClientBackURL: "https://www.ecpay.com.tw/client_back_url.php", ItemURL: "https://www.ecpay.com.tw/item_url.php", Remark: "交易備註", OrderResultURL: "https://www.ecpay.com.tw/order_result_url.php", NeedExtraPaidInfo: ecpay.NeedExtraPaidInfoTypeYes, InvoiceMark: ecpay.InvoiceMarkTypeNo, } html, err := client.AioCheckOut(order) if err != nil { log.Fatal(err) } fmt.Println(html) }
Output:
func (*Client) DoAction ¶
func (c *Client) DoAction(action CreditCardAction) (map[string]interface{}, error)
DoAction fires an credit card refund action (信用卡請退款功能).
Example ¶
package main import ( "fmt" "log" "github.com/toastcheng/ecpay-sdk-go/ecpay" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } a := ecpay.CreditCardAction{ MerchantTradeNo: "2000132", TradeNo: "NO123", Action: ecpay.ActionTypeC, TotalAmount: 100, } resp, err := client.DoAction(a) if err != nil { log.Fatal(err) } fmt.Println(resp) }
Output:
func (*Client) FundingReconDetail ¶
FundingReconDetail downloads the member statement (下載信用卡撥款對帳資料檔).
Example ¶
package main import ( "fmt" "log" "github.com/toastcheng/ecpay-sdk-go/ecpay" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } statement := ecpay.Statement{ MerchantTradeNo: "NO123", PayDateType: ecpay.PayDateTypeClose, BeginDate: "2018-02-12", EndDate: "2018-02-12", MediaFormated: "1", } resp, err := client.FundingReconDetail(statement) if err != nil { log.Fatal(err) } fmt.Println(resp) }
Output:
func (*Client) QueryCreditCardPeriodInfo ¶
func (c *Client) QueryCreditCardPeriodInfo(info CreditCardPeriodInfo) (map[string]interface{}, error)
QueryCreditCardPeriodInfo queries credit card periodic payment (信用卡定期定額訂單查詢).
Example ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } info := ecpay.CreditCardPeriodInfo{ MerchantTradeNo: "kncs20180804103309", TimeStamp: time.Now().Unix(), } resp, err := client.QueryCreditCardPeriodInfo(info) if err != nil { log.Fatal(err) } fmt.Println(resp) }
Output:
func (*Client) QueryPaymentInfo ¶
func (c *Client) QueryPaymentInfo(info PaymentInfo) (map[string]interface{}, error)
QueryPaymentInfo queries payment info of ATM/CVS/Barcode (查詢 ATM/CVS/BARCODE 取號結果).
Example ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } info := ecpay.PaymentInfo{ MerchantTradeNo: "kncs20180804103309", TimeStamp: time.Now().Unix(), } resp, err := client.QueryPaymentInfo(info) if err != nil { log.Fatal(err) } fmt.Println(resp) }
Output:
func (*Client) QueryTrade ¶
QueryTrade queries a single creadit card trade (查詢信用卡單筆明細記錄).
Example ¶
package main import ( "fmt" "log" "github.com/toastcheng/ecpay-sdk-go/ecpay" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } trade := ecpay.Trade{ CreditRefundID: "10123456", CreditAmount: 100, CreditCheckCode: "59997889", } resp, err := client.QueryTrade(trade) if err != nil { log.Fatal(err) } fmt.Println(resp) }
Output:
func (*Client) QueryTradeInfo ¶
QueryTradeInfo queries a single trade info (查詢訂單).
Example ¶
package main import ( "fmt" "log" "time" "github.com/toastcheng/ecpay-sdk-go/ecpay" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } info := ecpay.TradeInfo{ MerchantTradeNo: "kncs20180804103309", TimeStamp: string(time.Now().Unix()), } resp, err := client.QueryTradeInfo(info) if err != nil { log.Fatal(err) } fmt.Println(resp) }
Output:
func (*Client) TradeNoAio ¶
func (c *Client) TradeNoAio(statement CreditCardStatement) (string, error)
TradeNoAio downloads the member statement (下載特店對帳媒體檔).
Example ¶
package main import ( "fmt" "log" "github.com/toastcheng/ecpay-sdk-go/ecpay" ) func main() { client, err := ecpay.NewClient("<MERCHANT_ID>", "<HASH_KEY>", "<HASH_IV>", ecpay.WithSandbox) if err != nil { log.Fatalf("failed to new client: %s", err) } statement := ecpay.CreditCardStatement{ DateType: ecpay.DateTypeOrder, BeginDate: "2018-02-12", EndDate: "2018-02-12", PaymentType: ecpay.MerchantPaymentTypeCreditCard, MerchantTradeNo: "NO123", MediaFormated: ecpay.MediaFormatedTypeNew, AllocateStatus: ecpay.AllocateStatusTypeDone, PaymentStatus: ecpay.PaymentStatusTypePaid, } resp, err := client.TradeNoAio(statement) if err != nil { log.Fatal(err) } fmt.Println(resp) }
Output:
type ClientOption ¶
ClientOption extra option to configure the ECPay client.
type CreditCardAction ¶
type CreditCardAction struct { MerchantTradeNo string `json:"MerchantTradeNo,omitempty"` TradeNo string `json:"TradeNo,omitempty"` Action ActionType `json:"Action,omitempty"` PlatformID string `json:"PlatformID,omitempty"` TotalAmount int `json:"TotalAmount,omitempty"` }
CreditCardAction defines the struct of trade info.
func (CreditCardAction) ToFormData ¶
func (a CreditCardAction) ToFormData() url.Values
ToFormData transform the Trade struct to url.Values
func (CreditCardAction) Validate ¶
func (a CreditCardAction) Validate() (bool, error)
Validate validate if the trade struct is valid.
type CreditCardPeriodInfo ¶
type CreditCardPeriodInfo struct { MerchantTradeNo string `json:"MerchantTradeNo,omitempty"` TimeStamp int64 `json:"TimeStamp,omitempty"` PlatformID string `json:"PlatformID,omitempty"` }
CreditCardPeriodInfo defines the struct of trade info.
func (CreditCardPeriodInfo) ToFormData ¶
func (c CreditCardPeriodInfo) ToFormData() url.Values
ToFormData transform the Trade struct to url.Values
func (CreditCardPeriodInfo) Validate ¶
func (c CreditCardPeriodInfo) Validate() (bool, error)
Validate validate if the trade struct is valid.
type CreditCardStatement ¶
type CreditCardStatement struct { MerchantTradeNo string `json:"MerchantTradeNo,omitempty"` DateType DateType `json:"DateType,omitempty"` BeginDate string `json:"BeginDate,omitempty"` EndDate string `json:"EndDate,omitempty"` PaymentType MerchantPaymentType `json:"PaymentType,omitempty"` PlatformStatus PlatformStatusType `json:"PlatformStatus,omitempty"` PaymentStatus PaymentStatusType `json:"PaymentStatus,omitempty"` AllocateStatus AllocateStatusType `json:"AllocateStatus,omitempty"` MediaFormated MediaFormatedType `json:"MediaFormated,omitempty"` CharSet CharSetType `json:"CharSet,omitempty"` }
CreditCardStatement defines the struct of trade info.
func (CreditCardStatement) ToFormData ¶
func (s CreditCardStatement) ToFormData() url.Values
ToFormData transform the Trade struct to url.Values
func (CreditCardStatement) Validate ¶
func (s CreditCardStatement) Validate() (bool, error)
Validate validate if the trade struct is valid.
type CreditInstallmentOption ¶
type CreditParam ¶
type CreditParam struct { // BindingCard (記憶卡號). BindingCard BindingCardType `json:"BindingCard,omitempty"` // MerchantMemberID (記憶卡號識別碼). MerchantMemberID string `json:"MerchantMemberID,omitempty"` // Language (語系設定). Language string `json:"Language,omitempty"` // 一次付清 // Redeem (信用卡是否使用紅利折抵). Redeem RedeemType `json:"Redeem,omitempty"` // UnionPay (銀聯卡交易選項). UnionPay UnionPayType `json:"UnionPay,omitempty"` // 分期付款 // CreditInstallment (刷卡分期期數). CreditInstallment string `json:"CreditInstallment,omitempty"` // 定期定額 PeriodAmount int `json:"PeriodAmount,omitempty"` // PeriodType (週期種類). PeriodType PeriodType `json:"PeriodType,omitempty"` // Frequency (執行頻率). Frequency int `json:"Frequency,omitempty"` // ExecTimes (執行次數). ExecTimes int `json:"ExecTimes,omitempty"` // PeriodReturnURL (定期定額的執行結果回應URL). PeriodReturnURL string `json:"PeriodReturnURL,omitempty"` }
CreditParam defines the parameters tailored for credit card transaction.
type DonationType ¶
type DonationType string
DonationType defines the struct of donation options (捐贈).
const ( // DonationTypeYes yes (捐贈). DonationTypeYes DonationType = "1" // DonationTypeNo no (不捐贈或統一編號CustomerIdentifier有值). DonationTypeNo DonationType = "2" )
type IgnorePaymentOption ¶
type InvoiceMarkType ¶
type InvoiceMarkType string
InvoiceMarkType defines the struct of invoice options (電子發票開立註記).
const ( InvoiceMarkTypeYes InvoiceMarkType = "Y" InvoiceMarkTypeNo InvoiceMarkType = "N" )
type InvoiceParam ¶
type InvoiceParam struct { // RelateNumber (特店自訂編號). RelateNumber string `json:"RelateNumber,omitempty"` // TaxType (課稅類別). TaxType TaxType `json:"TaxType,omitempty"` // Donation (捐贈註記). Donation DonationType `json:"Donation,omitempty"` // Print (列印註記). Print PrintType `json:"Print,omitempty"` // InvoiceItemName (商品名稱). InvoiceItemName string `json:"InvoiceItemName,omitempty"` // InvoiceItemCount (商品數量). InvoiceItemCount string `json:"InvoiceItemCount,omitempty"` // DelayDay (延遲天數). DelayDay int `json:"DelayDay,omitempty"` // InvType (字軌類別). InvType string `json:"InvType,omitempty"` // CustomerID (客戶編號). CustomerID string `json:"CustomerID,omitempty"` // CustomerIdentifier (統一編號). CustomerIdentifier string `json:"CustomerIdentifier,omitempty"` // CustomerName (客戶名稱). CustomerName string `json:"CustomerName,omitempty"` // CustomerAddr (客戶地址). CustomerAddr string `json:"CustomerAddr,omitempty"` // CustomerPhone (客戶手機號碼). CustomerPhone string `json:"CustomerPhone,omitempty"` // CustomerEmail (客戶電子信箱). CustomerEmail string `json:"CustomerEmail,omitempty"` // ClearanceMark (通關方式). ClearanceMark ClearanceMarkType `json:"ClearanceMark,omitempty"` // CarrierType (載具類別). CarrierType CarrierType `json:"CarruerType,omitempty"` // CarrierNum (載具編號). CarrierNum string `json:"CarruerNum,omitempty"` // LoveCode (捐贈碼). LoveCode string `json:"LoveCode,omitempty"` // InvoiceItemWord (商品單位). InvoiceItemWord string `json:"InvoiceItemWord,omitempty"` // InvoiceItemPrice (商品價格). InvoiceItemPrice string `json:"InvoiceItemPrice,omitempty"` // InvoiceItemTaxType (商品課稅別). InvoiceItemTaxType string `json:"InvoiceItemTaxType,omitempty"` // InvoiceRemark (備註). InvoiceRemark string `json:"InvoiceRemark,omitempty"` }
InvoiceParam defines the parameters for invoice specific settings.
type InvoiceType ¶
type InvoiceType string
InvoiceType defines the struct of invoice options (發票).
const ( // InvoiceTypeGeneral 一般稅額 InvoiceTypeGeneral InvoiceType = "07" // InvoiceTypeSpecial 特種稅額 InvoiceTypeSpecial InvoiceType = "08" )
type LanguageType ¶
type LanguageType string
LanguageType defines the struct of language options (語系設定).
const ( LanguageTypeEnglish LanguageType = "ENG" LanguageTypeKorean LanguageType = "KOR" LanguageTypeJapanese LanguageType = "JPN" LanguageTypeSimplifiedChinese LanguageType = "CHI" )
type MediaFormatedType ¶
type MediaFormatedType string
const ( // MediaFormatedTypeOld (舊版格式). MediaFormatedTypeOld MediaFormatedType = "0" // MediaFormatedTypeNew (新版格式). MediaFormatedTypeNew MediaFormatedType = "1" )
type MerchantPaymentType ¶
type MerchantPaymentType string
MerchantPaymentType defines the struct of pay date type options (查詢日期類別).
const ( // MerchantPaymentTypeCreditCard (付款日期). MerchantPaymentTypeCreditCard MerchantPaymentType = "01" // DateTypeApproriation (網路ATM). MerchantPaymentTypeWebATM MerchantPaymentType = "02" // MerchantPaymentTypeATM (ATM). MerchantPaymentTypeATM MerchantPaymentType = "03" // MerchantPaymentTypeCVS (超商代碼). MerchantPaymentTypeCVS MerchantPaymentType = "04" // MerchantPaymentTypeBarcode (超商條碼). MerchantPaymentTypeBarcode MerchantPaymentType = "05" )
type NeedExtraPaidInfoType ¶
type NeedExtraPaidInfoType string
NeedExtraPaidInfoType defines the struct of extra payment info options (是否需要額外的付款資訊).
const ( NeedExtraPaidInfoTypeYes NeedExtraPaidInfoType = "Y" NeedExtraPaidInfoTypeNo NeedExtraPaidInfoType = "N" )
type Order ¶
type Order struct { // MerchantTradeNo (特店交易編號). MerchantTradeNo string `json:"MerchantTradeNo,omitempty"` // StoreID (特店旗下店舖代號). StoreID string `json:"StoreID,omitempty"` // MerchantTradeDate yyyy/MM/dd HH:mm:ss (特店交易時間). MerchantTradeDate string `json:"MerchantTradeDate,omitempty"` // TotalAmount (交易金額). TotalAmount int `json:"TotalAmount,omitempty"` // TradeDesc (交易描述). TradeDesc string `json:"TradeDesc,omitempty"` // ItemName (商品名稱). ItemName string `json:"ItemName,omitempty"` // ItemURL (商品銷售網址). ItemURL string `json:"ItemURL,omitempty"` // ReturnURL (付款完成通知回傳網址). ReturnURL string `json:"ReturnURL,omitempty"` // ClientBackURL (Client端返回特店的按鈕連結). ClientBackURL string `json:"ClientBackURL,omitempty"` // OrderResultURL (Client端回傳付款結果網址). OrderResultURL string `json:"OrderResultURL,omitempty"` // PaymentType (交易類型). PaymentType PaymentType `json:"PaymentType,omitempty"` // ChoosePayment (選擇預設付款方式). ChoosePayment ChoosePaymentType `json:"ChoosePayment,omitempty"` // ChooseSubPayment (付款子項目). ChooseSubPayment ChooseSubpaymentType `json:"ChooseSubPayment,omitempty"` // Remark (備註欄位). Remark string `json:"Remark,omitempty"` // NeedExtraPaidInfo (是否需要額外的付款資訊). NeedExtraPaidInfo NeedExtraPaidInfoType `json:"NeedExtraPaidInfo,omitempty"` // DeviceSource (裝置來源). DeviceSource string `json:"DeviceSource,omitempty"` // IgnorePayment (隱藏付款). IgnorePayment string `json:"IgnorePayment,omitempty"` // PlatformID (特約合作平台商代號). PlatformID string `json:"PlatformID,omitempty"` // InvoiceMark (電子發票開立註記). InvoiceMark InvoiceMarkType `json:"InvoiceMark,omitempty"` // CustomField1 (自訂名稱欄位1). CustomField1 string `json:"CustomField1,omitempty"` // CustomField2 (自訂名稱欄位2). CustomField2 string `json:"CustomField2,omitempty"` // CustomField3 (自訂名稱欄位3). CustomField3 string `json:"CustomField3,omitempty"` // CustomField4 (自訂名稱欄位4). CustomField4 string `json:"CustomField4,omitempty"` // EncryptType (CheckMacValue 加密類型). EncryptType string `json:"EncryptType,omitempty"` // Language (語系設定). Language LanguageType `json:"Language,omitempty"` ATM *ATMParam `json:"ATM,omitempty"` CVSBarcode *CVSOrBarcodeParam `json:"CVSBarcode,omitempty"` Credit *CreditParam `json:"Credit,omitempty"` Invoice *InvoiceParam `json:"Invoice,omitempty"` }
Order defines the structure of an order.
func (Order) ToFormData ¶
ToFormData transform the Order struct to url.Values
type PayDateType ¶
type PayDateType string
PayDateType defines the struct of pay date type options (查詢日期類別).
const ( PayDateTypeFund PayDateType = "fund" PayDateTypeClose PayDateType = "close" PayDateTypeEnter PayDateType = "enter" )
type PaymentInfo ¶
type PaymentInfo struct { MerchantTradeNo string `json:"MerchantTradeNo,omitempty"` TimeStamp int64 `json:"TimeStamp,omitempty"` PlatformID string `json:"PlatformID,omitempty"` }
PaymentInfo defines the struct of trade info.
func (PaymentInfo) ToFormData ¶
func (t PaymentInfo) ToFormData() url.Values
ToFormData transform the Trade struct to url.Values
func (PaymentInfo) Validate ¶
func (t PaymentInfo) Validate() (bool, error)
Validate validate if the trade struct is valid.
type PaymentStatusType ¶
type PaymentStatusType string
const ( // PaymentStatusTypeUnpaid (未付款). PaymentStatusTypeUnpaid PaymentStatusType = "0" // PaymentStatusTypePaid (已付款). PaymentStatusTypePaid PaymentStatusType = "1" // PaymentStatusTypeFailed (訂單失敗). PaymentStatusTypeFailed PaymentStatusType = "2" )
type PaymentType ¶
type PaymentType string
PaymentType defines the struct of payment type options (銀聯卡交易選項).
const ( // PaymentTypeAIO all in one. PaymentTypeAIO PaymentType = "aio" // PaymentTypeWebATMTaishin Taishin Bank (台新銀行). PaymentTypeWebATMTaishin PaymentType = "WebATM_TAISHIN" // PaymentTypeWebATMBOT Bank of Taiwan (台灣銀行). PaymentTypeWebATMBOT PaymentType = "WebATM_BOT" // PaymentTypeWebATMChinaTrust ChinaTrust Bank (中國信託). PaymentTypeWebATMChinaTrust PaymentType = "WebATM_CHINATRUST" // PaymentTypeWebATMCathay Cathay Bank (花旗銀行). PaymentTypeWebATMCathay PaymentType = "WebATM_CATHAY" // PaymentTypeWebATMLand Land Bank (土地銀行). PaymentTypeWebATMLand PaymentType = "WebATM_LAND" // PaymentTypeWebATMSinoPac SinoPac Bank (永豐銀行). PaymentTypeWebATMSinoPac PaymentType = "WebATM_SINOPAC" // PaymentTypeATMESUN E.SUN Bank (玉山銀行). PaymentTypeATMESUN PaymentType = "ATM_ESUN" // PaymentTypeATMFubon Fubon (富邦銀行). PaymentTypeATMFubon PaymentType = "ATM_FUBON" // PaymentTypeATMFirst First Commercial Bank (第一銀行). PaymentTypeATMFirst PaymentType = "ATM_FIRST" // PaymentTypeATMCathay Cathay Bank (花旗銀行). PaymentTypeATMCathay PaymentType = "ATM_CATHAY" // PaymentTypeCVSCVS convenience store payment code (超商代碼繳款). PaymentTypeCVSCVS PaymentType = "CVS_CVS" // PaymentTypeCVSFamily Family mart (全家). PaymentTypeCVSFamily PaymentType = "CVS_FAMILY" // PaymentTypeCVSIbon 7-11 ibon. PaymentTypeCVSIbon PaymentType = "CVS_IBON" // PaymentTypeCreditCreditCard credit card (信用卡). PaymentTypeCreditCreditCard PaymentType = "Credit_CreditCard" )
type PeriodType ¶
type PeriodType string
PeriodType defines the struct of period options (週期種類).
const ( // PeriodTypeYear year. PeriodTypeYear PeriodType = "Y" // PeriodTypeMonth month. PeriodTypeMonth PeriodType = "M" // PeriodTypeDay day. PeriodTypeDay PeriodType = "D" )
type PlatformStatusType ¶
type PlatformStatusType string
const ( // PlatformStatusTypeAll (全部). PlatformStatusTypeAll PlatformStatusType = "0" // PlatformStatusTypeNormal (一般). PlatformStatusTypeNormal PlatformStatusType = "1" // PlatformStatusTypePlatform (平台). PlatformStatusTypePlatform PlatformStatusType = "2" )
type RedeemType ¶
type RedeemType string
RedeemType defines the struct of redeem options (信用卡是否使用紅利折抵).
const ( RedeemTypeYes RedeemType = "Y" RedeemTypeNo RedeemType = "N" )
type Statement ¶
type Statement struct { MerchantTradeNo string `json:"MerchantTradeNo,omitempty"` PayDateType PayDateType `json:"PayDateType,omitempty"` BeginDate string `json:"BeginDate,omitempty"` EndDate string `json:"EndDate,omitempty"` PaymentType string `json:"PaymentType,omitempty"` PlatformStatus string `json:"PlatformStatus,omitempty"` PaymentStatus string `json:"PaymentStatus,omitempty"` AllocateStatus string `json:"AllocateStatus,omitempty"` MediaFormated string `json:"MediaFormated,omitempty"` CharSet string `json:"CharSet,omitempty"` }
Statement defines the struct of trade info.
func (Statement) ToFormData ¶
ToFormData transform the Trade struct to url.Values
type Trade ¶
type Trade struct { CreditRefundID string `json:"CreditRefundId,omitempty"` CreditAmount int `json:"CreditAmount,omitempty"` CreditCheckCode string `json:"CreditCheckCode,omitempty"` }
Trade defines the struct of trade.
func (Trade) ToFormData ¶
ToFormData transform the Trade struct to url.Values
type TradeInfo ¶
type TradeInfo struct { MerchantTradeNo string `json:"MerchantTradeNo,omitempty"` TimeStamp string `json:"TimeStamp,omitempty"` PlatformID string `json:"PlatformID,omitempty"` }
TradeInfo defines the struct of trade info.
func (TradeInfo) ToFormData ¶
ToFormData transform the Trade struct to url.Values
type UnionPayType ¶
type UnionPayType string
UnionPayType defines the struct of UnionPay options (銀聯卡交易選項).
const ( // UnionPayTypeSelect customer choose whether use UnionPay or not in webpage (消費者於交易頁面可選擇是否使用銀聯交易). UnionPayTypeSelect UnionPayType = "0" // UnionPayTypeOnly use UnionPay (只使用銀聯卡交易,且綠界會將交易頁面直接導到銀聯網站). UnionPayTypeOnly UnionPayType = "1" // UnionPayTypeHidden do not use UnionPay (不可使用銀聯卡,綠界會將交易頁面隱藏銀聯選項). UnionPayTypeHidden UnionPayType = "2" )