80 lines
3.0 KiB
Go
80 lines
3.0 KiB
Go
package kuaishou_mini
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"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 {
|
|
return nil, nil, "", "-1", err
|
|
}
|
|
var callback *KauiShouCallbackRes
|
|
if err := json.Unmarshal(data, &callback); err != nil {
|
|
return nil, nil, "", "-1", err
|
|
}
|
|
|
|
switch callback.BizType {
|
|
case CallbackTypePay:
|
|
var payCallback *CallBackDetail
|
|
if err := utils.Map2StructByJson(callback.Data, &payCallback, false); err != nil {
|
|
return nil, nil, "", callback.MessageId, err
|
|
}
|
|
return payCallback, nil, CallbackTypePay, callback.MessageId, nil
|
|
case CallbackTypeRefund:
|
|
var refundCallback *RefundCallBack
|
|
if err := utils.Map2StructByJson(callback.Data, &refundCallback, false); err != nil {
|
|
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("无效回调类型")
|
|
}
|
|
}
|