thinkphp微信上传永久素材报41005错误解决办法

thinkphp微信上传永久素材报41005错误说明传参值有误,正确的传参方式如下:
例如:

$filepath= "themes/simplebootx/Public/assets/images/banner-inner-fail.jpg";
if(class_exists('\CURLFile')){
    $data['media'] = new \CURLFile(realpath($filepath));
}else{
    $data['media'] = '@'.realpath($filepath);
}
if (!$filepath) throw new \Exception('资源路径错误!');

WechatAuth.class.php类库中更改materialAddMaterial方法如下:

public function materialAddMaterial($filename, $type, $description = '')
       {
        //将$filename = realpath($filename);更改为:

       if(class_exists('\CURLFile')){
           $filename = new \CURLFile(realpath($filename));
       }else{
           $filename = '@'.realpath($filename);
       }

       if (!$filename) throw new \Exception('资源路径错误!');

       $data = array(
           'type' => $type,
           'media' => $filename,//将'media' => "@{$filename}"改为'media' => $filename
       );

       if ($type == 'video') {
           if (is_array($description)) {
               //保护中文,微信api不支持中文转义的json结构
               array_walk_recursive($description, function (&$value) {
                   $value = urlencode($value);
               });
               $description = urldecode(json_encode($description));
           }
           $data['description'] = $description;
       }
       return $this->api('material/add_material', $data, 'POST', '', false);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 ThinkPHP 框架中的官方扩展 think-pay 来实现微信支付功能。具体操作可以参考如下步骤: 1. 安装 think-pay 扩展 在项目根目录下执行以下命令: ``` composer require yansongda/pay -vvv ``` 2. 配置支付参数 在 config 目录下创建 pay.php 配置文件,填写微信支付相关参数,例如: ```php <?php return [ // 微信支付参数 'wechat' => [ 'appid' => 'your_appid', 'mch_id' => 'your_mch_id', 'key' => 'your_key', 'notify_url' => 'your_notify_url', 'cert_client' => 'path/to/your/apiclient_cert.pem', // optional,退款、红包等需要用到 'cert_key' => 'path/to/your/apiclient_key.pem', // optional,退款、红包等需要用到 ], ]; ``` 3. 编写支付代码 在控制器中编写支付代码,例如: ```php <?php namespace app\index\controller; use think\Controller; use think\facade\Config; use Yansongda\Pay\Pay; class PayController extends Controller { // 微信支付 public function wechatPay() { // 获取支付参数 $params = [ 'out_trade_no' => 'your_out_trade_no', // 商户订单号 'total_amount' => 1, // 订单总金额,单位为分 'subject' => 'your_subject', // 订单标题 ]; // 发起微信支付 $pay = Pay::wechat(Config::get('pay.wechat'))->app($params); // 返回支付结果 return $pay; } } ``` 4. 处理支付结果 在支付回调页面中处理支付结果,例如: ```php <?php namespace app\index\controller; use think\Controller; use think\facade\Request; use think\facade\Config; use Yansongda\Pay\Pay; class NotifyController extends Controller { // 微信支付回调 public function wechatNotify() { // 获取支付回调参数 $data = Request::param(); // 处理支付回调 $pay = Pay::wechat(Config::get('pay.wechat'))->verify($data); if ($pay->return_code === 'SUCCESS' && $pay->result_code === 'SUCCESS') { // 支付成功,处理业务逻辑 // ... // 返回支付成功结果 return Pay::wechat(Config::get('pay.wechat'))->success(); } else { // 支付失败,返回支付失败结果 return Pay::wechat(Config::get('pay.wechat'))->fail(); } } } ``` 以上就是使用 ThinkPHP 实现微信支付的基本步骤,具体细节还需根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值