- 微信电商收付通所遇到的坑 基于TP5+wechatpay-guzzle-middleware开发
微信电商收付通开发完成已经2个月了,一直没有时间整理,现在抽个时间整理出来,我这边用的是TP5框架+官方的wechatpay-guzzle-middleware开发的电商通,现在把我遇到的坑给大家介绍一下。 1、电商收付通是需要绑定你所开发的业务的appid的(业务可能是公众号、APP、小程序),但前提要保证你的业务有涉及电商的东西,我们的小程序就是一个供需平台,导致绑定APPid时候被驳回了。 2、PHP需要大于7.1,官方的(wechatpay-guzzle-middleware)要求。 3、官方SDK都是guzzle发起请求,所有请先检查你的guzzle里面http_errors设置是否为:false,不然调试接口的时候,抛出400,500的header错误,哪里出问题都不知道。 4、【$merchantPrivateKey】为微信官方下载的私钥、【$wechatpayCertificate】为平台下载的证书。那么问题来了,第一次怎么下载证书?参照官方的sdk所写的方法,然后用apiv3密钥来解密出证书,保存到相应位置,就可以在【WechatPayMiddleware】里传入证书了。 5、官方SDK在针对微信图片上传签名错误解决方法,因为官方SDK把整个body加入了待签名串。 修改:wechatpay-guzzle-middleware\src\Auth\WechatPay2Credentials.php protected function buildMessage($nonce, $timestamp, RequestInterface $request) { $body = ''; if ($request->hasHeader('metaJson')) { $body = $request->getHeaderLine('metaJson'); } else { $bodyStream = $request->getBody(); // TODO: handle non-seekable stream if ($bodyStream->isSeekable()) { $body = (string)$bodyStream; $bodyStream->rewind(); } } return $request->getMethod()."\n". $request->getRequestTarget()."\n". $timestamp."\n". $nonce."\n". $body."\n"; } } 用来接收微信图片上传签名错误的方法。 同时guzzle发起POST的时候header需要增加:metaJson参数,值为图片上传的:{"filename":" filea.jpg ","sha256":" hjkahkjsjkfsjk78687dhjahdajhk "} 具体代码: $header = ['Accept'=>'application/json','Content-Type'=>'multipart/form-data','metaJson' => json_encode($meta)]; $data = [ 'headers' => $header, 'body' => $body //body拼接字符串 ]; 6、进件接口中,其实接口文档并没有说明header头需要传入Wechatpay-Serial,如果用官方的SDK需要多增加一个Wechatpay-Serial,另外签名还需要将传入的内参数容转换成json_encode一起在传入。此时Wechatpay-Serial会报序列号错误,这里的Wechatpay-Serial序列号需要从微信官方证书接口获取最新的序列号就可以了。 7、接口总算调通,这时候把 {"applyment_id": 2000002124775691,"out_request_no": "APPLYMENT_00000000001"}json_decode转换成成数组入库,发现applyment_id会自动转换成科学计数法。 【applyment_id是否需要这个看自己业务需求,其实有out_request_no就可以】 这是需要把json_decode变成如下:json_decode($json, TRUE, 512, JSON_BIGINT_AS_STRING); 8、如果出现【系统繁忙,请稍后重试】,别急,接口报了错的,统统给你返回“系统繁忙,稍后再试,其实是参数传的不对,检查自己的代码吧”。看看那个参数是不是为空。 这些就是我在微信电商通所遇到的问题,如果有不明白的网友,可以留言给我。
2020-06-15 - 开通电商收付通的服务商无法绑定授权电商平台的小程序?
开通电商收付通的服务商无法绑定授权电商平台的小程序?
2023-10-26