83 lines
2.0 KiB
Go
83 lines
2.0 KiB
Go
package internal
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"gitea.cdlsxd.cn/sdk/plugin/proto"
|
||
"github.com/carlmjohnson/requests"
|
||
"net/http"
|
||
"plugins/union_pay_redpack/internal/po"
|
||
"time"
|
||
)
|
||
|
||
// 插件通信信息,若不对应则会报错panic
|
||
const (
|
||
Tag = "union_pay_redpack"
|
||
Version = 1
|
||
CookieKey = "union_pay_redpack"
|
||
CookieValue = "union_pay_redpack"
|
||
)
|
||
|
||
const (
|
||
orderMethod = "/upapi/mkt/pnt/pntAcquire/v1"
|
||
orderBizMethod = "mkt.pnt.pntAcquire.v1"
|
||
)
|
||
|
||
const (
|
||
queryMethod = "/upapi/mkt/pnt/pntAcqQuery/v1"
|
||
queryBizMethod = "mkt.pnt.pntAcqQuery.v1"
|
||
)
|
||
|
||
type UnionPayCpnService struct{}
|
||
|
||
func (p *UnionPayCpnService) Order(ctx context.Context, request *proto.OrderRequest) (*proto.OrderResponse, error) {
|
||
c, err := transConfig(request.Config)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
uv, err := c.orderReq(request)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if err = uv.Validate(); err != nil {
|
||
return nil, err
|
||
}
|
||
var response po.OrderResp
|
||
url := fmt.Sprintf("%s%s", c.BaseUri, orderMethod)
|
||
err = requests.URL(url).Headers(headers(c, uv, orderBizMethod)).BodyJSON(uv).ToJSON(&response).Fetch(ctx)
|
||
if err != nil {
|
||
return nil, fmt.Errorf("请求异常,msg:" + err.Error())
|
||
}
|
||
|
||
return orderResp(request, response), nil
|
||
}
|
||
|
||
func (p *UnionPayCpnService) Query(ctx context.Context, request *proto.QueryRequest) (*proto.QueryResponse, error) {
|
||
c, err := transConfig(request.Config)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
uv, err := c.queryReq(request, c.ChNlId)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if err = uv.Validate(); err != nil {
|
||
return nil, err
|
||
}
|
||
var response po.QueryResp
|
||
url := fmt.Sprintf("%s%s", c.BaseUri, queryMethod)
|
||
|
||
h := new(http.Client)
|
||
h.Timeout = 20 * time.Second
|
||
err = requests.URL(url).Client(h).Headers(headers(c, uv, queryBizMethod)).BodyJSON(uv).ToJSON(&response).Fetch(ctx)
|
||
if err != nil {
|
||
return nil, fmt.Errorf("请求异常,msg:" + err.Error())
|
||
}
|
||
|
||
return queryResp(request, response), nil
|
||
}
|
||
|
||
func (p *UnionPayCpnService) Notify(_ context.Context, _ *proto.NotifyRequest) (*proto.NotifyResponse, error) {
|
||
return notifyResp(), nil
|
||
}
|