小程序
小游戏
企业微信
微信支付
扫描小程序码分享
已经获取到平台证书了。但是通过接口调用商户进件还是提示商户证书序列号有误。
签名和调用使用的私钥是一个啊。
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
serial_no要用商户后台的证书序列号
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
$resp = $instance
->chain('v3/ecommerce/applyments/')
->post([
'json' => [
'out_request_no' => 'APPLYMENT_00000000001',
'organization_type' => $encryptor('2500'),
'need_account_info' => false,
'contact_info' => [
'contact_type' => $encryptor('65'),
'contact_name' => $encryptor('x明'),
'contact_id_card_number'=>$encryptor('430xxxx039X'),
'mobile_phone'=>$encryptor('186xxxx237')
],
'sales_scene_info' => [
'store_name' => $encryptor('地方'),
'store_url' => $encryptor('http://www.qq.com')
'merchant_shortname'=>$encryptor('速度')
'headers' => [
// $platformCertificateSerial 见初始化章节
'Wechatpay-Serial' => $platformCertificateSerial
]
]);
} catch (\Exception $e) {
// 进行错误处理
echo $e->getMessage(), PHP_EOL;
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$r = $e->getResponse();
echo $r->getStatusCode() . ' ' . $r->getReasonPhrase(), PHP_EOL;
echo $r->getBody(), PHP_EOL, PHP_EOL, PHP_EOL;
}
echo $e->getTraceAsString(), PHP_EOL;
$merchantId = '16xxxx296';
// 从本地文件中加载「商户API私钥」,「商户API私钥」会用来生成请求的签名
$merchantPrivateKeyFilePath = 'file://C:/wxpay/rsa/apiclient_key.pem';
$merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);
// 「商户API证书」的「证书序列号」
$merchantCertificateSerial = '558132476xxxx9774278724053CF30D';
// 从本地文件中加载「微信支付平台证书」,用来验证微信支付应答的签名
$platformCertificateFilePath = 'file://C:/wxpay/rsa/apiclient_cert.pem';
$platformPublicKeyInstance = Rsa::from($platformCertificateFilePath, Rsa::KEY_TYPE_PUBLIC);
// 从「微信支付平台证书」中获取「证书序列号」
$platformCertificateSerial = '215A51A695D3xxxxxxBFEE38C47B086';
// 构造一个 APIv3 客户端实例
$instance = Builder::factory([
'mchid' => $merchantId,
'serial' => $merchantCertificateSerial,
'privateKey' => $merchantPrivateKeyInstance,
'certs' => [
$platformCertificateSerial => $platformPublicKeyInstance,
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
serial_no要用商户后台的证书序列号
$resp = $instance
->chain('v3/ecommerce/applyments/')
->post([
'json' => [
'out_request_no' => 'APPLYMENT_00000000001',
'organization_type' => $encryptor('2500'),
'need_account_info' => false,
'contact_info' => [
'contact_type' => $encryptor('65'),
'contact_name' => $encryptor('x明'),
'contact_id_card_number'=>$encryptor('430xxxx039X'),
'mobile_phone'=>$encryptor('186xxxx237')
],
'sales_scene_info' => [
'store_name' => $encryptor('地方'),
'store_url' => $encryptor('http://www.qq.com')
],
'merchant_shortname'=>$encryptor('速度')
],
'headers' => [
// $platformCertificateSerial 见初始化章节
'Wechatpay-Serial' => $platformCertificateSerial
]
]);
} catch (\Exception $e) {
// 进行错误处理
echo $e->getMessage(), PHP_EOL;
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$r = $e->getResponse();
echo $r->getStatusCode() . ' ' . $r->getReasonPhrase(), PHP_EOL;
echo $r->getBody(), PHP_EOL, PHP_EOL, PHP_EOL;
}
echo $e->getTraceAsString(), PHP_EOL;
}
$merchantId = '16xxxx296';
// 从本地文件中加载「商户API私钥」,「商户API私钥」会用来生成请求的签名
$merchantPrivateKeyFilePath = 'file://C:/wxpay/rsa/apiclient_key.pem';
$merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);
// 「商户API证书」的「证书序列号」
$merchantCertificateSerial = '558132476xxxx9774278724053CF30D';
// 从本地文件中加载「微信支付平台证书」,用来验证微信支付应答的签名
$platformCertificateFilePath = 'file://C:/wxpay/rsa/apiclient_cert.pem';
$platformPublicKeyInstance = Rsa::from($platformCertificateFilePath, Rsa::KEY_TYPE_PUBLIC);
// 从「微信支付平台证书」中获取「证书序列号」
$platformCertificateSerial = '215A51A695D3xxxxxxBFEE38C47B086';
// 构造一个 APIv3 客户端实例
$instance = Builder::factory([
'mchid' => $merchantId,
'serial' => $merchantCertificateSerial,
'privateKey' => $merchantPrivateKeyInstance,
'certs' => [
$platformCertificateSerial => $platformPublicKeyInstance,
],
]);