TP3.2.3 微信JsApi (vendor 引用失败)

浏览:859 发布日期:2018/06/07 分类:求助交流
    'WxPayConf_pub'=>array(
        'APPID' => 'wx426b3015555a46be',
        'MCHID' => '1900009851',
        'KEY' => '8934e7d15453e97507ef794cf7b0519d',
        'APPSECRET' => '7813490da6f1265e4901ffb80afaa36f',
        'JS_API_CALL_URL' => WEB_HOST.'/index.php?m=Home&c=WxJsAPI&a=jsApiCall',
        'SSLCERT_PATH' => WEB_HOST.'/Soap/Library/Vendor/WxPayPubHelper/cacert/apiclient_cert.pem',
        'SSLKEY_PATH' => WEB_HOST.'/Soap/Library/Vendor/WxPayPubHelper/cacert/apiclient_key.pem',
        'NOTIFY_URL' =>  WEB_HOST.'/index.php?m=Home&c=WxJsAPI&a=notify',
        'CURL_TIMEOUT' => 30
    ),
<?php
namespace Home\Controller;
use Think\Controller;
class WxJsAPIController extends VerifyController{
    public function jsApiCall(){
          vendor('WxPayPubHelper.WxPayPubHelper');//实例化微信支付
        
        //使用jsapi接口
            $jsApi = new \JsApi_pub();
            echo "<pre>";
            var_dump($jsApi);
            exit;
        //=========步骤1:网页授权获取用户openid============
        //通过code获得openid
        if (!isset($_GET['code'])){
            //触发微信返回code码
            header("Content-type: text/html; charset=utf-8");
            $url = $jsApi->createOauthUrlForCode(C('WxPayConf_pub.JS_API_CALL_URL'));
            echo $url ."<br/><br/><br/><br/>";
            
            Header("Location: $url");
        }else{
            //获取code码,以获取openid
            $code = $_GET['code'];
            $jsApi->setCode($code);
            
            $openid = $jsApi->getOpenId();
        }
        //=========步骤2:使用统一支付接口,获取prepay_id============
        //使用统一支付接口
        $unifiedOrder = new \UnifiedOrder_pub();
        $unifiedOrder->setParameter("openid",$openid);//商品描述
        $unifiedOrder->setParameter("body","贡献一分钱");//商品描述
        //自定义订单号,此处仅作举例
        $timeStamp = time();
        $out_trade_no = C('WxPayConf_pub.APPID').$timeStamp;
        $unifiedOrder->setParameter("out_trade_no",$out_trade_no);//商户订单号
        $unifiedOrder->setParameter("total_fee","1");//总金额
        $unifiedOrder->setParameter("notify_url",C('WxPayConf_pub.NOTIFY_URL'));//通知地址
        $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
        $prepay_id = $unifiedOrder->getPrepayId();
        //=========步骤3:使用jsapi调起支付============
        $jsApi->setPrepayId($prepay_id);
        $jsApiParameters = $jsApi->getParameters();
        $this->assign('jsApiParameters',$jsApiParameters);
        $this->display('pay');
        //echo $jsApiParameters;
    }
    public function notify(){
        //使用通用通知接口
        $notify = new \Notify_pub();
        //存储微信的回调
        $xml = $GLOBALS['HTTP_RAW_POST_DATA'];
        $notify->saveData($xml);
        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_name= __ROOT__."/Public/notify_url.log";//log文件路径
        log_result($log_name,"【接收到的notify通知】:\n".$xml."\n");
        if($notify->checkSign() == TRUE) {
            if ($notify->data["return_code"] == "FAIL") {
                //此处应该更新一下订单状态,商户自行增删操作
                log_result($log_name,"【通信出错】:\n".$xml."\n");
            }elseif($notify->data["result_code"] == "FAIL"){
                //此处应该更新一下订单状态,商户自行增删操作
                log_result($log_name,"【业务出错】:\n".$xml."\n");
            }else{
                //此处应该更新一下订单状态,商户自行增删操作
                log_result($log_name,"【支付成功】:\n".$xml."\n");
            }
        }
    }    
}

最佳答案
评论( 相关
后面还有条评论,点击查看>>