收藏
回答

添加分账接收方的时候如果传递name参数失败?

接口v3/profitsharing/receivers/add     

我使用的是平台证书还没有改用微信支付公钥

name参数我使用的平台证书进行了加密,也传递了Wechatpay-Serial平台证书的序列号,但服务端返回 array:2 [   "code" => "PARAM_ERROR"   "message" => "平台私钥解密失败" ], 其问下有人知道是怎么回事么?

如果不传name参数是没问题的,但添加商户的时候name是必须的


加密方式用的官方的wechatpay/wechatpay 包,加密代码如下

public static function encrypt(
    #[\SensitiveParameter]
    string $plaintext,
    $publicKey,
    int $padding = OPENSSL_PKCS1_OAEP_PADDING
): string
{
    self::paddingModeLimitedCheck($padding);

    if (!openssl_public_encrypt($plaintext, $encrypted, $publicKey, $padding)) {
        throw new UnexpectedValueException('Encrypting the input $plaintext failed, please checking your $publicKey whether or nor correct.');
    }

    return base64_encode($encrypted);
}
回答关注问题邀请回答
收藏

1 个回答

  • Memory
    Memory
    06-17

    加密要使用微信支付平台公钥或者平台证书,你可以直接这么写:

    $instance->v3->profitsharing->receivers->add->postAsync([
      'json' => [
        'sub_mchid'       => '1900000109',
        'appid'           => 'wx8888888888888888',
        'sub_appid'       => 'wx8888888888888889',
        'type'            => 'MERCHANT_ID',
        'account'         => '86693852',
        'name'            => $encryptor('hu89ohu89ohu89o'),
        'relation_type'   => 'SERVICE_PROVIDER',
        'custom_relation' => '代理商',
      ],
      'headers' => [
        'Wechatpay-Serial' => 'PUB_KEY_ID_0114232134912410000000000000',
      ],
    ])
    ->then(static function(\Psr\Http\Message\ResponseInterface $response) {
      print_r(json_decode((string) $response->getBody(), true));
    })
    ->wait();
    
    06-17
    有用
    回复 5
    • 何辉
      何辉
      06-17
      是你这样,但我用的是平台证书,不知道是不是需要改用平台公钥
      06-17
      回复
    • Memory
      Memory
      06-17回复何辉
      平台证书也是一样的,你需要确认一下你给的平台证书是否正确
      06-17
      回复
    • 何辉
      何辉
      发表于移动端
      06-17回复Memory
      平台证书是请求接口/v3/certificates或取的,应该是正常的
      06-17
      回复
    • Memory
      Memory
      06-17回复何辉
      不好说,大概率是没给对
      06-17
      回复
    • 何辉
      何辉
      06-18
      我升级微信支付公钥,改用微信支付公钥正常了,谢谢了,官方的文档是下面这样说的




      需要切换的情况:


      如果你是微信支付APIv3的商户,且已经使用了微信支付平台证书,请参考本文指引,将平台证书切换成微信支付公钥模式
      06-18
      回复
登录 后发表内容