不得不喷一下V3支付,上传图片环节,官方的文档太坑人了,没有它还好,照着它做,足足卡了我 6个多小时,全耗在body的拼接上了。
此处建议大家慎用官方的拼接方式,因为完全象撞大运一样,还不一定能拼接成功。我也是在放弃折腾后,不断攻略才找到了简单方法,如下所示:
官方文档:
https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/tool/chapter3_1.shtml
最后还是按照自己喜欢的方式实现了,用的是request-promise的formData,后台基于nodejs的可以简单参考,轻轻松松通过了。
代码如下:
//上传图片,获得media_id
async function merchant_media_upload(event) {
let res = await cloud.downloadFile({ fileID: event.fileID })
let filebuffer = res.fileContent
let filename = event.filename
let sha256 = crypto.createHash('sha256').update(filebuffer).digest('hex')
let method = 'POST'
let url = '/v3/merchant/media/upload'
let jsonStr = JSON.stringify({ filename, sha256 })
let headers = getHeaders(method, url, jsonStr)
headers['Content-Type'] = `multipart/form-data;boundary=boundary`
let formData = {
'meta': jsonStr,
'file': {
value: filebuffer,
options: {
filename,
contentType: 'image/jpg'
}
}
}
return JSON.parse(await rp({ method, uri: config.host + url, headers, formData }))
}
更多相关内容:
请问可以将getHeaders的内容贴一下吗?
能公布出来的文档都经过好几遍审查了,平心而论,这锅绝对不是文档工程狮的😄
谢谢,成功了😭
哈哈,我之前也踩过这个坑,看这个
https://developers.weixin.qq.com/community/develop/article/doc/000e8c7d3c853084f90a4560d5bc13
这个应该是从下载图片吧,如果是本地文件的话该如何改造呢?谢谢🙏