Maison >développement back-end >tutoriel php >ThinkPHP微信扫码支付接口,thinkphp支付接口_PHP教程
最近折腾微信扫码支付,看了微信官方文档,找了很多网页,发现和文档/demo不匹配,现在自己算是弄出来了(文件名称有所更改),贴出来分享一下
一.将有用的官方lib文件和使用的相关文件放置到vendor当中
二.调用同一支付接口
WechatController
<span>//<span>调用同一支付接口<br /><span>public function <span>native(<span>$v_oid<span>=<span>'',<span>$v_amount<span>=<span>''){<br /> <span>ini_set(<span>'date.timezone',<span>'Asia/Shanghai');<br /> <span>error_reporting(<span>E_ERROR);<br /> <span>//<span>添加相关的类文件<br /><span> <span>vendor(<span>'Wxpay.WxPayApi');<br /> <span>vendor(<span>'Wxpay.log');<br /> <span>vendor(<span>'Wxpay.NativePay');<br /> <span>//<span>初始化日志<br /><span> <span>$logHandler<span>= new \<span>CLogFileHandler(<span>"../logs/"<span>.<span>date(<span>'Y-m-d')<span>.<span>'.log');<br /> <span>$log <span>= \<span>Log<span>::<span>Init(<span>$logHandler, <span>15);<br /> <span>//<span>接受订单信息<br /><span> <span>if(<span>trim(<span>$v_oid)<span><><span>"") <span>//<span>判断是否有传递订单号<br /><span> {<br /> <span>$v_oid <span>= <span>trim(<span>$v_oid);<br /> }<br /> <span>else<br /><span> {<br /> <span>$this<span>-><span>error(<span>'<span>订单号为空<span>',<span>U(<span>'User/index'));<br /> <span>exit;<br /> }<br /><br /> <span>$v_amount <span>= <span>trim(<span>$v_amount<span>*<span>100); <span>//<span>支付金额<br /><span><br /><span> <span>//<span>调用同一支付接口<br /><span> <span>$notify <span>= new \<span>NativePay();<br /> <span>$input <span>= new \<span>WxPayUnifiedOrder();<br /> <span>//<span>商品描述<span>----------------------------<span>需要参数传递<span>/<span>统一信息<br /><span> <span>$input<span>-><span>SetBody(<span>"<span>商品描述位置<span>");<br /> <span>//<span>附加数据<br /><span> <span>$input<span>-><span>SetAttach(<span>"<span>附加数据位置<span>");<br /> <span>//<span>商户订单号<br /><span> <span>$input<span>-><span>SetOut_trade_no(<span>$v_oid);<br /> <span>//<span>总金额<br /><span> <span>$input<span>-><span>SetTotal_fee(<span>$v_amount);<br /> <span>//<span>开始时间<br /><span> <span>$input<span>-><span>SetTime_start(<span>date(<span>"YmdHis"));<br /> <span>//<span>结束时间<br /><span> <span>$input<span>-><span>SetTime_expire(<span>date(<span>"YmdHis", <span>time() <span>+ <span>600));<br /> <span>//<span>商品标记<br /><span> <span>$input<span>-><span>SetGoods_tag(<span>"<span>商品标记位置<span>");<br /> <span>//<span>异步通知地址<span>,<span>不能携带任何参数<br /><span> <span>$input<span>-><span>SetNotify_url(<span>U(<span>'NotifyProcess'));<br /> <span>//<span>交易类型<br /><span> <span>$input<span>-><span>SetTrade_type(<span>"NATIVE");<br /> <span>//<span>商品<span>id<br /><span> <span>$input<span>-><span>SetProduct_id(<span>"123456789");<br /> <span>//<span>获取同一支付接口结果<br /><span> <span>$result <span>= <span>$notify<span>-><span>GetPayUrl(<span>$input);<br /> <span>$url2 <span>= <span>$result[<span>"code_url"];<br /><br /> <span>$this<span>-><span>assign(<span>'data',<span>urlencode(<span>$url2));<br /> <span>$this<span>-><span>assign('v_oid',$v_oid); $this->assign('v_amount',$v_amount/100); $this->display();}三.生成二维码</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
<span><span>三.</span><span><span>微信支付生成二维码</span><br /><span>public function <span>qrcode(){<br /> <span>error_reporting(<span>E_ERROR);<br /> <span>vendor(<span>'Wxpay.phpqrcode.phpqrcode');<br /> <span>$url <span>= <span>$_GET[<span>"data"];<br /> \<span>QRcode<span>::<span>png(<span>$url);<br />}<br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br /><span>四.异步处理</span><br /><span>具体处理流程和方式按个人需求</span>
<br /><span>//<span>微信异步查询订单机制<br /><span>public function <span>Queryorder(<span>$transaction_id)<br />{<br /> <span>$input <span>= new \<span>WxPayOrderQuery();<br /> <span>$input<span>-><span>SetTransaction_id(<span>$transaction_id);<br /> <span>$result <span>= \<span>WxPayApi<span>::<span>orderQuery(<span>$input);<br /> \<span>Log<span>::<span>DEBUG(<span>"query:" <span>. <span>json_encode(<span>$result));<br /> <span>if(<span>array_key_exists(<span>"return_code", <span>$result)<br /> <span>&& <span>array_key_exists(<span>"result_code", <span>$result)<br /> <span>&& <span>$result[<span>"return_code"] <span>== <span>"SUCCESS"<br /><span> <span>&& <span>$result[<span>"result_code"] <span>== <span>"SUCCESS")<br /> {<br /> <span>return true;<br /> }<br /> <span>return false;<br />}<br /><br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>五.再来个form表单展示二维码</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
<span><<span>form <span>action=<span>"" <span>method=<span>"post" <span>id=<span>"myForm-table"><br /> <<span>h2><span>订单信息</<span>h2><br /> <<span>div <span>class=<span>"orderNumber"><br /> <<span>p <span>class=<span>"a"><span>订单号:<span>"{$v_oid}"</<span>p><br /> <<span>p <span>class=<span>"b"><br /> <<span>span <span>class=<span>"left"><span>应付金额:<<span>strong><<span>em><span>{$v_amount}</<span>em><span>元</<span>strong></<span>span><br /> <<span>span <span>class=<span>"right"><span>付款后,飞行之翼客服会与您联系,如有问题请咨询<span>24<span>小时飞行热线 <span>400-700-2016</<span>span><br /> </<span>p><br /> </<span>div><br /> <<span>h2><span>微信支付</<span>h2><br /> <<span>img <span>src=<span>"{:U('qrcode')}?data={$data}" <span>alt=<span>"<span>微信扫码<span>"><br /> <<span>div <span>class=<span>"order-submit"><<span>a <span>href=<span>"javascript:<span>history<span>.<span>go<span>(-1);" <span>class=<span>"submitOrder Order"><span>返回其他支付方式</<span>a></<span>div><br /></<span>form></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br /><br /><br /><span>成功的图就不附上了,这是我遇到的问题,由于要重构,所以比较乱,无效代码也比较多,需要整理,记录下来,分享一二</span>
<span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
<br /><br />