蛋蛋星球-制度模式
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ů.

79 řádky
2.9 KiB

  1. package alipay
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "github.com/go-pay/gopay"
  7. )
  8. // datadigital.fincloud.generalsaas.ocr.server.detect(服务端OCR)
  9. // 文档地址:https://opendocs.alipay.com/open/05ut8h
  10. func (a *Client) OcrServerDetect(ctx context.Context, bm gopay.BodyMap) (aliRsp *OcrServerDetectRsp, err error) {
  11. err = bm.CheckEmptyError("ocr_type", "outer_order_no")
  12. if err != nil {
  13. return nil, err
  14. }
  15. var bs []byte
  16. if bs, err = a.doAliPay(ctx, bm, "datadigital.fincloud.generalsaas.ocr.server.detect"); err != nil {
  17. return nil, err
  18. }
  19. aliRsp = new(OcrServerDetectRsp)
  20. if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
  21. return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
  22. }
  23. if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
  24. return aliRsp, err
  25. }
  26. signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
  27. aliRsp.SignData = signData
  28. return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
  29. }
  30. // datadigital.fincloud.generalsaas.ocr.mobile.initialize(App端OCR初始化)
  31. // 文档地址:https://opendocs.alipay.com/open/043ksf
  32. func (a *Client) OcrMobileInitialize(ctx context.Context, bm gopay.BodyMap) (aliRsp *OcrMobileInitializeRsp, err error) {
  33. err = bm.CheckEmptyError("outer_order_no", "biz_code")
  34. if err != nil {
  35. return nil, err
  36. }
  37. var bs []byte
  38. if bs, err = a.doAliPay(ctx, bm, "datadigital.fincloud.generalsaas.ocr.mobile.initialize"); err != nil {
  39. return nil, err
  40. }
  41. aliRsp = new(OcrMobileInitializeRsp)
  42. if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
  43. return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
  44. }
  45. if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
  46. return aliRsp, err
  47. }
  48. signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
  49. aliRsp.SignData = signData
  50. return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
  51. }
  52. // datadigital.fincloud.generalsaas.ocr.common.detect(文字识别OCR)
  53. // 文档地址:https://opendocs.alipay.com/open/0776c2cb_datadigital.fincloud.generalsaas.ocr.common.detect
  54. func (a *Client) OcrCommonDetect(ctx context.Context, bm gopay.BodyMap) (aliRsp *OcrCommonDetectRsp, err error) {
  55. err = bm.CheckEmptyError("ocr_type", "outer_order_no", "file_content")
  56. if err != nil {
  57. return nil, err
  58. }
  59. var bs []byte
  60. if bs, err = a.doAliPay(ctx, bm, "datadigital.fincloud.generalsaas.ocr.common.detect"); err != nil {
  61. return nil, err
  62. }
  63. aliRsp = new(OcrCommonDetectRsp)
  64. if err = json.Unmarshal(bs, aliRsp); err != nil || aliRsp.Response == nil {
  65. return nil, fmt.Errorf("[%w], bytes: %s", gopay.UnmarshalErr, string(bs))
  66. }
  67. if err = bizErrCheck(aliRsp.Response.ErrorResponse); err != nil {
  68. return aliRsp, err
  69. }
  70. signData, signDataErr := a.getSignData(bs, aliRsp.AlipayCertSn)
  71. aliRsp.SignData = signData
  72. return aliRsp, a.autoVerifySignByCert(aliRsp.Sign, signData, signDataErr)
  73. }