Files
baseapi/platformapi/kuaishou_mini/kuaishou_callback.go
邹宗楠 acc9e8b144 1
2023-06-07 17:51:46 +08:00

117 lines
4.3 KiB
Go

package kuaishou_mini
import (
"encoding/json"
"errors"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/globals"
"io/ioutil"
"net/http"
)
const (
CallbackTypePay = "PAYMENT" // 支付回调
CallbackTypeRefund = "REFUND" // 退款回调
CallbackTypeSettle = "SETTLE" // 结算回调
OrderPayStatusHandleing = "PROCESSING" // 支付订单处理中
OrderPayStatusSuccess = "SUCCESS" // 订单支付成功
OrderPayStatusFailed = "FAILED" // 订单支付失败
)
type T struct {
Data struct {
KsOrderNo string `json:"ks_order_no"`
RefundType interface{} `json:"refund_type"`
OutRefundNo interface{} `json:"out_refund_no"`
KsSettleNo interface{} `json:"ks_settle_no"`
Channel string `json:"channel"`
OutOrderNo string `json:"out_order_no"`
KsRefundFailReason interface{} `json:"ks_refund_fail_reason"`
ApplyRefundReason interface{} `json:"apply_refund_reason"`
PromotionAmount int `json:"promotion_amount"`
DeveloperPromotionAmount int `json:"developer_promotion_amount"`
ExtraInfo string `json:"extra_info"`
SettleAmount interface{} `json:"settle_amount"`
OrderAmount int `json:"order_amount"`
EnablePromotion bool `json:"enable_promotion"`
OutSettleNo interface{} `json:"out_settle_no"`
RefundAmount interface{} `json:"refund_amount"`
TradeNo string `json:"trade_no"`
Attach string `json:"attach"`
KsRefundNo interface{} `json:"ks_refund_no"`
Status string `json:"status"`
} `json:"data"`
BizType string `json:"biz_type"`
MessageId string `json:"message_id"`
AppId string `json:"app_id"`
Timestamp int64 `json:"timestamp"`
}
// KauiShouCallback 回调处理
func (a *API) KauiShouCallback(request *http.Request) (*CallBackDetail, *RefundCallBack, string, string, error) {
data, err := ioutil.ReadAll(request.Body)
if err != nil {
globals.SugarLogger.Debugf("err1 =========== :%s", utils.Format4Output(err, false))
return nil, nil, "", "-1", err
}
globals.SugarLogger.Debugf("data================: %s", string(data))
var callback *KauiShouCallbackRes
if err := json.Unmarshal(data, &callback); err != nil {
return nil, nil, "", "-1", err
}
switch callback.BizType {
case CallbackTypePay:
var payCallback *CallBackDetail
globals.SugarLogger.Debugf("payCallback : %s", utils.Format4Output(callback.Data, false))
if err := utils.Map2StructByJson(callback.Data, &payCallback, false); err != nil {
globals.SugarLogger.Debugf("err3 =========== :%s", utils.Format4Output(err, false))
return nil, nil, "", callback.MessageId, err
}
return payCallback, nil, CallbackTypePay, callback.MessageId, nil
case CallbackTypeRefund:
var refundCallback *RefundCallBack
globals.SugarLogger.Debugf("payCallback : %s", utils.Format4Output(callback.Data, false))
if err := utils.Map2StructByJson(callback.Data, &refundCallback, false); err != nil {
globals.SugarLogger.Debugf("err5 =========== :%s", utils.Format4Output(err, false))
return nil, nil, "", callback.MessageId, err
}
return nil, refundCallback, CallbackTypeRefund, callback.MessageId, nil
case CallbackTypeSettle:
return nil, nil, "", callback.MessageId, errors.New("无效回调类型")
default:
return nil, nil, "", callback.MessageId, errors.New("无效回调类型")
}
}
// KuaiShouRefundCallBack 快手退款回调
//func (a *API) KuaiShouRefundCallBack(request *http.Request) (*RefundCallBack, error) {
// data, err := ioutil.ReadAll(request.Body)
// if err != nil {
// return nil, err
// }
//
// var callback *RefundCallBack
// if err := json.Unmarshal(data, &callback); err != nil {
// return nil, err
// }
//
// return callback, err
//}
// KuaiShouSettleCallBack 当订单结算成功之后,快手小程序服务端会通过 post 方式回调开发者提供的 HTTP 接口
//func (a *API) KuaiShouSettleCallBack(request *http.Request) (*SettleCallback, error) {
// data, err := ioutil.ReadAll(request.Body)
// if err != nil {
// return nil, err
// }
//
// var callback *SettleCallback
// if err := json.Unmarshal(data, &callback); err != nil {
// return nil, err
// }
//
// return callback, err
//}