klover2 / wechatpay-node-v3-ts

微信支付v3
MIT License
528 stars 82 forks source link

平台证书序列号Wechatpay-Serial错误? #38

Closed hexlul closed 1 year ago

hexlul commented 1 year ago

大佬好, 使用敏感信息加密,出现平台证书序列号Wechatpay-Serial错误,按照#31的方法增加key没有用,我看到2.0.2增加敏感信息加密方法后,

'serial_no="' +
      this.serial_no +
      '",' + 
替换了
      'Wechatpay-Serial="' +
      this.serial_no +
      '",' +

https://pay.weixin.qq.com/wiki/doc/apiv3_partner/wechatpay/wechatpay7_2.shtml 这个错误出现在上送参数需要敏感信息加密的接口中。请参考申明加密使用的平台证书 当证书序列号错误或者不是请求商户号对应的平台证书时,微信支付会返回问题中的错误提示。请检查: 加密使用的证书是否是微信支付平台证书。有时会误用商户证书导致该错误。 是否是请求商户对应的微信支付平台证书,如用了其他商户号的平台证书。 证书是否过期。请按照指引检查证书是否过期,并更新并部署新证书。

请问是不是要把Wechatpay-Serial加回去?

klover2 commented 1 year ago

大佬好, 使用敏感信息加密,出现平台证书序列号Wechatpay-Serial错误,按照#31的方法增加key没有用,我看到2.0.2增加敏感信息加密方法后,

'serial_no="' +
      this.serial_no +
      '",' + 
替换了
      'Wechatpay-Serial="' +
      this.serial_no +
      '",' +

https://pay.weixin.qq.com/wiki/doc/apiv3_partner/wechatpay/wechatpay7_2.shtml 这个错误出现在上送参数需要敏感信息加密的接口中。请参考申明加密使用的平台证书 当证书序列号错误或者不是请求商户号对应的平台证书时,微信支付会返回问题中的错误提示。请检查: 加密使用的证书是否是微信支付平台证书。有时会误用商户证书导致该错误。 是否是请求商户对应的微信支付平台证书,如用了其他商户号的平台证书。 证书是否过期。请按照指引检查证书是否过期,并更新并部署新证书。

请问是不是要把Wechatpay-Serial加回去?

不好意思 是我用错证书了 请更新npm 2.0.4,请试试是否正常, 谢谢 参考文档:

  1. https://pay.weixin.qq.com/wiki/doc/apiv3/apis/wechatpay5_1.shtml
  2. https://github.com/klover2/wechatpay-node-v3-ts/blob/master/docs/batches_transfer.md
hexlul commented 1 year ago

感谢及时修复!使用最新版后,出现了如下错误,这个key是APIV3密钥吗?我在pay中加上了 key,但是没效果,key使用的是明文,非加密。 RangeError: Invalid key length at Decipheriv.createCipherBase (node:internal/crypto/cipher:116:19) at Decipheriv.createCipherWithIV (node:internal/crypto/cipher:135:3) at new Decipheriv (node:internal/crypto/cipher:289:3) at Object.createDecipheriv (node:crypto:146:10) at Pay.decipher_gcm (C:\wechatproject\miniprogram\cloudfunctions\Pay\node_modules\wechatpay-node-v3\dist\index.js:328:41) at Pay. (C:\wechatproject\miniprogram\cloudfunctions\Pay\node_modules\wechatpay-node-v3\dist\index.js:128:59) at step (C:\wechatproject\miniprogram\cloudfunctions\Pay\node_modules\wechatpay-node-v3\dist\index.js:59:23) at Object.next (C:\wechatproject\miniprogram\cloudfunctions\Pay\node_modules\wechatpay-node-v3\dist\index.js:40:53) at fulfilled (C:\wechatproject\miniprogram\cloudfunctions\Pay\node_modules\wechatpay-node-v3\dist\index.js:31:58) at processTicksAndRejections (node:internal/process/task_queues:96:5)

hexlul commented 1 year ago

不好意思,const certificates = await pay.get_certificates("APIv3密钥"),我忘了修改这里的APIv3密钥,平台证书已经获取到了。

hexlul commented 1 year ago

在最终提交数据的时候显示,“转账批次参数不正确”

const res = await pay.batches_transfer({
    out_batch_no: 'plfk2020042013',
    batch_name: '2019年1月深圳分部报销单',
    batch_remark: '2019年1月深圳分部报销单',
    total_amount: 4000000,
    total_num: 200,
    wx_serial_no: certificate.serial_no,
    transfer_detail_list: [
      {
        out_detail_no: 'x23zy545Bd5436',
        transfer_amount: 200000,
        transfer_remark: '2020年4月报销',
        openid: 'o-MYE42l80oelYMDE34nYD456Xoy',

wx_serial_no: certificate.serial_no 并不在官方的参数列表中,证书序列号包含在请求HTTP头部的Wechatpay-Serial中就可以了吧。去掉wx_serial_no后,就会提示pay中有未定义的参数,麻烦大佬再修复一下,谢谢!!

klover2 commented 1 year ago

在最终提交数据的时候显示,“转账批次参数不正确”

const res = await pay.batches_transfer({
    out_batch_no: 'plfk2020042013',
    batch_name: '2019年1月深圳分部报销单',
    batch_remark: '2019年1月深圳分部报销单',
    total_amount: 4000000,
    total_num: 200,
    wx_serial_no: certificate.serial_no,
    transfer_detail_list: [
      {
        out_detail_no: 'x23zy545Bd5436',
        transfer_amount: 200000,
        transfer_remark: '2020年4月报销',
        openid: 'o-MYE42l80oelYMDE34nYD456Xoy',

wx_serial_no: certificate.serial_no 并不在官方的参数列表中,证书序列号包含在请求HTTP头部的Wechatpay-Serial中就可以了吧。去掉wx_serial_no后,就会提示pay中有未定义的参数,麻烦大佬再修复一下,谢谢!!

出现这个错误,所有接口已经调通了 wx_serial_no: certificate.serial_no 这个参数是我特意加了 用于放在Wechatpay-Serial中的参数,你现在报错是你out_batch_no或者out_detail_no参数有问题 不要用我的示例代码,请随便更改一个随机字符串

请看源码 应该会解决你的疑惑

/**
   * 发起商家转账零钱
   * @documentation 请看文档https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_1.shtml
   */
  public async batches_transfer(params: BatchesTransfer.Input): Promise<BatchesTransfer.IOutput> {
    const url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';
    // 请求参数
    const _params = Object.assign({
      appid: this.appid,
      ...params,
    });

    const serial_no = _params.wx_serial_no;
    delete _params.wx_serial_no;
    const authorization = this.init('POST', url, _params);

    return await this.postRequestV2(url, _params, authorization, { 'Wechatpay-Serial': serial_no });
  }
klover2 commented 1 year ago

在最终提交数据的时候显示,“转账批次参数不正确”

const res = await pay.batches_transfer({
    out_batch_no: 'plfk2020042013',
    batch_name: '2019年1月深圳分部报销单',
    batch_remark: '2019年1月深圳分部报销单',
    total_amount: 4000000,
    total_num: 200,
    wx_serial_no: certificate.serial_no,
    transfer_detail_list: [
      {
        out_detail_no: 'x23zy545Bd5436',
        transfer_amount: 200000,
        transfer_remark: '2020年4月报销',
        openid: 'o-MYE42l80oelYMDE34nYD456Xoy',

wx_serial_no: certificate.serial_no 并不在官方的参数列表中,证书序列号包含在请求HTTP头部的Wechatpay-Serial中就可以了吧。去掉wx_serial_no后,就会提示pay中有未定义的参数,麻烦大佬再修复一下,谢谢!!

image 还有需要确保这个参数是你获取的 不能乱写

klover2 commented 1 year ago

在最终提交数据的时候显示,“转账批次参数不正确”

const res = await pay.batches_transfer({
    out_batch_no: 'plfk2020042013',
    batch_name: '2019年1月深圳分部报销单',
    batch_remark: '2019年1月深圳分部报销单',
    total_amount: 4000000,
    total_num: 200,
    wx_serial_no: certificate.serial_no,
    transfer_detail_list: [
      {
        out_detail_no: 'x23zy545Bd5436',
        transfer_amount: 200000,
        transfer_remark: '2020年4月报销',
        openid: 'o-MYE42l80oelYMDE34nYD456Xoy',

wx_serial_no: certificate.serial_no 并不在官方的参数列表中,证书序列号包含在请求HTTP头部的Wechatpay-Serial中就可以了吧。去掉wx_serial_no后,就会提示pay中有未定义的参数,麻烦大佬再修复一下,谢谢!!

image

hexlul commented 1 year ago

谢谢,我再仔细检查代码看看。 openid获取应该没问题,姓名字段没有的情况下,测试过是成功的。为了增加安全,才添加了姓名字段校验,产生了需要上传敏感信息和平台证书的问题。之前测试某一笔的姓名字段如果为空,也会提示“姓名字段规则不一致”错误,导致整个批次转账失败。我觉得如果openid或姓名字段出问题,应该转账批次能提交成功,在转账明细那边显示失败。 看你发的图片,突然注意到user_name 有长度限制, string[2,30],最低要1个汉字才行。我也使用了非空的名字。

hexlul commented 1 year ago

如果user_name长度限制32字符的话,加密生成的明显超长度了, 以下是我加密后获取的加密串 "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ==" 是不是这个原因呢?

klover2 commented 1 year ago

如果user_name长度限制32字符的话,加密生成的明显超长度了, 以下是我加密后获取的加密串 "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ==" 是不是这个原因呢?

不是的 微信拿到这个数据是会解密的 是解密后的长度吧

hexlul commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object
hexlul commented 1 year ago

在最终提交数据的时候显示,“转账批次参数不正确”

const res = await pay.batches_transfer({
    out_batch_no: 'plfk2020042013',
    batch_name: '2019年1月深圳分部报销单',
    batch_remark: '2019年1月深圳分部报销单',
    total_amount: 4000000,
    total_num: 200,
    wx_serial_no: certificate.serial_no,
    transfer_detail_list: [
      {
        out_detail_no: 'x23zy545Bd5436',
        transfer_amount: 200000,
        transfer_remark: '2020年4月报销',
        openid: 'o-MYE42l80oelYMDE34nYD456Xoy',

wx_serial_no: certificate.serial_no 并不在官方的参数列表中,证书序列号包含在请求HTTP头部的Wechatpay-Serial中就可以了吧。去掉wx_serial_no后,就会提示pay中有未定义的参数,麻烦大佬再修复一下,谢谢!!

出现这个错误,所有接口已经调通了 wx_serial_no: certificate.serial_no 这个参数是我特意加了 用于放在Wechatpay-Serial中的参数,你现在报错是你out_batch_no或者out_detail_no参数有问题 不要用我的示例代码,请随便更改一个随机字符串

请看源码 应该会解决你的疑惑

/**
   * 发起商家转账零钱
   * @documentation 请看文档https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_1.shtml
   */
  public async batches_transfer(params: BatchesTransfer.Input): Promise<BatchesTransfer.IOutput> {
    const url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';
    // 请求参数
    const _params = Object.assign({
      appid: this.appid,
      ...params,
    });

    const serial_no = _params.wx_serial_no;
    delete _params.wx_serial_no;
    const authorization = this.init('POST', url, _params);

    return await this.postRequestV2(url, _params, authorization, { 'Wechatpay-Serial': serial_no });
  }

请问用了const,再用delete删除其中的数据,有没有删除成功呢?

klover2 commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

klover2 commented 1 year ago

在最终提交数据的时候显示,“转账批次参数不正确”

const res = await pay.batches_transfer({
    out_batch_no: 'plfk2020042013',
    batch_name: '2019年1月深圳分部报销单',
    batch_remark: '2019年1月深圳分部报销单',
    total_amount: 4000000,
    total_num: 200,
    wx_serial_no: certificate.serial_no,
    transfer_detail_list: [
      {
        out_detail_no: 'x23zy545Bd5436',
        transfer_amount: 200000,
        transfer_remark: '2020年4月报销',
        openid: 'o-MYE42l80oelYMDE34nYD456Xoy',

wx_serial_no: certificate.serial_no 并不在官方的参数列表中,证书序列号包含在请求HTTP头部的Wechatpay-Serial中就可以了吧。去掉wx_serial_no后,就会提示pay中有未定义的参数,麻烦大佬再修复一下,谢谢!!

出现这个错误,所有接口已经调通了 wx_serial_no: certificate.serial_no 这个参数是我特意加了 用于放在Wechatpay-Serial中的参数,你现在报错是你out_batch_no或者out_detail_no参数有问题 不要用我的示例代码,请随便更改一个随机字符串 请看源码 应该会解决你的疑惑

/**
   * 发起商家转账零钱
   * @documentation 请看文档https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_1.shtml
   */
  public async batches_transfer(params: BatchesTransfer.Input): Promise<BatchesTransfer.IOutput> {
    const url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';
    // 请求参数
    const _params = Object.assign({
      appid: this.appid,
      ...params,
    });

    const serial_no = _params.wx_serial_no;
    delete _params.wx_serial_no;
    const authorization = this.init('POST', url, _params);

    return await this.postRequestV2(url, _params, authorization, { 'Wechatpay-Serial': serial_no });
  }

请问用了const,再用delete删除其中的数据,有没有删除成功呢?

是能删除的

klover2 commented 1 year ago

在最终提交数据的时候显示,“转账批次参数不正确”

const res = await pay.batches_transfer({
    out_batch_no: 'plfk2020042013',
    batch_name: '2019年1月深圳分部报销单',
    batch_remark: '2019年1月深圳分部报销单',
    total_amount: 4000000,
    total_num: 200,
    wx_serial_no: certificate.serial_no,
    transfer_detail_list: [
      {
        out_detail_no: 'x23zy545Bd5436',
        transfer_amount: 200000,
        transfer_remark: '2020年4月报销',
        openid: 'o-MYE42l80oelYMDE34nYD456Xoy',

wx_serial_no: certificate.serial_no 并不在官方的参数列表中,证书序列号包含在请求HTTP头部的Wechatpay-Serial中就可以了吧。去掉wx_serial_no后,就会提示pay中有未定义的参数,麻烦大佬再修复一下,谢谢!!

出现这个错误,所有接口已经调通了 wx_serial_no: certificate.serial_no 这个参数是我特意加了 用于放在Wechatpay-Serial中的参数,你现在报错是你out_batch_no或者out_detail_no参数有问题 不要用我的示例代码,请随便更改一个随机字符串 请看源码 应该会解决你的疑惑

/**
   * 发起商家转账零钱
   * @documentation 请看文档https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_1.shtml
   */
  public async batches_transfer(params: BatchesTransfer.Input): Promise<BatchesTransfer.IOutput> {
    const url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';
    // 请求参数
    const _params = Object.assign({
      appid: this.appid,
      ...params,
    });

    const serial_no = _params.wx_serial_no;
    delete _params.wx_serial_no;
    const authorization = this.init('POST', url, _params);

    return await this.postRequestV2(url, _params, authorization, { 'Wechatpay-Serial': serial_no });
  }

请问用了const,再用delete删除其中的数据,有没有删除成功呢?

是能删除的

用于签名的参数是不包括wx_serial_no的 '{"appid":"wxd678efh567hg6787","out_batch_no":"plfk2020042013","batch_name":"2019年1月深圳分部报销单","batch_remark":"2019年1月深圳分部报销单","total_amount":4000000,"total_num":200,"transfer_detail_list":[{"out_detail_no":"x23zy545Bd5436","transfer_amount":200000,"transfer_remark":"2020年4月报销","openid":"o-MYE42l80oelYMDE34nYD456Xoy","user_name":"CDAciTdVtgJzj+gsFIQql8ka4iaje6cikFpa72lT0Hwdw69gSQsnayKH7TwAfIU/80WaXd4G+fVDdf7k7wfY9CaCESiCcVeSkYRX4L3suVwTeohsbCG7vu/zd2gzzmaXla6cIBmA+A5OpMGyDJhvVqp3EzbQInKjAkzqxRNvewkgx7cYfNKIWp7dXY/tZsdef8BSL9xgibBiVASRVYZLa1Hoi895p2RHACCf/vVmNfA0TFbuBXMNw5a5S2WmLMboMbs639FFHZObpLWfnEyIWbUV6RaPfBM38w7/usYCL2Arvkve+mfkw11jP1PDYk+fruP4DytfR6gGdzhujvXKGw=="}]}'

klover2 commented 1 year ago

在最终提交数据的时候显示,“转账批次参数不正确”

const res = await pay.batches_transfer({
    out_batch_no: 'plfk2020042013',
    batch_name: '2019年1月深圳分部报销单',
    batch_remark: '2019年1月深圳分部报销单',
    total_amount: 4000000,
    total_num: 200,
    wx_serial_no: certificate.serial_no,
    transfer_detail_list: [
      {
        out_detail_no: 'x23zy545Bd5436',
        transfer_amount: 200000,
        transfer_remark: '2020年4月报销',
        openid: 'o-MYE42l80oelYMDE34nYD456Xoy',

wx_serial_no: certificate.serial_no 并不在官方的参数列表中,证书序列号包含在请求HTTP头部的Wechatpay-Serial中就可以了吧。去掉wx_serial_no后,就会提示pay中有未定义的参数,麻烦大佬再修复一下,谢谢!!

出现这个错误,所有接口已经调通了 wx_serial_no: certificate.serial_no 这个参数是我特意加了 用于放在Wechatpay-Serial中的参数,你现在报错是你out_batch_no或者out_detail_no参数有问题 不要用我的示例代码,请随便更改一个随机字符串 请看源码 应该会解决你的疑惑

/**
   * 发起商家转账零钱
   * @documentation 请看文档https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_1.shtml
   */
  public async batches_transfer(params: BatchesTransfer.Input): Promise<BatchesTransfer.IOutput> {
    const url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';
    // 请求参数
    const _params = Object.assign({
      appid: this.appid,
      ...params,
    });

    const serial_no = _params.wx_serial_no;
    delete _params.wx_serial_no;
    const authorization = this.init('POST', url, _params);

    return await this.postRequestV2(url, _params, authorization, { 'Wechatpay-Serial': serial_no });
  }

请问用了const,再用delete删除其中的数据,有没有删除成功呢?

是能删除的

用于签名的参数是不包括wx_serial_no的 '{"appid":"wxd678efh567hg6787","out_batch_no":"plfk2020042013","batch_name":"2019年1月深圳分部报销单","batch_remark":"2019年1月深圳分部报销单","total_amount":4000000,"total_num":200,"transfer_detail_list":[{"out_detail_no":"x23zy545Bd5436","transfer_amount":200000,"transfer_remark":"2020年4月报销","openid":"o-MYE42l80oelYMDE34nYD456Xoy","user_name":"CDAciTdVtgJzj+gsFIQql8ka4iaje6cikFpa72lT0Hwdw69gSQsnayKH7TwAfIU/80WaXd4G+fVDdf7k7wfY9CaCESiCcVeSkYRX4L3suVwTeohsbCG7vu/zd2gzzmaXla6cIBmA+A5OpMGyDJhvVqp3EzbQInKjAkzqxRNvewkgx7cYfNKIWp7dXY/tZsdef8BSL9xgibBiVASRVYZLa1Hoi895p2RHACCf/vVmNfA0TFbuBXMNw5a5S2WmLMboMbs639FFHZObpLWfnEyIWbUV6RaPfBM38w7/usYCL2Arvkve+mfkw11jP1PDYk+fruP4DytfR6gGdzhujvXKGw=="}]}'

您好,你可以直接拉下源码直接调试,看下问题出现在那里,我这边没有发现问题

hexlul commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,(url, _params, authorization, { 'Wechatpay-Serial': serial_no }), wx_serial_no的确是删除了,_params值和官方要求的参数一样。

klover2 commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

hexlul commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。感觉加密后的长度比示例值长太多了。

klover2 commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。

你最好看下这几笔订单的用户名字在微信中user_name是什么,你虽然输入的是真实名称,但是微信里面没有,他们就校验不了,我在2.0.6版本里面把wx_serial_no 这个字段改成了可选,你可以先不填用户名称,过渡一下,确认好名称之后,再传用户名称试试

hexlul commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。

你最好看下这几笔订单的用户名字在微信中user_name是什么,你虽然输入的是真实名称,但是微信里面没有,他们就校验不了,我在2.0.6版本里面把wx_serial_no 这个字段改成了可选,你可以先不填用户名称,过渡一下,确认好名称之后,再传用户名称试试

我可以确定测试的几笔,都实名认证过的,这个名字微信肯定会有吧。 回头我也试试通过openid获取微信里的名字对比一下看看。 非常感谢!

klover2 commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。

你最好看下这几笔订单的用户名字在微信中user_name是什么,你虽然输入的是真实名称,但是微信里面没有,他们就校验不了,我在2.0.6版本里面把wx_serial_no 这个字段改成了可选,你可以先不填用户名称,过渡一下,确认好名称之后,再传用户名称试试

我可以确定测试的几笔,都实名认证过的,这个名字微信肯定会有吧。 回头我也试试通过openid获取微信里的名字对比一下看看。 非常感谢!

能不能把你请求返回的详细报错信息发我看一下,谢谢

hexlul commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。

你最好看下这几笔订单的用户名字在微信中user_name是什么,你虽然输入的是真实名称,但是微信里面没有,他们就校验不了,我在2.0.6版本里面把wx_serial_no 这个字段改成了可选,你可以先不填用户名称,过渡一下,确认好名称之后,再传用户名称试试

我可以确定测试的几笔,都实名认证过的,这个名字微信肯定会有吧。 回头我也试试通过openid获取微信里的名字对比一下看看。 非常感谢!

能不能把你请求返回的详细报错信息发我看一下,谢谢

没有详细报错,就是简单的400错误,太宽泛了 - -! 感觉已经进行到最后一步了,完全没有头绪了。

error:
code: "PARAM_ERROR"
message: "转账批次参数不正确"
[[Prototype]]: Object
status: 400

如果user_name有问题,它应该报400 中的INVALID_REQUEST错误,请求参数符合参数格式,但不符合业务规则。

klover2 commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。

你最好看下这几笔订单的用户名字在微信中user_name是什么,你虽然输入的是真实名称,但是微信里面没有,他们就校验不了,我在2.0.6版本里面把wx_serial_no 这个字段改成了可选,你可以先不填用户名称,过渡一下,确认好名称之后,再传用户名称试试

我可以确定测试的几笔,都实名认证过的,这个名字微信肯定会有吧。 回头我也试试通过openid获取微信里的名字对比一下看看。 非常感谢!

能不能把你请求返回的详细报错信息发我看一下,谢谢

没有详细报错,就是简单的400错误,太宽泛了 - -! 感觉已经进行到最后一步了,完全没有头绪了。

error:
code: "PARAM_ERROR"
message: "转账批次参数不正确"
[[Prototype]]: Object
status: 400

如果user_name有问题,它应该报400 中的INVALID_REQUEST错误,请求参数符合参数格式,但不符合业务规则。

你看下这个是否对你有用 文档链接https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter4_3_2.shtml image

klover2 commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。

你最好看下这几笔订单的用户名字在微信中user_name是什么,你虽然输入的是真实名称,但是微信里面没有,他们就校验不了,我在2.0.6版本里面把wx_serial_no 这个字段改成了可选,你可以先不填用户名称,过渡一下,确认好名称之后,再传用户名称试试

我可以确定测试的几笔,都实名认证过的,这个名字微信肯定会有吧。 回头我也试试通过openid获取微信里的名字对比一下看看。 非常感谢!

能不能把你请求返回的详细报错信息发我看一下,谢谢

没有详细报错,就是简单的400错误,太宽泛了 - -! 感觉已经进行到最后一步了,完全没有头绪了。

error:
code: "PARAM_ERROR"
message: "转账批次参数不正确"
[[Prototype]]: Object
status: 400

如果user_name有问题,它应该报400 中的INVALID_REQUEST错误,请求参数符合参数格式,但不符合业务规则。

实在不行,user_name签名出来的数据把后面的==删掉,或者随便输入一个小于30位的字符串,看看错误是不是不一样

hexlul commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。

你最好看下这几笔订单的用户名字在微信中user_name是什么,你虽然输入的是真实名称,但是微信里面没有,他们就校验不了,我在2.0.6版本里面把wx_serial_no 这个字段改成了可选,你可以先不填用户名称,过渡一下,确认好名称之后,再传用户名称试试

我可以确定测试的几笔,都实名认证过的,这个名字微信肯定会有吧。 回头我也试试通过openid获取微信里的名字对比一下看看。 非常感谢!

能不能把你请求返回的详细报错信息发我看一下,谢谢

没有详细报错,就是简单的400错误,太宽泛了 - -! 感觉已经进行到最后一步了,完全没有头绪了。

error:
code: "PARAM_ERROR"
message: "转账批次参数不正确"
[[Prototype]]: Object
status: 400

如果user_name有问题,它应该报400 中的INVALID_REQUEST错误,请求参数符合参数格式,但不符合业务规则。

你看下这个是否对你有用 文档链接https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter4_3_2.shtml image

谢谢,这个已经设置过了,如果不设置的话,会提示IP地址错误 。云开发的ip只能不断试错查日志添加IP。目前,不带名字测试就没问题。

hexlul commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。

你最好看下这几笔订单的用户名字在微信中user_name是什么,你虽然输入的是真实名称,但是微信里面没有,他们就校验不了,我在2.0.6版本里面把wx_serial_no 这个字段改成了可选,你可以先不填用户名称,过渡一下,确认好名称之后,再传用户名称试试

我可以确定测试的几笔,都实名认证过的,这个名字微信肯定会有吧。 回头我也试试通过openid获取微信里的名字对比一下看看。 非常感谢!

能不能把你请求返回的详细报错信息发我看一下,谢谢

没有详细报错,就是简单的400错误,太宽泛了 - -! 感觉已经进行到最后一步了,完全没有头绪了。

error:
code: "PARAM_ERROR"
message: "转账批次参数不正确"
[[Prototype]]: Object
status: 400

如果user_name有问题,它应该报400 中的INVALID_REQUEST错误,请求参数符合参数格式,但不符合业务规则。

实在不行,user_name签名出来的数据把后面的==删掉,或者随便输入一个小于30位的字符串,看看错误是不是不一样

user_name截取部分加密字符,显示“请确认待处理的消息是否为加密后的密文”,这和姓名未加密时是一样的错误提示。

klover2 commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。

你最好看下这几笔订单的用户名字在微信中user_name是什么,你虽然输入的是真实名称,但是微信里面没有,他们就校验不了,我在2.0.6版本里面把wx_serial_no 这个字段改成了可选,你可以先不填用户名称,过渡一下,确认好名称之后,再传用户名称试试

我可以确定测试的几笔,都实名认证过的,这个名字微信肯定会有吧。 回头我也试试通过openid获取微信里的名字对比一下看看。 非常感谢!

能不能把你请求返回的详细报错信息发我看一下,谢谢

没有详细报错,就是简单的400错误,太宽泛了 - -! 感觉已经进行到最后一步了,完全没有头绪了。

error:
code: "PARAM_ERROR"
message: "转账批次参数不正确"
[[Prototype]]: Object
status: 400

如果user_name有问题,它应该报400 中的INVALID_REQUEST错误,请求参数符合参数格式,但不符合业务规则。

实在不行,user_name签名出来的数据把后面的==删掉,或者随便输入一个小于30位的字符串,看看错误是不是不一样

user_name截取部分加密字符,显示“请确认待处理的消息是否为加密后的密文”,这和姓名未加密时是一样的错误提示。

这说明签名是没有问题的

hexlul commented 1 year ago

那真没感觉哪里有问题呢,除了参数多了一个wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"

batch_name: "内部测试"
batch_remark: "内部人员测试"
out_batch_no: "KYFK2022101011090932"
total_amount: 200
total_num: 3
transfer_detail_list: Array(3)
0:
openid: "oY6iu5KiZYh3FctT4xl5Fa04_fKI"
out_detail_no: "KYFK20221010110909320001"
transfer_amount: 45
transfer_remark: "测试"
user_name: "r852o2T2C58reVaSVUkAA5zMXWKvuBRb3EZr65u297wvy+/OZkMLFB1xhaEfq/EbWDaxxklmcwEeMO1kIbgHrKYaNSGXvcZku4sYFW1nRWDTmGgQlgdURjRGjZrwlTx4MbNiy/TLu/3ZGDIxz+Pj0MXs/w9MXg0+U9eZkqkt81omdgdpVdin1pxUsJ7muCmx814k0o0QcIArKcREJH39oWj+dvqkaI33To7laGohllhvCaG/0aeGli9MFUQK/7iNGCyh0UMtM2NsfqoAoe0twFi6RbP7m2lKVnSWjAm9mwfBGAdalLKjBWJBOL0+VXrPFDRLyur2wJwHAqfhHa0AfQ=="
[[Prototype]]: Object
1: {out_detail_no: "KYFK20221010110909320002", openid: "oY6iu5A2Ok6xZhlt6PXACE0aRwEc", transfer_remark: "测试", user_name: "Bz6t9cUmg2JLcXidMjrFzOZjCZQ/VCIQZHoJ2awdQxkDSNjt7b…2Fh9/L6XaGklQ0WBHlpsLvFROhFplJNXcAyZQAKoBmIL6ig==", transfer_amount: 55}
2: {transfer_amount: 100, out_detail_no: "KYFK20221010110909320003", openid: "oY6iu5JLetKDKsG2Fi1WxJ13GFuc", transfer_remark: "测试", user_name: "P2MI8ZoKiJcaec159YjV1aLkohRj5MxKxMwv/h5vMyKNqu9K7f…eNZn6wViAwfEwxHdJILLhKzD/ESsTMTeC+I/b/QcMI6oLLw=="}
length: 3
[[Prototype]]: Array(0)
wx_serial_no: "5DB3080701A265A4D838B4F9F7DD2C8C948704E1"
[[Prototype]]: Object

你可以断点调试一下,wx_serial_no这个参数在请求参数中已经移除了,放在请求头里了

断点测试了一下,wx_serial_no的确是删除了,_params值和官方要求的参数一样。

image 你好,你这微信user_name是从微信当前appid 下获取到的用户信息中的名称吗

不是的,是直接使用的真实姓名然后加密的,这个名字我打算让用户自己输入保存在数据库中的。

你最好看下这几笔订单的用户名字在微信中user_name是什么,你虽然输入的是真实名称,但是微信里面没有,他们就校验不了,我在2.0.6版本里面把wx_serial_no 这个字段改成了可选,你可以先不填用户名称,过渡一下,确认好名称之后,再传用户名称试试

我可以确定测试的几笔,都实名认证过的,这个名字微信肯定会有吧。 回头我也试试通过openid获取微信里的名字对比一下看看。 非常感谢!

能不能把你请求返回的详细报错信息发我看一下,谢谢

没有详细报错,就是简单的400错误,太宽泛了 - -! 感觉已经进行到最后一步了,完全没有头绪了。

error:
code: "PARAM_ERROR"
message: "转账批次参数不正确"
[[Prototype]]: Object
status: 400

如果user_name有问题,它应该报400 中的INVALID_REQUEST错误,请求参数符合参数格式,但不符合业务规则。

实在不行,user_name签名出来的数据把后面的==删掉,或者随便输入一个小于30位的字符串,看看错误是不是不一样

user_name截取部分加密字符,显示“请确认待处理的消息是否为加密后的密文”,这和姓名未加密时是一样的错误提示。

这说明签名是没有问题的

是的,不加名字直接就付款成功。暂时只能先不加名字替代了,这个上传敏感信息加密要求太多了。

hexlul commented 1 year ago

大佬好,需求超过2000后要实名,于是再次测试实名,以上代码未做任何更改的情况下,几个月后测试竟然又成功了!

klover2 commented 1 year ago

大佬好,需求超过2000后要实名,于是再次测试实名,以上代码未做任何更改的情况下,几个月后测试竟然又成功了!

谢谢,能看看你具体怎样使用的吗

hexlul commented 1 year ago

大佬好,需求超过2000后要实名,于是再次测试实名,以上代码未做任何更改的情况下,几个月后测试竟然又成功了!

谢谢,能看看你具体怎样使用的吗

不好意思,经常打不开这网页。刚看到回复。 我是严格按照 const res = await pay.batches_transfer({ out_batch_no: 'plfk2020042013', batch_name: '2019年1月深圳分部报销单', batch_remark: '2019年1月深圳分部报销单', total_amount: 4000000, total_num: 200, wx_serial_no: certificate.serial_no, // 当你需要传user_name时 需要传当前参数 transfer_detail_list: [ { out_detail_no: 'x23zy545Bd5436', transfer_amount: 200000, transfer_remark: '2020年4月报销', openid: 'o-MYE42l80oelYMDE34nYD456Xoy', user_name: pay.publicEncrypt('张三', Buffer.from(certificate.publicKey)), } ], }); 这个列表设置的参数。user_name之前提示参数错误我就注释掉了没用,时隔几月再试又可以了。我也是一脸懵的。。。 不知道什么原因导致的。说明之前的签名、参数列表应该没问题。

klover2 commented 1 year ago

大佬好,需求超过2000后要实名,于是再次测试实名,以上代码未做任何更改的情况下,几个月后测试竟然又成功了!

谢谢,能看看你具体怎样使用的吗

不好意思,经常打不开这网页。刚看到回复。 我是严格按照 const res = await pay.batches_transfer({ out_batch_no: 'plfk2020042013', batch_name: '2019年1月深圳分部报销单', batch_remark: '2019年1月深圳分部报销单', total_amount: 4000000, total_num: 200, wx_serial_no: certificate.serial_no, // 当你需要传user_name时 需要传当前参数 transfer_detail_list: [ { out_detail_no: 'x23zy545Bd5436', transfer_amount: 200000, transfer_remark: '2020年4月报销', openid: 'o-MYE42l80oelYMDE34nYD456Xoy', user_name: pay.publicEncrypt('张三', Buffer.from(certificate.publicKey)), } ], }); 这个列表设置的参数。user_name之前提示参数错误我就注释掉了没用,时隔几月再试又可以了。我也是一脸懵的。。。 不知道什么原因导致的。说明之前的签名、参数列表应该没问题。

谢谢