Golang SDK
Trang thanh toán payOS
Khám phá mã nguồn mẫu hoàn chỉnh được phát triển bằng Golang. Mã nguồn server-side chuyển hướng đến trang thanh toán do payOS phát triển. Trước khi bắt đầu, hãy tạo một kênh thanh toán trên trang payOS.
GithubTài liệu
Xem tài liệu API payOS để biết thêm thông tin.
Cài đặt thư viện payOS cho dự án Golang
go get github.com/payOSHQ/payos-lib-golang
Khởi tạo đối tượng PayOS
Bạn cần khởi tạo đối tượng PayOS
bằng ckientId
, apiKey
và checksumKey
của cổng thanh toán mà bạn đã tạo.
import (
"github.com/payOSHQ/payos-lib-golang"
)
func main() {
payos.Key(clientId, apiKey, checksumKey)
}
Các phương thức có trong đối tượng PayOS
Phương thức | Kiểu tham số đầu vào | Mô tả | Kiểu trả về |
---|---|---|---|
CreatePaymentLink | CheckoutRequestType | Tạo link thanh toán cho dữ liệu đơn hàng | CheckoutResponseDataType |
GetPaymentLinkInformation | string | Lấy thông tin thanh toán của đơn hàng đã tạo link thanh toán. | PaymentLinkDataType |
CancelPaymentLink | string , *string | Hủy link thanh toán của đơn hàng. | PaymentLinkDataType |
ConfirmWebhook | string | Xác thực URL Webhook của kênh thanh toán và thêm hoặc cập nhật URL Webhook cho Kênh thanh toán đó nếu thành công | string |
VerifyPaymentWebhookData | WebhookType | Xác minh dữ liệu nhận được qua webhook sau khi thanh toán | WebhookDataType |
Phương thức CreatePaymentLink
Tạo link thanh toán cho dữ liệu đơn hàng với đầu vào là CheckoutRequestType
và trả về CheckoutResponseDataType
.
Xem hướng dẫn
package main
import (
"fmt"
"log"
"github.com/payOSHQ/payos-lib-golang"
)
func main(){
payos.Key(clientId, apiKey,checksumKey)
body := CheckoutRequestType{
OrderCode: 12345,
Amount: 2000,
Items: []payos.Item{
{
Name: "Mỳ tôm Hảo Hảo ly",
Price: 2000,
Quantity: 1,
},
},
Description: "Thanh toán đơn hàng",
CancelUrl: "http://localhost:8080/cancel/",
ReturnUrl: "http://localhost:8080/success/",
}
data, err := CreatePaymentLink(body)
if err != nil {
log.Fatal(err)
}
fmt.Println(data)
}
Phương thức GetPaymentLinkInformation
Lấy thông tin thanh toán của đơn hàng đã tạo link thanh toán với đầu vào là string
là orderCode
và trả về PaymentLinkDataType
.
Xem hướng dẫn
package main
import (
"fmt"
"log"
"github.com/payOSHQ/payos-lib-golang"
)
func main(){
payos.Key(clientId, apiKey,checksumKey)
data, err := GetPaymentLinkInformation("12345")
if err != nil {
log.Fatal(err)
}
fmt.Println(data)
}
Phương thức CancelPaymentLink
Hủy link thanh toán của đơn hàng với đầu vào là string
là orderCode
và *string
là reason
và trả về PaymentLinkDataType
.
Xem hướng dẫn
package main
import (
"fmt"
"log"
"github.com/payOSHQ/payos-lib-golang"
)
func main(){
payos.Key(clientId, apiKey,checksumKey)
cancelReason := "Khách hàng hủy đơn hàng"
data, err := CancelPaymentLink("12345", &cancelReason)
}
Phương thức ConfirmWebhook
Xác thực URL Webhook của kênh thanh toán và thêm hoặc cập nhật URL Webhook cho Kênh thanh toán đó nếu thành công với đầu vào là string
là webhookUrl
và trả về string
.
Xem hướng dẫn
package main
import (
"fmt"
"log"
"github.com/payOSHQ/payos-lib-golang"
)
func main(){
payos.Key(clientId, apiKey,checksumKey)
data, err := ConfirmWebhook("http://yourdomain.com/webhook/")
}
Phương thức VerifyPaymentWebhookData
Xác minh dữ liệu nhận được qua webhook sau khi thanh toán với đầu vào là WebhookType
và trả về WebhookDataType
.
Xem hướng dẫn
package main
import (
"fmt"
"log"
"github.com/payOSHQ/payos-lib-golang"
)
func main(){
payos.Key(clientId, apiKey,checksumKey)
body := WebhookType{}
data, err := VerifyPaymentWebhookData(body)
}
Các kiểu dữ liệu
Kiểu dữ liệu CheckoutRequestType
type CheckoutRequestType struct {
OrderCode int64 `json:"orderCode"` // Mã đơn hàng
Amount int `json:"amount"` // Tổng tiền đơn hàng
Description string `json:"description"` // Mô tả đơn hàng, được dùng làm nội dung chuyển khoản
CancelUrl string `json:"cancelUrl"` // URL của trang web hoặc ứng dụng sẽ được chuyển tới khi khách hàng hủy thanh toán
ReturnUrl string `json:"returnUrl"` // URL của trang web hoặc ứng dụng sẽ được chuyển tới khi khách hàng thanh toán thành công
Signature *string `json:"signature"` // Chữ ký cho dữ liệu của đơn hàng, có chức năng kiểm tra tính toàn vẹn của dữ liệu
Items []Item `json:"items"` // Danh sách sản phẩm
BuyerName *string `json:"buyerName"` // Tên người mua
BuyerEmail *string `json:"buyerEmail"` // Email người mua
BuyerPhone *string `json:"buyerPhone"` // Số điện thoại người mua
BuyerAddress *string `json:"buyerAddress"` // Địa chỉ người mua
ExpiredAt *int `json:"expiredAt"` // Thời gian hết hạn của link thanh toán
}
Kiểu dữ liệu CheckoutResponseDataType
type CheckoutResponseDataType struct {
Bin string `json:"bin"` // Mã BIN ngân hàng
AccountNumber string `json:"accountNumber"` // Số tài khoản của kênh thanh toán
AccountName string `json:"accountName"` // Tên chủ tài khoản của kênh thanh toán
Amount int `json:"amount"` // Tổng tiền đơn hàng
Description string `json:"description"` // Mô tả đơn hàng, được dùng làm nội dung chuyển khoản
OrderCode int64 `json:"orderCode"` // Mã đơn hàng
Currency string `json:"currency"` // Đơn vị tiền tệ
PaymentLinkId string `json:"paymentLinkId"` // Mã link thanh toán
Status string `json:"status"` // Trạng thái của link thanh toán
CheckoutUrl string `json:"checkoutUrl"` // Đường dẫn trang thanh toán
QRCode string `json:"qrCode"` // Mã QR thanh toán
}
Kiểu dữ liệu PaymentLinkDataType
type PaymentLinkDataType struct {
Id string `json:"id"` // Mã link thanh toán
OrderCode int64 `json:"orderCode"` // Mã đơn hàng
Amount int `json:"amount"` // Tổng tiền đơn hàng
AmountPaid int `json:"amontPaid"` // Số tiền đã thanh toán
AmountRemaining int `json:"amountRemaining"` // Số tiền cần thanh toán còn lại
Status string `json:"status"` // Trạng thái của link thanh toán
CreateAt string `json:"createAt"` // Thời gian tạo link thanh toán
Transactions []TransactionType `json:"transactions"` // Danh sách các giao dịch
CancellationReason *string `json:"cancellationReason"`// Lý do hủy link thanh toán nếu liên kết đã bị hủy
CancelAt *string `json:"cancelAt"` // Thời gian hủy link thanh toán
}
Kiểu dữ liệu TransactionType
type TransactionType struct {
Reference string `json:"reference"` // Mã tham chiếu của giao dịch
Amount int `json:"amount"` // Số tiền chuyển khoản của giao dịch
AccountNumber string `json:"accountNumber"` // Số tài khoản nhận tiền (tài khoản của kênh thanh toán)
Description string `json:"description"` // Nội dung chuyển khoản
TransactionDateTime string `json:"transactionDateTime"` // Thời gian giao dịch
VirtualAccountName *string `json:"virtualAccountName"` // Tên chủ tài khoản ảo
VirtualAccountNumber *string `json:"virtualAccountNumber"` // Số tài khoản ảo
CounterAccountBankId *string `json:"counterAccountBankId"` // Mã ngân hàng đối ứng
CounterAccountBankName *string `json:"counterAccountBankName"` // Tên ngân hàng đối ứng
CounterAccountName *string `json:"counterAccountName"` // Tên chủ tài khoản đối ứng
CounterAccountNumber *string `json:"counterAccountNumber"` // Số tài khoản đối ứng
}
Kiểu dữ liệu WebhookType
type WebhookType struct {
Code string `json:"code"` // Mã lỗi
Desc string `json:"desc"` // Mô tả lỗi
Success bool `json:"success"` // Trạng thái của webhook
Data *WebhookDataType `json:"data"` // Dữ liệu webhook
Signature string `json:"signature"` // Chữ ký số của dữ liệu webhook, dùng để kiểm tra tính toàn vẹn của dữ liệu
}
Kiểu dữ liệu WebhookDataType
type WebhookDataType struct {
OrderCode int64 `json:"orderCode"` // Mã đơn hàng
Amount int `json:"amount"` // Số tiền chuyển khoản
Description string `json:"description"` // Mô tả đơn hàng, được dùng làm nội dung chuyển khoản
AccountNumber string `json:"accountNumber"` // Số tài khoản của kênh thanh toán
Reference string `json:"reference"` // Mã tham chiếu của giao dịch
TransactionDateTime string `json:"transactionDateTime"` // Thời gian giao dịch
Currency string `json:"currency"` // Đơn vị tiền tệ
PaymentLinkId string `json:"paymentLinkId"` // Mã link thanh toán
Code string `json:"code"` // Mã lỗi
Desc string `json:"desc"` // Mô tả lỗi
CounterAccountBankId *string `json:"counterAccountBankId"` // Mã ngân hàng đối ứng
CounterAccountBankName *string `json:"counterAccountBankName"` // Tên ngân hàng đối ứng
CounterAccountName *string `json:"counterAccountName"` // Tên chủ tài khoản đối ứng
CounterAccountNumber *string `json:"counterAccountNumber"` // Số tài khoản đối ứng
VirtualAccountName *string `json:"virtualAccountName"` // Tên chủ tài khoản ảo
VirtualAccountNumber *string `json:"virtualAccountNumber"` // Số tài khoản ảo
}