最近接触一个新的模块《智慧收款》后台配置好默认的微信参数,新建门店然后门店不设置参数的情况下,门店可以用微信扫码但只要门店设置自己的微信收款商戶参数就不行,总提示“订单创建失败,收款失败”
反复找原因发现,支付宝扫码的时候可以支持新建门店以自己的支付宝商户参数收款,唯独就微信问题看来不是配置参数的问题,应该是代码方面的问题
这个模块的目录结构相对比较简单,大部分核心的代码都在site.php这個文件里直接读代码,找到调用微信扫码付款的这一部分:doMobileDowxpayerweima()这个函数
进一步查看找到原因了原来发起微信支付他都是读取的“bobo_pay_wxsetting”这张表,而这张表里记录的是系统默认的配置参数并没有读取“bobo_pay_mendianwxpaysetting”这张门店参数配置表
但是他的“$body”参数却又是做了一个三目运算取的“$mendianset['body']”門店参数,可能是开发这个模块的人粗心了所以我们要仿照“$body”对“$appid”和“$mch_id”进行修改。
保存一下代码再调试一下发现还是不能生存微信付款二维码,通过调试查看又得到新的错误:
没办法再进一步查看代码吧:
查看“wxprecreate”这个函数代码,又发现新的问题:
通过对比官方微信支付文档发现根本没有设置“Sub_”的参数,可能他是想设置服务商接口但是现在的微信支付又不能通过服务商发起代付,必须要商户ID和商户公众号APPID一致才能发起支付所以我们还需要再改:
这回总该行了吧?可惜....还是不行又报了新的错误:
熟悉微信支付SDK的应该知噵,签名算法是在“WxPay.Data.php”这个文件的所以直接定位过去,找到:“MakeSign”函数:
通过对比官方SDK的签名算法key就是微信支付的商户密钥,那他这裏的key是哪来的呢进一步跟踪代码,找到了:
又是直接读取的站点默认配置参数难怪报签名错误,前面都改成了新建门店自己的微信商戶配置这里还是默认的站点key,能不报错吗
可这回修改没那么简单了因为“bobo_pay_wxsetting”默认站点配置表里有key的字段,而门店参数表里却没有同時后台的配置门店微信参数里也没有设置key的地方啊
没办法,只能修改代码修改数据库了:
温馨提示: 隐藏内容需要 后才能查看, 评论后请 .
先完荿数据库key字段的扩充
再找到门店微信配置的页面“index1.html”增加代码:
再找到后台处理POST提交的代码,添加对key的处理:
然后还不能忘了再回到“dowxpayerweima”函数里增加SESSION读取key值的处理:
温馨提示: 隐藏内容需要 后才能查看, 评论后请 .
这下可总算解决了,保存代码清理缓存在后台对新建门店的微信配置参数里,填入“商户支付密钥key”再试试收银界面的微信支付扫码,perfect可以了!
只服务一小部分有独立思考的高端用户!