蛋蛋星球-制度模式
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

54 Zeilen
1.5 KiB

  1. package lakala
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "github.com/go-pay/gopay"
  7. )
  8. // 创建线下支付订单
  9. // 文档:https://payjp.lakala.com/docs/cn/#api-RetailPay-RetailMicroPay
  10. func (c *Client) CreateRetailOrder(ctx context.Context, orderId string, bm gopay.BodyMap) (rsp *RetailPayRsp, err error) {
  11. if orderId == gopay.NULL {
  12. return nil, fmt.Errorf("orderId is empty")
  13. }
  14. if err = bm.CheckEmptyError("description", "price"); err != nil {
  15. return nil, err
  16. }
  17. url := fmt.Sprintf(newRetailOrder, c.PartnerCode, orderId)
  18. bs, err := c.doPut(ctx, url, bm)
  19. if err != nil {
  20. return nil, err
  21. }
  22. rsp = new(RetailPayRsp)
  23. err = json.Unmarshal(bs, rsp)
  24. if err != nil {
  25. return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
  26. }
  27. return rsp, nil
  28. }
  29. // 创建线下QRCode支付单
  30. // 文档:https://payjp.lakala.com/docs/cn/#api-RetailPay-RetailQRCode
  31. func (c *Client) CreateRetailQRCodeOrder(ctx context.Context, orderId string, bm gopay.BodyMap) (rsp *PaymentRsp, err error) {
  32. if orderId == gopay.NULL {
  33. return nil, fmt.Errorf("orderId is empty")
  34. }
  35. if err = bm.CheckEmptyError("description", "price"); err != nil {
  36. return nil, err
  37. }
  38. url := fmt.Sprintf(newRetailQrcodeOrder, c.PartnerCode, orderId)
  39. bs, err := c.doPut(ctx, url, bm)
  40. if err != nil {
  41. return nil, err
  42. }
  43. rsp = new(PaymentRsp)
  44. err = json.Unmarshal(bs, rsp)
  45. if err != nil {
  46. return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
  47. }
  48. return rsp, nil
  49. }