yansongda/pay

微信公众号支付服务商模式下出现错误 "请求中含有未在API文档中定义的参数"

Closed this issue · 4 comments

包版本号

V3.5.0

问题描述

微信公众号支付,服务商模式出现错误 "请求中含有未在API文档中定义的参数"(单商户支付是可以的)

你的代码

config :
'test' => [
// 必填-商户号,服务商模式下为服务商商户号
'mch_id' => '1575503**21',
// 选填-v2商户私钥
'mch_secret_key_v2' => 'be9ee1a1f7d2c0530f5ef2139e13624038',
// 必填-商户秘钥
'mch_secret_key' => 'be9ee1a1f7d2c0530f5efb9e2133624038',
// 必填-商户私钥 字符串或路径
'mch_secret_cert' => BASE_PATH . '/config/wechat/payconfig/service/apiclient_key.pem',
// 必填-商户公钥证书路径
'mch_public_cert_path' => BASE_PATH . '/config/wechat/payconfig/service/apiclient_cert.pem',
// 必填
'notify_url' => env('APP_URL') . "/api/wechat/pay/notify/elwjoerpmb",
// 选填-公众号 的 app_id
'mp_app_id' => 'wxffc212312341c766c5',
// 选填-小程序 的 app_id
'mini_app_id' => '',
// 选填-app 的 app_id
'app_id' => '',
// 选填-合单 app_id
'combine_app_id' => '',
// 选填-合单商户号
'combine_mch_id' => '',
// 选填-服务商模式下,子公众号 的 app_id
'sub_mp_app_id' => '',
// 选填-服务商模式下,子 app 的 app_id
'sub_app_id' => '',
// 选填-服务商模式下,子小程序 的 app_id
'sub_mini_app_id' => '',
// 选填-服务商模式下,子商户id
'sub_mch_id' => '163542*1451',
// 选填-微信公钥证书路径, optional,强烈建议 php-fpm 模式下配置此参数
'wechat_public_cert_path' => [
'' => '',
],
// 选填-默认为正常模式。可选为: MODE_NORMAL, MODE_SERVICE
'mode' => Pay::MODE_SERVICE,
],

代码;
public function index()
{
try {
$add_data = [
'_config' => 'test', // 多租户
'out_trade_no' => ( string ) time(),
'description' => 'test',
'settle_info' => ["profit_sharing" => true],
'amount' => [
'total' => 1,
],
'payer' => [
'openid' => 'odver***-nvKbQTvZrc',
],

       ];
       $res = $this->pay->wechat()->mp($add_data);
       var_dump($res);
       return [$res];
   }catch (\Throwable $e){
       var_dump($e->getMessage());
       return [$e->getMessage()];
   }

}

报错详情

微信统一下单出现错误 "请求中含有未在API文档中定义的参数"

sdk 日志

nginx/apache 日志

涉及到 异步通知、同步通知 的问题,请贴出来

日志?

对着微信官方文档看看哪些参数多传了

$pay->wechat()->mp( $params );这样写日志没有生成
加了 ['_force' => true], log才会生成了, $pay->wechat( array_merge($config, ['_force' => true]) )->mp( $params );
从日志里看 是detail":{"location":null,"value":["/body/payer/openid",openid 我检查了,没有错啊