mirror of
https://github.com/GMWalletApp/epusdt.git
synced 2026-07-07 10:16:15 +00:00
71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
package handle
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"github.com/assimon/luuu/config"
|
|
"github.com/assimon/luuu/model/data"
|
|
"github.com/assimon/luuu/model/mdb"
|
|
"github.com/assimon/luuu/model/response"
|
|
"github.com/assimon/luuu/util/http_client"
|
|
"github.com/assimon/luuu/util/json"
|
|
"github.com/assimon/luuu/util/log"
|
|
"github.com/assimon/luuu/util/sign"
|
|
"github.com/hibiken/asynq"
|
|
)
|
|
|
|
const QueueOrderCallback = "order:callback"
|
|
|
|
func NewOrderCallbackQueue(order *mdb.Orders) (*asynq.Task, error) {
|
|
payload, err := json.Cjson.Marshal(order)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return asynq.NewTask(QueueOrderCallback, payload,
|
|
asynq.Retention(config.GetOrderExpirationTimeDuration()),
|
|
), nil
|
|
}
|
|
|
|
func OrderCallbackHandle(ctx context.Context, t *asynq.Task) error {
|
|
var order mdb.Orders
|
|
err := json.Cjson.Unmarshal(t.Payload(), &order)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
log.Sugar.Error(err)
|
|
}
|
|
}()
|
|
defer func() {
|
|
data.SaveCallBackOrdersResp(&order)
|
|
}()
|
|
client := http_client.GetHttpClient()
|
|
orderResp := response.OrderNotifyResponse{
|
|
TradeId: order.TradeId,
|
|
OrderId: order.OrderId,
|
|
Amount: order.Amount,
|
|
ActualAmount: order.ActualAmount,
|
|
Token: order.Token,
|
|
BlockTransactionId: order.BlockTransactionId,
|
|
Status: mdb.StatusPaySuccess,
|
|
}
|
|
signature, err := sign.Get(orderResp, config.GetApiAuthToken())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
orderResp.Signature = signature
|
|
resp, err := client.R().SetHeader("powered-by", "Epusdt(https://github.com/assimon/epusdt)").SetBody(orderResp).Post(order.NotifyUrl)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
body := string(resp.Body())
|
|
if body != "ok" {
|
|
order.CallBackConfirm = mdb.CallBackConfirmNo
|
|
return errors.New("not ok")
|
|
}
|
|
order.CallBackConfirm = mdb.CallBackConfirmOk
|
|
return nil
|
|
}
|