本文主要介绍ThinkPHP实现微信支付(jsapi payment)流程教程的详细讲解,有需要的朋友可以参考一下。
之前写过一篇关于PHP实现微信支付(jsapi支付)的流程的文章。详见文章:PHP实现微信支付(jsapi支付)流程。
当时的环境并没有使用框架。它是通过在域名指向的目录下直接创建一个新目录,然后访问该目录来实现的。然而,当它被应用到框架中时,仍然存在一些问题。在ThinkPHP中,会报告错误,因为路由规则与支付授权目录不同。本文讲的是在TP中整合微信支付的过程。
Goose制作的SDK和文档只是让你看不懂而已。如果你努力工作,当你使用他们的时候你就会知道。文档和SDK不应该尽量简单易懂吗?难道只有硬改造才有可能展现成在鹅厂的高超技术吗?额& # 8230;是不是暴露了我的菜鸟属性& # 8230;其实SDK挺好用的,不过也是上一篇文章看到的。在支付完成回调功能上,确实让人感觉很迷茫。
对于不想被官方绕过的,以及想在TP中使用微信支付的,可以看看大神自己根据官方文档重构做的一个针对TP的支付SDK。我下载了源代码并阅读了它。代码非常优雅简洁,过程简单易懂。见博文:http://baijunyao.com/article/78.
我还是皱了皱眉,用了官方SDK,成功实现了支付。下面跟大家分享一下过程:
1.SDK下载和修改
仅此而已。如果你不知道,请看我上一篇文章:PHP实现微信支付(jsapi payment)的过程,里面详细的介绍了哪些下载的文件需要修改。
2.微信官方账号设置
A.您仍然需要设置网页的授权域名。这没什么特别的;
B.注意这里的支付授权目录。很多使用TP的人在使用重写模式的同时使用重写模式或者使用伪静态模式。此时生成的链接是:http://servername/home/blog/read/id/1;
如果使用PATHINFO模式,生成的链接是:http://servername/index . PHP/Home/Blog/read/id/1。例如,在主页模块下的博客控制器中通过某种方法进行支付。我们支付的授权目录应该是http://serverName/Home/Blog/或者http://serverName/index . PHP/Home/Blog/,这取决于我们自己的tp设置的URL模式。
3.支付流程
(1)统一订购
订单的支付参数配置与上一个基本相同。重点是支付回拨验证环节。因为需要多次调用,所以我直接把参数配置打包在application/common/common/function . PHP中,我的SDK放在项目根目录下的Api目录中,所以在介绍SDK的时候不使用Vendor function。
/* * *微信支付* @ paramstring $ OpenID OpenID * @ param string $商品商品名称* @ param string $附加附加参数,我们可以选择传递一个参数,例如order ID * @param string $order_sn订单号* @ param string $total_fee amount */function wxpay($ OpenID,$ goods,$order_sn,$ total _ fee,$ attach) {require _ once app _ root。"/Api/wxpay/lib/WxPay。Api.php & quot;require_once APP_ROOT。"/Api/wxpay/payment/WxPay。JsApiPay.php & quot;require_once APP_ROOT。'/Api/wx pay/payment/log . PHP & # 039;;//初始化日志$ loghandler = newclogfilehandler(app _ root,"/Api/wx pay/logs/& quot;。日期(& # 039;y-M-d & # 039;).'。日志& # 039;);$log = Log::Init($logHandler,15);$ tools = new jsapi pay();if(empty($ openId))$ openId = $ tools -& gt;get OpenID();$ input = new wxpayunifieorder();$ input -& gt;SetBody(商品);//商品名称$ input ->;set attach($ attach);//附加参数可以填充,也可以不填充。如果填充,字符串中不能有空格$ input->。SetOut _ trade _ no($ order _ sn);//订单号$ input ->;SetTotal _ fee($ total _ fee);//支付金额,单位:$ input ->;SetTime _ start(date(& quot;YmdHis & quot));//支付发起时间$ input ->:SetTime _ expire(date(& quot;YmdHis & quot,time()+600));//支付超时$ input ->;set goods _ tag(& quot;测试& quot);//$ input -& gt;SetNotify_url("http://& quot;。$ _服务器
(3)支持成功回调。
现在支付已经完成,您将输入与之前编写的链接相对应的方法,即
评论前必须登录!
注册