1
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package kuaishou_mini
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
@@ -31,6 +32,127 @@ func (a *API) PreCreateOrder(param *PreCreateOrderReq) (string, error) {
|
||||
return order.OrderInfo, nil
|
||||
}
|
||||
|
||||
// GetOrderDetail 订单详情查询接口
|
||||
func (a *API) GetOrderDetail(outOrderNo string) (*PaymentInfo, error) {
|
||||
data, err := a.AccessAPI1(KuaiShouGetOrderDetail, map[string]interface{}{"out_order_no": outOrderNo})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
orderDetail := &GetOrderDetailRes{}
|
||||
if err := utils.Map2StructByJson(data, orderDetail, false); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if orderDetail.Result != 1 {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if orderDetail.PaymentInfo == "" {
|
||||
return nil, errors.New("快手支付订单详情返回值为空")
|
||||
}
|
||||
|
||||
paymentInfo := &PaymentInfo{}
|
||||
if err := json.Unmarshal([]byte(orderDetail.PaymentInfo), paymentInfo); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return paymentInfo, err
|
||||
}
|
||||
|
||||
// RefundOrder 支付请求退款接口
|
||||
// 在途资金中的所有货款均是与订单关联的,只有当该订单在途资金中剩余金额超过退款金额时,才可以进行在途资金的退款。
|
||||
// 当可提现金额也不足退款金额时,会退款失败,为了避免出现订单无法退款的情况出现,请根据业务情况自行保留一部分可提现金额在系统中
|
||||
func (a *API) RefundOrder(param *RefundParam) (refundNo string, err error) {
|
||||
data, err := a.AccessAPI1(KuaiShouRefundOrder, utils.Struct2MapByJson(param))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
var result *RefundRes
|
||||
if err := utils.Map2StructByJson(data, &result, false); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if result.Result != 1 {
|
||||
return "", errors.New(result.ErrorMsg)
|
||||
}
|
||||
return result.RefundNo, nil
|
||||
}
|
||||
|
||||
// RefundOrderDetail 查询退款订单详情
|
||||
func (a *API) RefundOrderDetail(outRefundNo string) (*RefundInfo, error) {
|
||||
data, err := a.AccessAPI1(KuaiShouRefundOrderDetail, map[string]interface{}{"out_refund_no": outRefundNo})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var refundOrderDetail *RefundOrderDetail
|
||||
if err := utils.Map2StructByJson(data, &refundOrderDetail, false); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if refundOrderDetail.Result != 1 {
|
||||
return nil, errors.New(refundOrderDetail.ErrorMsg)
|
||||
}
|
||||
|
||||
var refundInfo *RefundInfo
|
||||
if err := json.Unmarshal([]byte(refundOrderDetail.RefundInfo), &refundInfo); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return refundInfo, nil
|
||||
}
|
||||
|
||||
// PaySettleAccounts 结算用于确认一笔在途资金,将其转化为可提现资金。
|
||||
// 结算规则
|
||||
// 1、订单履约完成后发起结算,结算周期为 订单到达核销状态(订单状态为11或15)满3天后可发起结算。核销状态通过订单同步接口 (opens new window)进行同步。
|
||||
// 2、需要主动调用结算接口后,才能进行后续资金的提现。
|
||||
// 3、结算时,小程序平台会收取整笔交易的平台服务费。若结算后发生退款,则平台服务费不作退还。
|
||||
|
||||
func (a *API) PaySettleAccounts4Order(param *OrderSettleAccountParam) (string, error) {
|
||||
data, err := a.AccessAPI1(KuaiShouGetSettleOrder, utils.Struct2MapByJson(param))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
var settle *OrderSettleAccountRes
|
||||
if err := utils.Map2StructByJson(data, &settle, false); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if settle.Result != 1 {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return settle.SettleNo, nil
|
||||
}
|
||||
|
||||
// QuerySettleInfo 查询结算信息
|
||||
func (a *API) QuerySettleInfo(outSettleNo string) (*SettleInfo, error) {
|
||||
data, err := a.AccessAPI1(KuaiShouQuerySettleOrder, map[string]interface{}{"out_settle_no": outSettleNo})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var settle *QuerySettleInfoRes
|
||||
if err := utils.Map2StructByJson(data, &settle, false); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if settle.Result != 1 {
|
||||
return nil, errors.New(settle.ErrorMsg)
|
||||
}
|
||||
|
||||
if settle.SettleInfo == "" {
|
||||
return nil, errors.New("数据查询为空")
|
||||
}
|
||||
|
||||
var result *SettleInfo
|
||||
if err := json.Unmarshal([]byte(settle.SettleInfo), result); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return result, err
|
||||
}
|
||||
|
||||
func (a *API) FullUrl(bashUrl string) string {
|
||||
if a.accessToken == "" || a.expiresIn < time.Now().Unix() {
|
||||
a.GetToken()
|
||||
|
||||
Reference in New Issue
Block a user