微信支付在THINKPHP中的使用;

第一步:下载官方PHP支付demo

第二步:将文件夹拷贝到thinkphp 框架文件的vendor中;

第三步:稍微修改源码,把PHP脚本改成类的形式;例;

    

class js_api_call extends \Think\Controller{
    public function js_api_call(){
        //构造方法
        vendor ( ‘phpPay.WxPayPubHelper.WxPayPubHelper‘ );
    }

    public function goToPay($payid){
    //使用jsapi接口

    $jsApi = new \JsApi_pub();

    //=========步骤1:网页授权获取用户openid============
    //通过code获得openid
    if (!isset($_GET[‘code‘]))
    {
        //触发微信返回code码

        $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL,$payid);

        Header("Location: $url");
    }else
    {
        //获取code码,以获取openid
        $code = $_GET[‘code‘];
        $jsApi->setCode($code);

        $openid = $jsApi->getOpenId();
    }

    //=========步骤2:使用统一支付接口,获取prepay_id============
    //使用统一支付接口
    //获取订单id
    $orderids = $_GET[‘state‘];
    $res = M(‘order‘)->where(‘id in (‘.$orderids.‘)‘)->select();
    //计算价格 等等
    $totle = 0;
    $tradeNo = null;
    $oid = null;
    foreach($res as $row){
        $totle += $row[‘totleprice‘];
        $tradeNo[] = $row[‘tradeno‘];
        $oid[] = $row[‘id‘];
    }
    $totle = $totle*100;
    $oid = implode(‘,‘,$oid);
    $unifiedOrder = new \UnifiedOrder_pub();
    //设置统一支付接口参数
    //设置必填参数
    //appid已填,商户无需重复填写
    //mch_id已填,商户无需重复填写
    //noncestr已填,商户无需重复填写
    //spbill_create_ip已填,商户无需重复填写
    //sign已填,商户无需重复填写
    //自定义订单号,此处仅作举例
    $timeStamp = time();
    $out_trade_no = WxPayConf_pub::APPID."$timeStamp";

    $unifiedOrder->setParameter("openid","$openid");//商品描述
    $unifiedOrder->setParameter("body","$out_trade_no");//商品描述
    $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号
    $unifiedOrder->setParameter("total_fee","$totle");//总金额
    $unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址
    $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
    //非必填参数,商户可根据实际情况选填
    //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号
    //$unifiedOrder->setParameter("device_info","XXXX");//设备号
    $unifiedOrder->setParameter("attach","$oid");//附加数据
    //$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间
    //$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间
    //$unifiedOrder->setParameter("goods_tag","$oid");//商品标记
    //$unifiedOrder->setParameter("openid","XXXX");//用户标识
    //$unifiedOrder->setParameter("product_id","XXXX");//商品ID
    $prepay_id = $unifiedOrder->getPrepayId();
    //=========步骤3:使用jsapi调起支付============
    $jsApi->setPrepayId($prepay_id);

    $jsApiParameters = $jsApi->getParameters();
    echo ‘
            <html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    <title>微信安全支付</title>

    <script type="text/javascript">

        //调用微信JS api 支付
        function jsApiCall()
        {
            WeixinJSBridge.invoke(
                "getBrandWCPayRequest",
                ‘.$jsApiParameters.‘,
                function(res){
                    WeixinJSBridge.log(res.err_msg);
                    //alert(res.err_code+res.err_desc+res.err_msg);
                     window.location.href ="http://demo.yps.deetaa.com/index.php?s=/Wechat/Order/olist.html";
                }
            );
        }

        function callpay()
        {
            if (typeof WeixinJSBridge == "undefined"){
                if( document.addEventListener ){
                    document.addEventListener("WeixinJSBridgeReady", jsApiCall, false);
                }else if (document.attachEvent){
                    document.attachEvent("WeixinJSBridgeReady", jsApiCall);
                    document.attachEvent("WeixinJSBridgeReady", jsApiCall);
                }
            }else{
                jsApiCall();
            }
        }
        callpay();
        </script>
    </head>
    </html>
    ‘;
    }
}
?>

第四步:调用;

控制器中:

时间: 2024-11-10 18:53:57

微信支付在THINKPHP中的使用;的相关文章

PHP微信支付开发实例

这篇文章主要为大家详细介绍了PHP微信支付开发过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PHP微信支付开发过程,分享给大家,供大家参考,具体内容如下 1.开发环境 Thinkphp 3.2.3 微信:服务号,已认证 开发域名:http://test.paywechat.com (自定义的域名,外网不可访问) 2.需要相关文件和权限 微信支付需申请开通 微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/home/index.html 微信支付开发者文档

微信支付开发,设置支付授权目录

开发微信支付的过程中,可能所有的流程都搞明白了,可能在配置公众号的支付授权目录时会遇到问题,会不大好理解. 如果支付授权目录没有设置正确,在请求JSAPI时,会提示"3当前页面的url未注册"的错误. 怎么设置呢,首先要看你支付的当前页面URL,比如是: http://www.xxx.com/wxpay/js_api_call.php 你就必须填写: http://www.xxx.com/wxpay/ 假如是: http://www.xxx.com/wxpay/order/id/56.

微信支付-JSAPI模式开发

之前写了两篇文章都不是关于技术类的,这个号主要还是以分享技术为主,第三篇必须得上技术类的文章,不然会对不起大家的,所以就有了今天的文章. 现在微信支付开发很火,也不是特别难,网上也很多别人整理的教程,也有官方开发文档.主要是每个人在开发的过程中常常会遇到一些不同的小问题,然后怎么去解决这才是最关键的.作为web开发者,尤其是后端开发者,不会微信支付开发的话就真的很low. 最近做了一个在线租车的微信项目,项目其中正好有微信支付这个功能,我在做的过程中也遇到了一些小问题,虽说之前也做过,但之前都没

PHP微信支付开发

1.开发环境 Thinkphp 3.2.3 微信:服务号,已认证 开发域名:http://test.paywechat.com (自定义的域名,外网不可访问) 2.需要相关文件和权限 微信支付需申请开通 微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/home/index.html 微信支付开发者文档:https://pay.weixin.qq.com/wiki/doc/api/index.html 微信支付SDK下载地址:https://pay.weixin.

微信支付之JSAPI公众号支付

前提 本教程默认以下几点你已经完全满足: 开通了认证后的服务号 服务号开通的微信支付的认证 腾讯给你的邮件中有商户登录的账号和密码 拥有一个可供上传代码和设置回调域名的网站或云服务 有一点点php知识. 第一步:公众号设置 1. 你的公众号,在支付认证的标签下, 内容应该和下图类似.证明公众号已经完成了认证和合约的签署. 2. 然后在微信支付–开发配置中,设置测试授权目录和测试白名单 3. 在公众号设置-功能设置标签中,设置JS接口安全域名,这个域名在认证获取token的过程中可能会用到.但具体

微信支付与支付宝钱包的竞争分析

NO1: 十九世纪七十年代起,“物竞天择,适者生存,优胜劣汰”已逐渐成为现代生物学的口号.而今,不知不觉中,它似乎也成了当代社会学的口号.罗素说:“竞争一直是,甚至从人类起源起就是对大部分激烈活动的剌激物.”所谓“长江后浪推前浪”,在人类资讯的迅速积累之下,如果不能追上时代,自然就要被淘汰了.竞争,已经成了当代社会政治经济发展的重要基础与必然趋势. 从远古时期的以物换物,到后来货币的出现,直到宋朝时第一张纸币“交子”问世,随着经济的不断发展,货币的形式也在不断地变化着. 2003年10月18日,

微信支付V3集成过程(Native)

长话短说,微信支付V3版本相比V2版本,简化许多接口,大大降低了商户的接入代价,只不过由于相关的集成说明文档写的过于笼统,细节描述不够具体,demo版本不够完善等等原因,被大家诟病. 最近基于业务需要,完成了微信支付的接入,选择的是公众号扫码支付(Native模式).在此把集成的大致过程贴出来,希望能对正在困扰的各位有所帮助. 整个交互过程分为四步: 1.商户:生成微信支付二维码 2.微信:扫描二维码,获取商户订单信息 3.微信:确认支付,调起微信支付模块,完成支付,回调商户通知接口 4.商户:

微信支付JsAPI

https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php_v3.zip 下载获取微信支付demo压缩包 打开压缩包,并将其中 WxpayAPI_php_v3\example下的 jsapi.php log.php WxPay.JsApiPay.php WxPay.MicroPay.php WxPay.NativePay.php 解压缩到根目录 tellingtent/ 打开 WxPay.JsApiPay.php WxPay.Micr

微信支付开发(7) 告警通知

本文介绍微信支付中如何获得告警通知. 一.告警通知 为了及时通知商户异常,提高商户在微信平台的服务质量.微信后台会向商户推送告警通知,包括发货延迟.调用失败.通知失败等情况,通知的地址是商户在申请支付时填写的告警通知URL,在"公众平台-服务-服务中心-商户功能-商户基本资料-告警通知URL"可以查看.商户接收到告警通知后需要尽快修复其中提到的问题,以免影响线上经营. 告警通知URL接收的postData中还将含xml数据,格式如下: <xml> <AppId>