Files
hfb_sys/docs/顺成汇创交易中心聚合支付/3. 上传图片 copy.md
T

4.0 KiB

接口应在服务端调用,不可在前端(小程序、网页、APP等)直接调用。具体可参考接口接入指南

接口英文名:UploadPic

本接口用于上传图片信息。使用Form表单形式提交这些参数

1、调用方式

HTTPS调用

POST <font style="color:rgb(52, 64, 84);">/api/app/upload</font>

2、请求参数

请求体 <font style="color:rgb(34, 34, 34);">Request Payload</font>

参数名 类型 必填 说明
version string 版本号,服务商可自由定义
reqSerialNo string 请求流水号(yyyyMMddHHmmssSSSXXXXX,其中 XXXXX为5位顺序号,禁止使用UUID等无意义数据)
sign string 签名
media File 图片文件

3、返回参数

返回体 <font style="color:rgb(34, 34, 34);">Response Payload</font>

参数名 类型 说明
respCode string 200是成功,其他值就是失败
respMsg string 接口返回的信息,成功返回null
reqSerialNo string 接口请求流水号
version string 接口版本
data object 图片地址

data响应参数

参数名 类型 说明
photoUrl string 图片地址。
图片上传成功后,该图片保存在交易中心中的地址。
注:其他相关接口需要提供图片文件地址时,直接使用该地址即可。

4、注意事项

1、content-type格式为multipart/form-data

5、代码示例

请求参数:

{
"version": "1.0",
"reqSerialNo": "20221013152000",
"sign":"OWJmY2Q4OTQ1NDFhOTE4YzkxOWVhNTI2NGQ4MTE0ODM=",
"media":File
}

python示例:

import requests
import hashlib
import base64
import datetime
import json
import os

##定义流水号生成方法
def reqSerialNo():
    now = datetime.datetime.now()
    order_id = now.strftime("%Y-%m-%d-%H-%M-%S").replace("-", "")
    return order_id

def get_image_files(directory):
    """获取指定目录及其子目录中的所有图片文件"""
    image_extensions = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp', '.ico'}
    image_files = []
    for root, dirs, files in os.walk(directory):
        for file in files:
            ext = os.path.splitext(file)[1].lower()
            if ext in image_extensions:
                image_files.append(os.path.join(root, file))
    return image_files


##服务商参数
path = r"D:\Document" ## 这里图片保存的路径
img = "picture.png"
print(img) 
file_name=os.path.join(img) ## 这里图片的名称
request_url="http://localhost:19001/api/app/upload" ## 这里填写请求的接口地址
token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJc1BheSI6IlRydWUiLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6ImQ1ZTc3MzE2LTVjNWEtNDQ3OC1iZjZhLTQ2OWU2ODNlZDMyYyIsIm5iZiI6MTc2NzA3NDUwNywiZXhwIjoxNzY3MTYwOTA3fQ.YxjyLi_f4kiluQGZBmfjteKokaPyzk1QkrrvgazErwc"

file_md5 = hashlib.md5(open(file_name,'rb').read()).hexdigest()
files = {'media': open(file_name,'rb'),}

body = {
    "reqSerialNo" : "2025121316252900001",
    "sign" : "MDc5NDNmMTE5ZjM2OTBhNjliYjk5MGUzYjllMjNiMTI="
    }
headers = {
        "Authorization": f"Bearer {token}"
    }

files = {'media': open(file_name,'rb'),}
req = requests.post(url=request_url, data=body,files=files,headers=headers) ## 注:python的request请求在做post请求时会自动加上Content-Type: multipart/form-data;boundary=${bound},因此本处可不填写headers
print(req.text)

返回参数:

{
    "respCode": "200",//200是成功,其他值就是失败
    "respMsg": "string",
    "reqSerialNo": "string",
    "version": "string",
    "data": {
        "photoUrl": "string"
    }
}