附近小店
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

express_provider.go 5.1 KiB

pirms 2 mēnešiem
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package weapp
  2. const (
  3. apiGetContact = "/cgi-bin/express/delivery/contact/get"
  4. apiPreviewTemplate = "/cgi-bin/express/delivery/template/preview"
  5. apiUpdateBusiness = "/cgi-bin/express/delivery/service/business/update"
  6. apiUpdatePath = "/cgi-bin/express/delivery/path/update"
  7. )
  8. // GetContactResponse 获取面单联系人信息返回数据
  9. type GetContactResponse struct {
  10. CommonError
  11. WaybillID string `json:"waybill_id"` // 运单 ID
  12. Sender ContactUser `json:"sender"` // 发件人信息
  13. Receiver ContactUser `json:"receiver"` // 收件人信息
  14. }
  15. // ContactUser 联系人
  16. type ContactUser struct {
  17. Address string `json:"address"` //地址,已经将省市区信息合并
  18. Name string `json:"name"` //用户姓名
  19. Tel string `json:"tel"` //座机号码
  20. Mobile string `json:"mobile"` //手机号码
  21. }
  22. // GetContact 获取面单联系人信息
  23. // accessToken, token, watBillID 接口调用凭证
  24. func GetContact(accessToken, token, watBillID string) (*GetContactResponse, error) {
  25. api := baseURL + apiGetContact
  26. return getContact(api, accessToken, token, watBillID)
  27. }
  28. func getContact(api, accessToken, token, watBillID string) (*GetContactResponse, error) {
  29. url, err := tokenAPI(api, accessToken)
  30. if err != nil {
  31. return nil, err
  32. }
  33. params := requestParams{
  34. "token": token,
  35. "waybill_id": watBillID,
  36. }
  37. res := new(GetContactResponse)
  38. if err := postJSON(url, params, res); err != nil {
  39. return nil, err
  40. }
  41. return res, nil
  42. }
  43. // ExpressTemplatePreviewer 面单模板预览器
  44. type ExpressTemplatePreviewer struct {
  45. WaybillID string `json:"waybill_id"` // 运单 ID
  46. WaybillTemplate string `json:"waybill_template"` // 面单 HTML 模板内容(需经 Base64 编码)
  47. WaybillData string `json:"waybill_data"` // 面单数据。详情参考下单事件返回值中的 WaybillData
  48. Custom ExpressOrder `json:"custom"` // 商户下单数据,格式是商户侧下单 API 中的请求体
  49. }
  50. // PreviewTemplateResponse 预览面单模板返回数据
  51. type PreviewTemplateResponse struct {
  52. CommonError
  53. WaybillID string `json:"waybill_id"` // 运单 ID
  54. RenderedWaybillTemplate string `json:"rendered_waybill_template"` // 渲染后的面单 HTML 文件(已经过 Base64 编码)
  55. }
  56. // Preview 预览面单模板。用于调试面单模板使用。
  57. // token 接口调用凭证
  58. func (previewer *ExpressTemplatePreviewer) Preview(token string) (*PreviewTemplateResponse, error) {
  59. api := baseURL + apiPreviewTemplate
  60. return previewer.preview(api, token)
  61. }
  62. func (previewer *ExpressTemplatePreviewer) preview(api, token string) (*PreviewTemplateResponse, error) {
  63. url, err := tokenAPI(api, token)
  64. if err != nil {
  65. return nil, err
  66. }
  67. res := new(PreviewTemplateResponse)
  68. if err := postJSON(url, previewer, res); err != nil {
  69. return nil, err
  70. }
  71. return res, nil
  72. }
  73. // BusinessResultCode 商户审核结果状态码
  74. type BusinessResultCode = int8
  75. // 所有商户审核结果状态码
  76. const (
  77. ResultSuccess BusinessResultCode = 0 // 审核通过
  78. ResultFailed = 1 // 审核失败
  79. )
  80. // BusinessUpdater 商户审核结果更新器
  81. type BusinessUpdater struct {
  82. ShopAppID string `json:"shop_app_id"` // 商户的小程序AppID,即审核商户事件中的 ShopAppID
  83. BizID string `json:"biz_id"` // 商户账户
  84. ResultCode BusinessResultCode `json:"result_code"` // 审核结果,0 表示审核通过,其他表示审核失败
  85. ResultMsg string `json:"result_msg,omitempty"` // 审核错误原因,仅 result_code 不等于 0 时需要设置
  86. }
  87. // Update 更新商户审核结果
  88. // token 接口调用凭证
  89. func (updater *BusinessUpdater) Update(token string) (*CommonError, error) {
  90. api := baseURL + apiUpdateBusiness
  91. return updater.update(api, token)
  92. }
  93. func (updater *BusinessUpdater) update(api, token string) (*CommonError, error) {
  94. url, err := tokenAPI(api, token)
  95. if err != nil {
  96. return nil, err
  97. }
  98. res := new(CommonError)
  99. if err := postJSON(url, updater, res); err != nil {
  100. return nil, err
  101. }
  102. return res, nil
  103. }
  104. // ExpressPathUpdater 运单轨迹更新器
  105. type ExpressPathUpdater struct {
  106. Token string `json:"token"` // 商户侧下单事件中推送的 Token 字段
  107. WaybillID string `json:"waybill_id"` // 运单 ID
  108. ActionTime uint `json:"action_time"` // 轨迹变化 Unix 时间戳
  109. ActionType uint `json:"action_type"` // 轨迹变化类型
  110. ActionMsg string `json:"action_msg"` // 轨迹变化具体信息说明,展示在快递轨迹详情页中。若有手机号码,则直接写11位手机号码。使用UTF-8编码。
  111. }
  112. // Update 更新运单轨迹
  113. // token 接口调用凭证
  114. func (updater *ExpressPathUpdater) Update(token string) (*CommonError, error) {
  115. api := baseURL + apiUpdatePath
  116. return updater.update(api, token)
  117. }
  118. func (updater *ExpressPathUpdater) update(api, token string) (*CommonError, error) {
  119. url, err := tokenAPI(api, token)
  120. if err != nil {
  121. return nil, err
  122. }
  123. res := new(CommonError)
  124. if err := postJSON(url, updater, res); err != nil {
  125. return nil, err
  126. }
  127. return res, nil
  128. }