Files
2026-09-17 17:38:45 +08:00

51 lines
1.9 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package controller
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
v1 "tool-api/api/user/v1"
"tool-api/internal/logic"
)
// cMember 会员购买相关接口(需用户登录)
type cMember struct{}
var Member = &cMember{}
func (c *cMember) MemberCenter(ctx context.Context, req *v1.MemberCenterReq) (res *v1.MemberCenterRes, err error) {
return logic.MemberCenter(ctx)
}
func (c *cMember) MemberOrderCreate(ctx context.Context, req *v1.MemberOrderCreateReq) (res *v1.MemberOrderCreateRes, err error) {
return logic.MemberOrderCreate(ctx, req.PlanKey, req.Code)
}
func (c *cMember) MemberOrderCheck(ctx context.Context, req *v1.MemberOrderCheckReq) (res *v1.MemberOrderCheckRes, err error) {
return logic.MemberOrderCheck(ctx, req.OutTradeNo)
}
func (c *cMember) MemberOrders(ctx context.Context, req *v1.MemberOrdersReq) (res *v1.MemberOrdersRes, err error) {
return logic.MemberOrders(ctx, req.Limit)
}
// PayNotify 虚拟支付「发货推送」回调(平台调用,无 token,需在 MP 后台配置该 URL)。
//
// 返回 XML:成功 <ErrCode>0</ErrCode>,失败非 0 触发平台重试(最多 15 次)。
// 这里直接写响应体,Response 中间件检测到已有输出便不再包装成 JSON。
//
// 刻意写成包级函数而不是 cMember 的方法:GoFrame 的 group.Bind 会把控制器上
// 签名为 func(*ghttp.Request) 的方法一并自动注册成路由,那样就会多出一条
// `/pay-notify`(且落在 UserAuth 组里)—— 平台回调不带 token,这条路由纯属多余入口。
func PayNotify(r *ghttp.Request) {
ack, err := logic.PayNotifyHandle(r.Context(), r.GetBody())
if err != nil {
g.Log().Errorf(r.Context(), "[xpay] 发货推送处理异常: %v", err)
ack = logic.XPayNotifyAckFail("internal error")
}
r.Response.Header().Set("Content-Type", "application/xml")
r.Response.Write(ack)
}