< 返回 1.19 Joomla集成微信分销转账(PHP语言)遇到的几点问题及解决方案 - 博客

   最近在做一个分销的项目,基于joomla4来搭建。其中支付宝的分销提成已经完成了,下一期就是做微信的分销提成。之前也做过微信支付,但没有做到分销这一块,想到整个程序的框架都完成了,这个集成支付应该问题不大,初步预估2天时间完成。但最终却是大大的超过了预期,基本上搞了一个星期还没完成。其中的心酸曲折只有搞过微信支付的朋友才能体会...

基本功能

用户通过推广码引流,当自己推广的用户注册消费后将会得到一定比例的提成。当提成累计到一定数量后就可以使用支付宝或者微信提现。

集成微信转账到零钱功能

微信官方提供了compose包,按照我之前的开发经验,有了包,那么跑起来一个demo应该问题不大,但腾讯这个太坑了。

API的版本问题

首先需要理解,腾讯的API有两个版本V2/V3.这样导致他的API密钥也要有2个版本。需要注意您当前使用的API密钥的版本。(这个坑里搞了2个多小时)

两个证书

其次,这个这个包里面,需要试用两个证书。一个证书是商户证书,这个证书可以在微信支付后台下载。另外一个证书是微信平台的证书。这个证书用户是不能通过后台下载的,需要写代码来获得。为此微信支付弄了一个脚本可以帮我们完成。

获得证书脚本CertificateDownloader.php 的正确使用

这个脚本的使用说明有严重的问题。官网说使用下面的命令就可以了。其中需要自己替换参数。

composer exec CertificateDownloader.php -- -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath}

但我实际的操作中,发现使用这个方式会出现很多错误,并且这些错误基本上不能排查,都是很底层的报错。我在这个地方弄了差不多2天。就是因为太相信他们官方的文档了。最后我试着使用php的命令来执行这个CertificateDownloader.php的文件,居然成功了。

具体的操作如下,前往到certificateDownloader.php文件所在的目录,然后使用php在命里行中执行上面的代码,终于成功的下载了平台证书。

SSL证书的问题

当然这这个php的执行过程中会出现错误,提示ssl的问题。这个之前遇到过,因此,知道需要弄一个证书,然后配置一下就可以解决。具体可以参考文章 https://zhuanlan.zhihu.com/p/610047769

这里也不展开了。

示范API的调用问题

终于完成了平台证书的下载,第二步开始调用API.也是按照文档中的代码来跑,想到这次应该没有问题了吧。但还是让我失望了。这次提示

HTTP header缺少微信支付平台证书序列号(Wechatpay-Serial)

 我打印了一下获得平台证书的序列号,发现是正常的。并且在官方的代码说明中明明看到了有设置这个序列号的。

// 构造一个 APIv3 客户端实例
$instance = Builder::factory([
    'mchid'      => $merchantId,
    'serial'     => $merchantCertificateSerial,
    'privateKey' => $merchantPrivateKeyInstance,
    'certs'      => [
        $platformCertificateSerial => $platformPublicKeyInstance,
    ],
]);

通过百度,发现遇到这个问题的人很多。大概意思是我们需要自己再传一次。

   $resp = $instance
    ->chain('v3/transfer/batches')
    ->post([
		'headers'=> [ //这里加这个字段
			  'Wechatpay-Serial'=>$platformCertificateSerial  // 这里加上Wechatpay-Serial
		 ],
		'json' => [
        'appid'        => $appid,

 真不知道这个包的封装意义何在!写这些代码的程序员难道都不自己测试一下吗!真是坑人!

经验

以后凡事对接腾讯系的API接口都需要将工期预估多一些,对于他们给出的示范代码要保留怀疑。

当前章节: 1.19 Joomla集成微信分销转账(PHP语言)遇到的几点问题及解决方案

博客

第1章:经验分享
第2章:专题教程
第3章:扩展推荐
第13章:扩展更新日志
  • 内容提要
  • 留言讨论 (0)
  • 视频教程
   最近在做一个分销的项目,基于joomla4来搭建。其中支付宝的分销提成已经完成了,下一期就是做微信的分销提成。之前也做过微信支付,但没有做到分销这一块,想到整个程序的框架都完成了,这个集成支付应该问题不大,初步预估2天时间完成。但最终却是大大的超过了预期,基本上搞了一个星期还没完成。其中的心酸曲折只有搞过微信支付的朋友才能体会...

评论 (0)

  • 最新在前
  • 最佳在前

内容待完善

该课程提供视频版,可以观看完整的视频教程