tp5.1 微信jsapi支付

//引入的文件 文件位置extend/WxpayService/WxpayService

只展示接口部分 相关的配置一样都不要少,查看相关开发文档进行配置 直接上代码

//提交订单
    public function order()
    {
          
   
        $token=input(post.token);
        $res=checkToken($token);
        if($res ==90001) {
          
    //验证token成功
           $input=input(post.);
               $res1=$this->setOrder($input);
               if ($res1){
          
   
                   $appid=config(base.web_appid);//APPID
                   $openid=Db::name(user)->where("token",$token)->value(openid);
                   $mch_id=config(base.wev_mch_id);//商户号
                   $key=config(base.web_appsecret);
                   $apiKey=config(base.web_apiKey);
                   $out_trade_no=$res1[order_id];
                   $body=支付测试;
                   $total_fee=$res1[amount];
                   $notify_url = http://域名/xxx/xxx/xxx/notify;
                   $payTime=time();
                   $wxPay = new WxpayService($mch_id,$appid,$key,$apiKey);
                   $jsApiParameters = $wxPay->createJsBizPackage($openid,$total_fee,$out_trade_no,$body,$notify_url,$payTime);
                   $jsApiParameters = json_encode($jsApiParameters);
                   $array 	 = json_decode($jsApiParameters,true);
                   $array[order_id]=$out_trade_no;
                   $data[code]=1;
                   $data[msg]=订单创建成功;
                   $data[date]=$array;
                   return json($data);
               }else{
          
   
                   $data[code]=0;
                   $data[msg]=订单创建失败;
                   $data[date]=null;
                   return json($data);
               }

        }else if($res == 90002){
          
   
            $data[code]=2;
            $data[msg]=token验证出错;
            $data[date]=null;
            return json($data);
        }else if($res == 90003){
          
   
            $data[code]=3;
            $data[msg]=token超时,请重新登录;
            $data[date]=null;
            return json($data);
        }

    }

    //创建订单--走支付
    public function setOrder($arr)
    {
          
   
        Db::startTrans();
        try {
          
   
        $info[order_id]=order_number();
        $info[uid]=token_to_uid($arr[token]);
        $info[package_id]=$arr[package_id];
        $info[house_id]=package_to_house($arr[package_id]);
        $info[number]=$arr[number];
        $info[price]=$arr[price];
        $info[amount]=$arr[amount];
        $info[integral]=$arr[integral];//购买套餐可获积分
        $info[coupon_id]=$arr[coupon_id];
        $info[point]=$arr[point];//直营店消费的积分数
        $info[tel]=$arr[tel];
        $info[create_time]=time();

        $res=Db::name(order)->insert($info);
        $stock = Db::name(package)->where("id", $info[package_id])->value(stock);
        $res1 = Db::name(package)->where("id", $info[package_id])->update([stock => $stock - 1]);

            Db::commit();
            return $info;
        }catch (Exception $e) {
          
   
            // 回滚事务
                Db::rollback();
                return 0;
        }

    }

`//支付回调
  public function notify(){
          
   
        $data = file_get_contents(php://input);
        $arr = $this -> xmlToArray($data);
            //判断返回状态
            if($arr[return_code] == SUCCESS || $arr[result_code] == SUCCESS){
          
   
                $status= Db::name(order)->where(order_id,$arr[out_trade_no])->value(status);
                if ($status==1){
          
   
                    //修改订单状态
                    $res = Db::name(order)->where(order_id,$arr[out_trade_no])->update([status=>2,pay_time=>time(),transaction_id=>$arr[transaction_id]]);
                    return <xml> <return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>;
                }

        }
    }
  //将xml格式转换成数组
    function xmlToArray($xml) {
          
   
        //禁止引用外部xml实体
        libxml_disable_entity_loader(true);
        $xmlstring = simplexml_load_string($xml, SimpleXMLElement, LIBXML_NOCDATA);
        $val = json_decode(json_encode($xmlstring), true);
        return $val;
    }

``

经验分享 程序员 微信小程序 职场和发展