微信开发者群里有大佬预测以后不能用公众号去快速认证小程序了,小程序可能需要单独去做认证了。已经有不少人遇到你这情况了,差不多九月初就这样了[图片]
小程序认证收费?小程序现在需要单独认证了?不和公众号一块了? [图片]
2023-09-27EntityUtils.toString(response.getEntity())微信返回报错信息的代码 之前没有好好去看微信的数字字典,看到这个400查了很多方案都没有解决,后来打印报错信息,出现的报错为 {"code":"PARAM_ERROR","detail":{"location":"body","value":100.0},"message":"无法将 JSON 输入源“/body/amount/total”映射到目标字段“总金额”中,此字段需要一个合法的 64 位有符号整数"} 微信订单金额是以分为单位的,价格只能传整数int类型给微信,不然也会报错400
StatusCode: 400, ReasonPhrase: 'Bad Request'?调用接口:https://api.mch.weixin.qq.com/v3/certificates 请求信息:{Method: GET, RequestUri: 'https://api.mch.weixin.qq.com/v3/certificates', Version: 1.1, Content: <null>, Headers:{ Authorization: WECHATPAY2-SHA256-RSA2048 mchid="1520812001",nonce_str="ncmy4ymj.t0b",timestamp="1604154531",serial_no="7E035D22E9BDA25D6AB8A952C9B2918DE8E4B28F",signature="BvhzYN/gRnyM2lthJHiQuAzocX0IGTErzt7de9Gl8FXwXvf5RVpBSPNBSTVdT8LVYkvYEP6Cj10vq7oTsiNllVBIlGGedbl47/iyU7nTzQ0iYvololyojcITzLcciRkq/KVuo6yu6ZNVP5t4R2WgX5dr6wg2RQOuIRSTkfBvWS5wSte7ruyvgR+nReAatrn/QHJ0pE0S5BynypleQCgBoQ65GPQ1lpumeDehCYqCEiTT8UuYQ0IbJ5MMMHFnj/m1sye6E4M4/deHuFfmWDDLP4GgldVHF5y6kLoFKRVu5QllrSJahAqc2lJeGweZyIPl9k1TJt34qWte4gAtlINm8g=="}} 返回信息:Id = 5, Status = RanToCompletion, Method = "{null}", Result = "StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:\r\n{\r\n Connection: keep-alive\r\n Keep-Alive: timeout=8\r\n X-Content-Type-Options: nosniff\r\n Request-ID: 08CFE8F5FC0510E703189DC4C24820E72628FCBE05-270924291\r\n Cache-Control: must-revalidate, no-cache\r\n Date: Sat, 31 Oct 2020 14:27:27 GMT\r\n Server: nginx\r\n Content-Length: 71\r\n Content-Language: zh-CN\r\n Content-Type: application/json; charset=utf-8\r\n}" 使用POSTMAN可以通,但程序死活通不了。 我用的代码就是文档中的代码:https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/qian-ming-sheng-cheng (拉到最下面的.Net代码)。
2023-08-24我也有这个问题,解决方案是先用官方工具把微信支付证书下下来,然后解析出这个证书的序列号,放在了申请的头文件中httpPost.addHeader("Wechatpay-Serial","微信支付证书序列号");才解决。但是这与官方推荐的通过编码动态获取证书的初衷不符合,也没找出为啥自己获取平台证书要加序列号,跑官方的demo工具不需要
微信支付v3显示"商户证书序列号有误。请使用签名私钥匹配的证书序列号。"请问如何解决?我可以确定密钥是从商户后台下载的,序列号用openssl计算出来的和商户后台获取到的是一样的,代码无论是我自己写的C++实现,PHP SDK 的示例代码,手动拼凑CURL命令都不行。只有官方那个java证书下载工具能通过。搞了两天两夜了,求高手支招。 PHP请求失败: [图片] 证书下载工具下载成功如图: [图片] <?php require_once('vendor/autoload.php'); use WeChatPay\Builder; use WeChatPay\Crypto\Rsa; use WeChatPay\Util\PemUtil; // 设置参数 // 商户号 $merchantId = '163587****'; // 从本地文件中加载「商户API私钥」,「商户API私钥」会用来生成请求的签名 $merchantPrivateKeyFilePath = 'file:///home/ender/PhpstormProjects/untitled/cert/apiclient_key.pem'; $merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE); // 「商户API证书」的「证书序列号」 $merchantCertificateSerial = '1995EF71A353F9A9D722344ECD3BC396835*****'; // 从本地文件中加载「微信支付平台证书」,用来验证微信支付应答的签名 $platformCertificateFilePath = 'file:///home/ender/PhpstormProjects/untitled/cert/wechatpay_522D8E1708CE368A65C89B5E1609DEA1E1C*****.pem'; $platformPublicKeyInstance = Rsa::from($platformCertificateFilePath, Rsa::KEY_TYPE_PUBLIC); // 从「微信支付平台证书」中获取「证书序列号」 $platformCertificateSerial = PemUtil::parseCertificateSerialNo($platformCertificateFilePath); // 构造一个 APIv3 客户端实例 $instance = Builder::factory([ 'mchid' => $merchantId, 'serial' => $merchantCertificateSerial, 'privateKey' => $merchantPrivateKeyInstance, 'certs' => [ $platformCertificateSerial => $platformPublicKeyInstance, ], ]); // 发送请求 $resp = $instance->chain('v3/certificates')->get( ['debug' => true] // 调试模式,https://docs.guzzlephp.org/en/stable/request-options.html#debug ); echo $resp->getBody(), PHP_EOL;
2023-08-09