smartwalle/alipay

"自定义请求"如何上传文件

aidevjoe opened this issue · 11 comments

请教一下,使用"自定义请求"参数涉及到文件时,一直报错"PARAM_ILLEGAL | 入参不合法"

支付宝文档

商户上传处理图片

实现

func UploadImage(file *multipart.FileHeader, app ApplicationType) (*ImageUploadResponse, error) {
	client, err := client(app)
	if err != nil {
		return nil, err
	}
	fileExt := path.Ext(file.Filename)

	// 读取文件。
	f, openError := file.Open()
	if openError != nil {
		return nil, errors.New("function file.Open() Failed, err:" + openError.Error())
	}
	defer f.Close()
	fileContents, err := ioutil.ReadAll(f)
	if err != nil {
		return nil, err
	}

	p := alipay.NewPayload("alipay.merchant.image.upload")

	p.Set("image_type", strings.TrimLeft(strings.ToLower(fileExt), "."))
	p.Set("image_content", fileContents)

	var result ImageUploadResponse
	err = client.Request(p, &result)
	if err != nil {
		return nil, err
	}
	if !result.IsSuccess() {
		return nil, errors.New(result.SubMsg)
	}
	return &result, nil
}

使用商家上传接口还是无法上传,但是示例中的上传接口可以。发现上传成功后文件ID是通用的,也算解决了。感谢🙏

我测试 https://opendocs.alipay.com/mini/02ctgk?pathHash=c08922b1 这个接口是可以的,你再确认一下是不是权限的问题。

应该不是权限问题,「交易支付投诉处理」API中除了上传图片接口失败,其他都可以,所以可以排除权限问题

我小程序没有这个权限,没有网页应用可以测试。你的返回结果是什么?

之前版本和最新版本都是返回 PARAM_ILLEGAL | 入参不合法

我看了下小程序也有这个权限,
image

企业账号才有,我是个人账号,你添加这个权限试试

已经勾选了,不然其他接口也调用不了。截图中是另外一个应用。

md,我找到原因了,biz_content 这个字段,其它接口没有值的时候可以传 {},就这个接口不行。