这是因为使用了老版本的EasyWechat(3.x版本及以下),导致创建订单时,有时服务器IP(spbill_create_ip)会获取成ipv6的,有时候获取成ipv4,而微信那边又不认识ipv6,只认识ipv4,所以就会出现有时候能支付,有时候缺少参数total_fee了。。。
有两种方式:
方式一:更新EasyWechat版本
方式二:创建订单的参数里面,增加spbill_create_ip写死,不过不是很推荐
...
<?php
use EasyWeChat\Payment\Order;
$attributes = [
'trade_type' => 'JSAPI', // JSAPI,NATIVE,APP...
'body' => 'iPad mini 16G 白色',
'detail' => 'iPad mini 16G 白色',
'out_trade_no' => '1217752501201407033233368018',
'total_fee' => 5388, // 单位:分
'notify_url' => 'http://xxx.com/order-notify', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
'openid' => '当前用户的 op