diff --git a/package/pay/taptap/webhook.go b/package/pay/taptap/webhook.go new file mode 100644 index 0000000..16b6b4f --- /dev/null +++ b/package/pay/taptap/webhook.go @@ -0,0 +1,40 @@ +package taptap + +import "github.com/gogf/gf/v2/encoding/gjson" + +type WebhookData struct { + Order *Order `json:"order"` + EventType string `json:"event_type"` +} + +// Order 订单信息结构体 +type Order struct { + OrderID string `json:"order_id" dc:"订单唯一ID"` + PurchaseToken string `json:"purchase_token" dc:"用于订单核销的token"` + ClientID string `json:"client_id" dc:"应用的Client ID"` + OpenID string `json:"open_id" dc:"用户的开放平台ID"` + UserRegion string `json:"user_region" dc:"用户地区"` + GoodsOpenID string `json:"goods_open_id" dc:"商品唯一ID"` + GoodsName string `json:"goods_name" dc:"商品名称"` + Status string `json:"status" dc:"订单状态"` + Amount string `json:"amount" dc:"金额(本币金额x1,000,000)"` + Currency string `json:"currency" dc:"币种"` + CreateTime string `json:"create_time" dc:"创建时间"` + PayTime string `json:"pay_time" dc:"支付时间"` + Extra string `json:"extra" dc:"商户自定义数据,如角色信息等,长度不超过255 UTF-8字符"` +} + +func (p *pTapTap) Webhook(body []byte) (res string, err error) { + var data *WebhookData + gjson.DecodeTo(body, &data) + + switch data.EventType { + case "charge.succeeded": //充值成功 + //todo 处理订单信息 + + case "refund.succeeded": //退款成功 + case "refund.failed": //退款失败 + } + + return +}