package front

import (
	"PaymentCenter/app/constants/errorcode"
	"PaymentCenter/app/http/controllers"
	"PaymentCenter/app/http/entities/front"
	"PaymentCenter/app/services"
	"PaymentCenter/app/services/thirdpay"
	"github.com/gin-gonic/gin"
)

func Pay(c *gin.Context) {
	req := controllers.GetRequest(c).(*front.PayReqs)
	appCheckInfo := controllers.GetAppCheckInfo(c).(*services.AppCheck)
	check := thirdpay.ThirdPayCheck(c.Request.Context(), req, appCheckInfo, c.ClientIP())
	if check.CheckCode != errorcode.Success {
		if check.CheckCode == errorcode.OrdersExist {
			//订单已存在,直接返回订单信息
			controllers.ApiRes(c, thirdpay.PayCallBack(check.OldOrder, false), errorcode.Success)
			return
		}
		controllers.ApiRes(c, nil, check.CheckCode)
		return
	}
	payInfo := thirdpay.ThirdPayWeb(check)
	if payInfo.PayCode != errorcode.Success {
		controllers.ApiRes(c, nil, payInfo.PayCode)
		return
	}
	controllers.ApiRes(c, thirdpay.PayCallBack(payInfo.Order, true), errorcode.Success)
	return
}