ysf cpn
This commit is contained in:
parent
c5c809a019
commit
d28961f0ba
|
@ -25,5 +25,8 @@ type QueryResp struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *QueryResp) GetMsg() string {
|
func (o *QueryResp) GetMsg() string {
|
||||||
|
if o.Code.IsSuccess() {
|
||||||
|
return o.Msg
|
||||||
|
}
|
||||||
return fmt.Sprintf("Msg:[%s],SubMsg:[%s],自定处理msg:[%s]", o.Msg, o.SubMsg, o.SubCode.GetMsg())
|
return fmt.Sprintf("Msg:[%s],SubMsg:[%s],自定处理msg:[%s]", o.Msg, o.SubMsg, o.SubCode.GetMsg())
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,6 +106,7 @@ func (c *Config) orderReq(in *proto.OrderRequest) (*po.OrderReq, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return &po.OrderReq{
|
return &po.OrderReq{
|
||||||
Cmd: vo.OrderCmd,
|
Cmd: vo.OrderCmd,
|
||||||
AccessId: vo.AccessId,
|
AccessId: vo.AccessId,
|
||||||
|
@ -121,7 +122,7 @@ func (c *Config) orderReq(in *proto.OrderRequest) (*po.OrderReq, error) {
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func orderResp(request *proto.OrderRequest, resp po.OrderResp) *proto.OrderResponse {
|
func orderResp(request *proto.OrderRequest, resp po.OrderResp) (*proto.OrderResponse, error) {
|
||||||
data, _ := json.Marshal(resp)
|
data, _ := json.Marshal(resp)
|
||||||
result := &proto.Result{
|
result := &proto.Result{
|
||||||
OrderNo: request.Order.OrderNo,
|
OrderNo: request.Order.OrderNo,
|
||||||
|
@ -135,22 +136,24 @@ func orderResp(request *proto.OrderRequest, resp po.OrderResp) *proto.OrderRespo
|
||||||
} else {
|
} else {
|
||||||
result.Status = proto.Status_ING
|
result.Status = proto.Status_ING
|
||||||
}
|
}
|
||||||
return &proto.OrderResponse{Result: result}
|
return &proto.OrderResponse{Result: result}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func queryReq(in *proto.QueryRequest, chNlId string) *po.QueryReq {
|
func queryReq(in *proto.QueryRequest, chNlId string) (*po.QueryReq, error) {
|
||||||
type OrderExtra struct {
|
type OrderExtra struct {
|
||||||
OrigDate string `json:"origDate"`
|
OrigDate string `json:"origDate"`
|
||||||
}
|
}
|
||||||
var e OrderExtra
|
var e OrderExtra
|
||||||
_ = json.Unmarshal(in.Order.Extra, &e)
|
if err := json.Unmarshal(in.Order.Extra, &e); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return &po.QueryReq{
|
return &po.QueryReq{
|
||||||
ChNlId: chNlId,
|
ChNlId: chNlId,
|
||||||
Cmd: vo.QueryCmd,
|
Cmd: vo.QueryCmd,
|
||||||
OrigQid: in.Order.OrderNo,
|
OrigQid: in.Order.OrderNo,
|
||||||
OrigDate: e.OrigDate,
|
OrigDate: e.OrigDate,
|
||||||
TraceId: in.Order.OrderNo,
|
TraceId: in.Order.OrderNo,
|
||||||
}
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func queryResp(request *proto.QueryRequest, resp po.QueryResp) *proto.QueryResponse {
|
func queryResp(request *proto.QueryRequest, resp po.QueryResp) *proto.QueryResponse {
|
||||||
|
@ -165,11 +168,15 @@ func queryResp(request *proto.QueryRequest, resp po.QueryResp) *proto.QueryRespo
|
||||||
return &proto.QueryResponse{Result: result}
|
return &proto.QueryResponse{Result: result}
|
||||||
}
|
}
|
||||||
|
|
||||||
func notifyReq(in *proto.NotifyRequest) *po.Notify {
|
func notifyReq(in *proto.NotifyRequest) (*po.Notify, error) {
|
||||||
var h po.Headers
|
var h po.Headers
|
||||||
_ = json.Unmarshal(in.Headers, &h)
|
if err := json.Unmarshal(in.Headers, &h); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
var body po.Body
|
var body po.Body
|
||||||
_ = json.NewDecoder(strings.NewReader(string(in.Body))).Decode(&body)
|
if err := json.NewDecoder(strings.NewReader(string(in.Body))).Decode(&body); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
body.CouponNum = union_pay.ConvertToInt(body.CouponNum)
|
body.CouponNum = union_pay.ConvertToInt(body.CouponNum)
|
||||||
body.OrderAt = union_pay.ConvertToInt(body.OrderAt)
|
body.OrderAt = union_pay.ConvertToInt(body.OrderAt)
|
||||||
body.DiscountAt = union_pay.ConvertToInt(body.DiscountAt)
|
body.DiscountAt = union_pay.ConvertToInt(body.DiscountAt)
|
||||||
|
@ -180,7 +187,7 @@ func notifyReq(in *proto.NotifyRequest) *po.Notify {
|
||||||
return &po.Notify{
|
return &po.Notify{
|
||||||
Headers: &h,
|
Headers: &h,
|
||||||
Body: &body,
|
Body: &body,
|
||||||
}
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func notifyResp(request *proto.NotifyRequest, n *po.Notify) (*proto.NotifyResponse, error) {
|
func notifyResp(request *proto.NotifyRequest, n *po.Notify) (*proto.NotifyResponse, error) {
|
||||||
|
|
|
@ -54,7 +54,7 @@ func (p *UnionPayCpnService) Order(ctx context.Context, request *proto.OrderRequ
|
||||||
return nil, proto.ErrorResponseFail(err.Error())
|
return nil, proto.ErrorResponseFail(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
return orderResp(request, response), nil
|
return orderResp(request, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *UnionPayCpnService) Query(ctx context.Context, request *proto.QueryRequest) (*proto.QueryResponse, error) {
|
func (p *UnionPayCpnService) Query(ctx context.Context, request *proto.QueryRequest) (*proto.QueryResponse, error) {
|
||||||
|
@ -62,7 +62,10 @@ func (p *UnionPayCpnService) Query(ctx context.Context, request *proto.QueryRequ
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
req := queryReq(request, c.ChNlId)
|
req, err := queryReq(request, c.ChNlId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, proto.ErrorParamFail(err.Error())
|
||||||
|
}
|
||||||
if err = req.Validate(); err != nil {
|
if err = req.Validate(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -81,8 +84,12 @@ func (p *UnionPayCpnService) Query(ctx context.Context, request *proto.QueryRequ
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *UnionPayCpnService) Notify(_ context.Context, request *proto.NotifyRequest) (*proto.NotifyResponse, error) {
|
func (p *UnionPayCpnService) Notify(_ context.Context, request *proto.NotifyRequest) (*proto.NotifyResponse, error) {
|
||||||
req := notifyReq(request)
|
req, err := notifyReq(request)
|
||||||
if err := req.Validate(); err != nil {
|
if err != nil {
|
||||||
|
return nil, proto.ErrorParamFail(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = req.Validate(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ func TestQuery(t *testing.T) {
|
||||||
t.Errorf("Query() error = %v", err)
|
t.Errorf("Query() error = %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fmt.Printf("%+v \n", got)
|
t.Logf("%+v \n", got)
|
||||||
assert.Equal(t, int(proto.Status_SUCCESS), int(got.Result.Status))
|
assert.Equal(t, int(proto.Status_SUCCESS), int(got.Result.Status))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,11 +32,8 @@ func (o OperaSt) GetText() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o OperaSt) GetOrderStatus() proto.Status {
|
func (o OperaSt) GetOrderStatus() proto.Status {
|
||||||
if len(o) == 0 {
|
|
||||||
return proto.Status_INVALID
|
|
||||||
}
|
|
||||||
if resultStatus, ok := queryOrderStatusMap[o]; ok {
|
if resultStatus, ok := queryOrderStatusMap[o]; ok {
|
||||||
return resultStatus
|
return resultStatus
|
||||||
}
|
}
|
||||||
return proto.Status_FAIL
|
return proto.Status_INVALID
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,7 @@ func Put(ctx context.Context, url string, body []byte, options ...RequestOption)
|
||||||
// Request 封装的HTTP请求函数,使用选项模式进行配置
|
// Request 封装的HTTP请求函数,使用选项模式进行配置
|
||||||
func Request(_ context.Context, method, url string, body []byte, options ...RequestOption) (http.Header, []byte, error) {
|
func Request(_ context.Context, method, url string, body []byte, options ...RequestOption) (http.Header, []byte, error) {
|
||||||
// 设置默认选项
|
// 设置默认选项
|
||||||
defaultOptions := &RequestOptions{
|
o := &RequestOptions{
|
||||||
Headers: http.Header{
|
Headers: http.Header{
|
||||||
"Content-Type": []string{"application/json"},
|
"Content-Type": []string{"application/json"},
|
||||||
},
|
},
|
||||||
|
@ -69,16 +69,17 @@ func Request(_ context.Context, method, url string, body []byte, options ...Requ
|
||||||
|
|
||||||
// 根据传入的选项更新默认选项
|
// 根据传入的选项更新默认选项
|
||||||
for _, option := range options {
|
for _, option := range options {
|
||||||
option(defaultOptions)
|
option(o)
|
||||||
}
|
}
|
||||||
|
|
||||||
req, err := http.NewRequest(method, url, bytes.NewBuffer(body))
|
req, err := http.NewRequest(method, url, bytes.NewBuffer(body))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("创建HTTP请求失败: %w", err)
|
return nil, nil, fmt.Errorf("创建HTTP请求失败: %w", err)
|
||||||
}
|
}
|
||||||
|
req.Header = o.Headers
|
||||||
|
|
||||||
httpClient := &http.Client{
|
httpClient := &http.Client{
|
||||||
Timeout: defaultOptions.Timeout,
|
Timeout: o.Timeout,
|
||||||
}
|
}
|
||||||
resp, err := httpClient.Do(req)
|
resp, err := httpClient.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -91,7 +92,7 @@ func Request(_ context.Context, method, url string, body []byte, options ...Requ
|
||||||
return nil, nil, fmt.Errorf("读取响应体失败: %w", err)
|
return nil, nil, fmt.Errorf("读取响应体失败: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !defaultOptions.StatusCodeFunc(resp.StatusCode) {
|
if !o.StatusCodeFunc(resp.StatusCode) {
|
||||||
return nil, nil, fmt.Errorf("请求异常:%s", resp.Status)
|
return nil, nil, fmt.Errorf("请求异常:%s", resp.Status)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue