蛋蛋星球-制度模式
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

36 řádky
999 B

  1. package paypal
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "net/http"
  7. "github.com/go-pay/gopay"
  8. )
  9. // 创建订阅计划(CreateBillingPlan)
  10. // Code = 0 is success
  11. // 文档:https://developer.paypal.com/docs/api/subscriptions/v1/#plans_create
  12. func (c *Client) CreateBillingPlan(ctx context.Context, bm gopay.BodyMap) (ppRsp *CreateBillingRsp, err error) {
  13. if err = bm.CheckEmptyError("product_id", "billing_cycles"); err != nil {
  14. return nil, err
  15. }
  16. res, bs, err := c.doPayPalPost(ctx, bm, subscriptionCreate)
  17. if err != nil {
  18. return nil, err
  19. }
  20. ppRsp = &CreateBillingRsp{Code: Success}
  21. ppRsp.Response = new(BillingDetail)
  22. if err = json.Unmarshal(bs, ppRsp.Response); err != nil {
  23. return nil, fmt.Errorf("[%w]: %v, bytes: %s", gopay.UnmarshalErr, err, string(bs))
  24. }
  25. if res.StatusCode != http.StatusCreated {
  26. ppRsp.Code = res.StatusCode
  27. ppRsp.Error = string(bs)
  28. ppRsp.ErrorResponse = new(ErrorResponse)
  29. _ = json.Unmarshal(bs, ppRsp.ErrorResponse)
  30. }
  31. return ppRsp, nil
  32. }