黔优媒体网-软文媒体自助发稿平台!
  1. 行业资讯
  2. 正文

Tp框架实现微信支付接口

来源:黔优媒体网   时间:2024-09-19

这篇文章主要为大家详细介绍了thinkphp微信公众号支付接口,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Thinkphp微信公众号支付接口,供大家参考,具体内容如下

第一步  先把文件夹的那两个图片 配置成一样的路径 除了域名要改 其他保持一致。

第二步  把 Weixinpay 这个文件夹放在 \ThinkPHP\Library\Vendor  将Weixinpay文件夹放置到这个Vendor文件夹中

第三步  把  WxJsAPIController.class.php 这个php文件  \Home\Controller  这里面

第四步  把 WxJsAPI这个文件夹  放置在 \Home\View  这个里面

第五步 成功调用微信公众号支付功能

jsApiCall.html

 !DOCTYPE html 
 html 
 head 
 meta http-equiv= Content-Type content= text/html; charset=utf-8 / 
 meta name= #39;viewport #39; content= #39;width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0 #39;/ 
 title 微信安全支付 /title 
 script type= text/javascript 
 //调用微信JS api 支付
 function jsApiCall()
 WeixinJSBridge.invoke(
 #39;getBrandWCPayRequest #39;,
 ?php echo $jsApiParameters; ? ,
 function(res){
 WeixinJSBridge.log(res.err_msg);
 if(res.err_msg == get_brand_wcpay_request:ok ){
 //alert(res.err_code+res.err_desc+res.err_msg);
 /*这里写如果支付成功的话执行什么操作*/
 }else{
 //返回跳转到订单详情页面
 alert(支付失败);
 function callpay()
 if (typeof WeixinJSBridge == undefined ){
 if( document.addEventListener ){
 document.addEventListener( #39;WeixinJSBridgeReady #39;, jsApiCall, false);
 }else if (document.attachEvent){
 document.attachEvent( #39;WeixinJSBridgeReady #39;, jsApiCall); 
 document.attachEvent( #39;onWeixinJSBridgeReady #39;, jsApiCall);
 }else{
 jsApiCall();
 /script 
 /head 
 body 
 button >

WxJsAPIController.class.php

 ?php
namespace Home\Controller;
use Think\Controller;
class WxJsAPIController extends Controller{
 public function _initialize()
 //引入WxPayPubHelper
 vendor( #39;Weixinpay.WxPayPubHelper #39;);
 public function jsApiCall()
 //使用jsapi接口
 $jsApi = new \JsApi_pub();
 //=========步骤1:网页授权获取用户openid============
 //通过code获得openid
 if (!isset($_GET[ #39;code #39;]))
 //触发微信返回code码
 $rUrl=urlencode(C( #39;WxConfig.JS_API_CALL_URL #39;). #39;/id/ #39;.$_GET[id]); 
 /*注意一下这个 id 是为了可以成功的传个 id值才这样写 如果你不需要的话也可以直接写成
 $rUrl=urlencode(C( #39;WxConfig.JS_API_CALL_URL #39;));
 $this- redirect( #39;WxJsAPI/jsApiCall #39;,array( #39;id #39; = 55),0, #39;页面跳转中... #39;);
 我是这样穿这个id过来的值得你们也可以自己改成其他的来传这个id 或是删除他不要

$jsApi- setCode($code); $openid = $jsApi- getOpenId();//openid 这里是为了获取用户当前的openid 如果你有做微信登陆的话就可以无视他。 //=========步骤2:使用统一支付接口,获取prepay_id============ //使用统一支付接口 $unifiedOrder = new \UnifiedOrder_pub(); /*此处做数据库的查询 这里操作数据库把产品信息显示出来*/ /*此处做数据库的查询 这里操作数据库把产品信息显示出来*/ //设置统一支付接口参数 //设置必填参数 //appid已填,商户无需重复填写 //mch_id已填,商户无需重复填写 //noncestr已填,商户无需重复填写 //spbill_create_ip已填,商户无需重复填写 //sign已填,商户无需重复填写 $NOTIFY_URL= 你的域名/index.php/Home/WxJsAPI/notify $unifiedOrder- setParameter( openid ,$openid);//openid $unifiedOrder- setParameter( body , #39;商品的名字 #39;);//商品描述 $unifiedOrder- setParameter( out_trade_no , #39;123456789 #39;);//商户订单号 $unifiedOrder- setParameter( total_fee ,1*100);//总金额 微信的钱1*100等于1 $unifiedOrder- setParameter( notify_url ,$NOTIFY_URL);//通知地址 $unifiedOrder- setParameter( trade_type , JSAPI //交易类型 //非必填参数,商户可根据实际情况选填 //$unifiedOrder- setParameter( sub_mch_id , XXXX //子商户号 //$unifiedOrder- setParameter( device_info , XXXX //设备号 //$unifiedOrder- setParameter( attach , XXXX //附加数据 //$unifiedOrder- setParameter( time_start , XXXX //交易起始时间 //$unifiedOrder- setParameter( time_expire , XXXX //交易结束时间 //$unifiedOrder- setParameter( goods_tag , XXXX //商品标记 //$unifiedOrder- setParameter( openid , XXXX //用户标识 //$unifiedOrder- setParameter( product_id , XXXX //商品ID $prepay_id = $unifiedOrder- getPrepayId(); // echo $prepay_id;exit(); //=========步骤3:使用jsapi调起支付============ $jsApi- setPrepayId($prepay_id); $jsApiParameters = $jsApi- getParameters(); $WEB_HOST= #39;你的域名 #39;;//填写的话 如 http://nicaicai.imwork.net 最后面不用加 / $this- assign( #39;HOSTS #39;,$WEB_HOST); $this- assign( #39;jsApiParameters #39;,$jsApiParameters); $this- display(); //echo $jsApiParameters; public function notify() //使用通用通知接口 $notify = new \Notify_pub(); //存储微信的回调 $xml = $GLOBALS[ #39;HTTP_RAW_POST_DATA #39;]; $notify- saveData($xml); //验证签名,并回应微信。 //对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败, //微信会通过一定的策略(如30分钟共8次)定期重新发起通知, //尽可能提高通知的成功率,但微信不保证通知最终能成功。 if($notify- checkSign() == FALSE){ $notify- setReturnParameter( return_code , FAIL //返回状态码 $notify- setReturnParameter( return_msg , 签名失败了啊 //返回信息 }else{ $notify- setReturnParameter( return_code , SUCCESS //设置返回码 $returnXml = $notify- returnXml(); echo $returnXml; //==商户根据实际情况设置相应的处理流程,此处仅作举例======= //以log文件形式记录回调信息 // $log_ = new Log_(); $log_name= ROOT. /Public/notify_url.log //log文件路径

//此处应该更新一下订单状态,商户自行增删操作 log_result($log_name, 【通信出错】:\n .$xml. \n elseif($notify- data[ result_code ] == FAIL ){

//此处应该更新一下订单状态,商户自行增删操作 log_result($log_name, 【业务出错】:\n .$xml. \n else{ /*查看支付成功的返回值请去 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 */ $xmlss=$notify- data[ out_trade_no //订单号 $total_fee=$notify- data[ #39;total_fee #39;];//订单总金额,单位为分,详见支付金额 /*更新订单状态这里写数据库的操作*/ /*更新订单状态这里写数据库的操作*/ //此处应该更新一下订单状态,商户自行增删操作 log_result($log_name, 【支付成功】:\n .$xml. \n //商户自行增加处理流程, //例如:更新订单状态 //例如:数据库操作 //例如:推送支付完成信息 // 打印log public function log_result($file,$word) $fp = fopen($file, a flock($fp, LOCK_EX) ; fwrite($fp, 执行日期: .strftime( %Y-%m-%d-%H:%M:%S ,time()). \n .$word. \n\n flock($fp, LOCK_UN); fclose($fp); ?

【相关推荐】

1. 特别推荐:“php程序员工具箱”V0.1版本下载

2. 微信小程序完整源码下载

3. 微信小程序demo:仿网易云音乐

以上就是Tp框架实现微信支付接口的详细内容,更多请关注php中文网其它相关文章!

微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!


下一篇:没有了
【免责申明】黔优媒体网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优媒体网官方立场,请读者仅做参考,本文标题:Tp框架实现微信支付接口;欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法/违规的内容,请您立即联系我们及时修正或删除。(邮箱号: kefu@qianu.com)