微信支付 客户端提示支付签名 验证失败

  1. 做一个微信app支付,使用的是easy WeChat 4.x 版本。传了这几个参数,如图,openid没传。
    微信支付 客户端提示支付签名 验证失败
    我问了客户端调起支付使用的是服务器返回的参数,服务器签名也是用默认的md5(我看easy WeChat默认是md5)。一时间不知道哪里出现问题了。微信社区的答案没解决我的问题。。一下子蒙住了:sweat_smile:,key的话,我看有v2和v3,都设置成一样的了(不知道那个生效,反正都设一样应该没错)。
讨论数量: 6

是我使用easyWeChat 姿势不对嘛?以前不用easy WeChat时候遇到这个问题都是key的原因。。这次不知道咋搞的,搞了一天也没解决。。。

1年前 评论

1、只是使用支付的话,你也可以试试 yansongda/pay,然后配置,写代码,交叉验证一下,估计是密钥这些东西之类的填写错误。

2、我的 EasyWeChat 代码类似:

use EasyWeChat\Factory;
 $config = [
            'app_id' => config('me.wechat_consumer_mini_app_id'),
            'mch_id' => config('me.wechat_pay_mch_id'),
            'key' => config('me.wechat_pay_key'),   // API 密钥
            'notify_url' => route('pay_notify', null, true),     // 你也可以在下单时单独设置来想覆盖它
        ];
 $app = Factory::payment($config);//第一次使用三方库。

 $result = $app->order->unify([  //第2次使用三方库。
            'body' => $body,
            'out_trade_no' => $out_trade_no,
            'total_fee' => $total_fee,
            'spbill_create_ip' => config('me.app_ip'), // 可选,如不传该参数,SDK 将会自动获取相应 IP 地址
            'trade_type' => 'JSAPI',
            'openid' => $openid,
            'sign_type' => 'MD5',
            'time_expire' => $time_expire
        ]);
if (isset($result['return_code']) && $result['return_code'] == 'FAIL') {
            return output_error($result['return_msg']);
}
$params = $app->jssdk->bridgeConfig($result['prepay_id'], false); //第3次使用三方库。
return output_success(['params' => $params]); //output_success是我的自定义函数。

3、我这里是小程序支付。微信支付和支付宝支付都有不同的支付场景,于是参数可能不同。

1年前 评论
bneglect (楼主) 1年前

openid应该是必传的,否则谁付款微信不知道。

1年前 评论

公众号的必传openID

1年前 评论
bneglect (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!