snowlyg/wechatpay-guzzle 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

snowlyg/wechatpay-guzzle

Composer 安装命令:

composer require snowlyg/wechatpay-guzzle

包简介

微信支付v3接口-商户进件提交,状态查询,以及图片上传

关键字:

README 文档

README

微信支付v3 接口-特约商户进件提交,状态查询,以及图片上传 , 使用 https://github.com/snowlyg/wechatpay-guzzle 实现微信签名认证。

环境要求

  • PHP 5.5+ / PHP 7.0+
  • guzzlehttp/guzzle 6.0+

注意:PHP < 7.2 需要安装 bcmath 扩展

安装 composer
  composer require snowlyg/wechatpay-guzzle

使用方法

参考:https://github.com/wechatpay-apiv3/wechatpay-guzzle-middleware/blob/master/README.md

图片数据获取
     // $filepath 图片地址
     $imginfo     = pathinfo($filepath);
     $picturedata = file_get_contents($filepath);
     $sign        = hash('sha256', $picturedata);
     $meta        = [
          "filename" => $imginfo['basename'],
           "sha256"   => $sign,
      ];

     $filestr = json_encode($meta);
图片 body 生成
     public function getBody($filestr, array $imginfo, $picturedata)
     {
         $boundarystr = "--{$this->boundary}\r\n";
         $out         = $boundarystr;
         $out         .= 'Content-Disposition: form-data; name="meta";'."\r\n";
         $out         .= 'Content-Type: application/json; charset=UTF-8'."\r\n";
         $out         .= "\r\n";
         $out         .= "".$filestr."\r\n";
         $out         .= $boundarystr;
         $out         .= 'Content-Disposition: form-data; name="file"; filename="'.$imginfo['basename'].'";'."\r\n";
         $out         .= 'Content-Type: image/'.$imginfo['extension'].';'."\r\n";
         $out         .= "\r\n";
         $out         .= $picturedata."\r\n";
         $out         .= "--{$this->boundary}--\r\n";
         return $out;
     }
图片签名
 // 上传图片
    $resp = $client->request('POST', 'https://api.mch.weixin.qq.com/v3/...', [
        'body' =>\GuzzleHttp\Psr7\stream_for($body),
        // meta的json串 ,签名使用
       "metaJson"     => '{ "filename": "filea.jpg", "sha256": " hjkahkjsjkfsjk78687dhjahdajhk " }',
        'headers' => [ 
               'Accept'       => 'application/json',
               "Content-Type" => " multipart/form-data;boundary=boundary",
            ]
    ]);
进件敏感数据加密
    public function getEncrypt($str)
    {
        $public_key = file_get_contents($this->wechat_public_cert);
        $encrypted = '';
        if (openssl_public_encrypt($str, $encrypted, $public_key, OPENSSL_PKCS1_OAEP_PADDING)) {
            $sign = base64_encode($encrypted);
        } else {
            throw new Exception('encrypt failed');
        }

        return $sign;
    }

开发插曲

写此功能的时候,在微信开放社区找到一个写过次功能的哥们联系方式。本来想向他请教一下,以免自己少走弯路。没想到这哥们直接开口要 300 大洋....

看来没法偷懒了,只能自己写了。

在微信开放社区找到很多朋友分享的代码,非常感谢他们。

还有微信官方文档的微信签名 sdk , https://github.com/wechatpay-apiv3/wechatpay-guzzle-middleware

联系交流

如果你发现了BUG或者有任何疑问、建议,请通过issue进行反馈。

snowlyg/wechatpay-guzzle 适用场景与选型建议

snowlyg/wechatpay-guzzle 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 142 次下载、GitHub Stars 达 13, 最近一次更新时间为 2020 年 04 月 11 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「wechatpay」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 snowlyg/wechatpay-guzzle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 snowlyg/wechatpay-guzzle 我们能提供哪些服务?
定制开发 / 二次开发

基于 snowlyg/wechatpay-guzzle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 142
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 14
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 13
  • Watchers: 1
  • Forks: 6
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2020-04-11