登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: 微信支付 php 版本 sdk 的坑     [回主站]     [分站链接]
微信支付 php 版本 sdk 的坑
clq
浏览(324) - 2019-06-07 16:37:10 发表 编辑

关键字: 微信

[2019-06-15 18:08:24 最后更新]
微信支付 php 版本 sdk 的坑


1.
各种配置不能少

修改 native.php

1.1 客户支付成功时的通知地址,注意,这个地址要返回正确的格式给微信后台,否则会被多次调用
$input->SetNotify_url("http://xxx/wxpay.php");

其余的基本上在 WxPay.Config.php 修改,其实这里也有修改通知地址的,不过那个是用模式1的,现在一般都用更简单的模式2,所以生效的是前面的那个

1.2
GetAppId //可以是小程序的 appid 或者是公众号的 appid ,很多人都很意外小程序的也可以用吧.不过小程序本身就是加强版的公众号嘛.

1.3
GetMerchantId //商户号,直接在 "微信商户平台" 看就可以了.
要注意的是这个并不是公众账号,也不是小程序的登录账号,而是它们关联来用来支付的另外的独立账号.
修改某些参数时还要装控件,而这个控件目前的最新 firefox 是不支持的,用 google 的 chrome 比较好.

1.4
GetNotifyUrl //这个和 1.1 其实是一样的,用在的地方不一样而已,两者设置成同样的吧,免得节外生枝.

1.5
GetKey //KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置), 请妥善保管, 避免密钥泄露
这个非常关键,而且已经有支付在工作的造成不要再设置,会让它们失效的! 因为这个信息只显示一次!
所以一定要保存好,后面做的一定要找到以前设置好的,不要再重新生成!!!
如果已经做有支付的小程序或者是公众号的那铁定是已经有了的,不要再重新生成.

1.6
还有一点很崩溃的,默认这些错误并不会提示!!! 很大一部分原因是官方代码里把它们 try 起来了,所以用可调试的 ide 来调试吧
或者可以先打开   的 try 部分.
例如 WxPay.Api.php 中的函数 reportCostTime 中有如下代码

        try{
            self::report($config, $objInput);
        } catch (WxPayException $e){
            //不做任何处理
        }

2.
curl出错,错误码:60
参考 https://www.cnblogs.com/rainblack/p/5433118.html
如下是运行微信支付测试代码时出错代码:

Fatal error: Uncaught exception ‘WxPayException‘ with message ‘curl出错,错误码:60‘ in C:\wwwroot\fangbei\lib\WxPay.Api.php:564 Stack trace: #0 C:\wwwroot\fangbei\lib\WxPay.Api.php(62):
WxPayApi::postXmlCurl(‘<xml><appid><![...‘, ‘https://api.mch...‘, false, 6) #1 C:\wwwroot\fangbei\pay\jsapi.php(36):
WxPayApi::unifiedOrder(Object(WxPayUnifiedOrder)) #2 {main} thrown in C:\wwwroot\fangbei\lib\WxPay.Api.php on line 564

解决于下

第538行

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验

修改为

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//严格校验

>>原理就是将比较严格的 ssl 安全套接字校验改得宽松一点


3.
time_expire时间过短,刷卡至少1分钟,其他5分钟

解决方法:在生成预支付订单号时,不填写time_expire字段 因为这个字段不是必须填写的。

4.
通知接收地址程序可以参考 notify.php 基本上就是要按格式生成一个 xml
应该只要两个字段,参考 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_7&index=8
感觉入参中的 openid 是很重要的,可以代表一个微信用户在这个 app 中的唯一标识.









clq  2019-06-14 11:48:57 发表 编辑

 //clq 返回内容的官方文档在 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_7&index=8
 //clq 请求中的参数官方文档在 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1

clq  2019-06-15 18:08:24 发表 编辑

//clq 参数要求在 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=4_2  其中说明了订单号是不能重复的

$input->SetOut_trade_no($pay_id);   //clq 这个应该是用户自定义的产品 id

如果这个标识重复使用了,在目前的 php sdk 中会报 "访问接口IP,缺少必填参数user_ip" ...... 唉,这完全对不上号嘛. 而且一样是高度状态下才会提示,运行状态下表现为二维码不显示.


总数:2 页次:1/1 首页 尾页  
总数:2 页次:1/1 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1