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.
Tà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
}