资讯专栏INFORMATION COLUMN

微信app支付

2i18ns / 1660人阅读

摘要:文档注开放平台的微信支付和公众号的微信支付是不一样的,公众平台和开放平台的支付申请下来之后会有各自对应的商户平台账号注意区分公众号和商户号不同随机数自己定义一个不重复订单号微信通过微信授权登录获取注意这里传给微信的单位是分商户后台自定义的超

文档
注:开放平台的微信支付和公众号的微信支付是不一样的,公众平台和开放平台的支付申请下来之后会有各自对应的商户平台账号

function wechat($appid,$mchid,$appkey,$cert_path,$key_path,$order_id,$openid,$amount,$desc){
    $arr = [
            "mch_appid"=>$appid,//注意区分公众号和app商户号不同
            "mchid"=>$mchid,
            "nonce_str"=>str_random(32),//随机数
            "partner_trade_no"=>$order_id,//自己定义一个不重复订单号
            "openid"=>$openid,//微信openid 通过微信授权登录获取
            "check_name"=>"NO_CHECK",
            "amount"=>$amount*100,//注意这里传给微信的单位是分
            "desc"=>$desc,
            "spbill_create_ip"=>Request::getClientIp(),
            "sign"=>"",
        ];
        ksort($arr);
        $sign="";
        foreach ($arr as $key => $value) {
            if($value && $key!="sign" && $key!="key"){
                $sign.=$key."=".$value."&";
            }
        }
        $sign.="key=".$appkey;//商户后台自定义的
        $arr["sign"] = strtoupper(md5($sign));
        $xml = "";
        foreach ($arr as $key=>$val)
        {
                if (is_numeric($val))
             {
                $xml.="<".$key.">".$val.""; 

             }
             else
                $xml.="<".$key.">";  
        }
        $xml.="";
       
        $ch = curl_init();
        //超时时间
        curl_setopt($ch,CURLOPT_TIMEOUT,60);
        curl_setopt($ch,CURLOPT_URL,"https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers");
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
        //默认格式为PEM
        curl_setopt($ch,CURLOPT_SSLCERTTYPE,"PEM");
        curl_setopt($ch,CURLOPT_SSLCERT,$cert_path);//注意区分公众号和app商户号的证书不同,需要到pay.weixin.qq.com后台下载
        curl_setopt($ch,CURLOPT_SSLKEYTYPE,"PEM");
        curl_setopt($ch,CURLOPT_SSLKEY,$key_path);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
        curl_setopt($ch,CURLOPT_POST, 1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);
        $data = curl_exec($ch);
        $data = json_decode(json_encode(simplexml_load_string($data, "SimpleXMLElement", LIBXML_NOCDATA)), true);
        curl_close($ch);
        return $data;//$data["return_code"] == "SUCCESS" && $data["result_code"] == "SUCCESS" 支付成功
    }
    }

微信上传文件

    function https_request($url,$type="get",$res="json",$data = ""){
        //1.初始化curl
        $curl = curl_init();
        //2.设置curl的参数
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,2);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        if ($type == "post"){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        //3.采集
        $output = curl_exec($curl);
        //4.关闭
        curl_close($curl);
        if ($res == "json") {
            return json_decode($output,true);
        }
    }    
    function getWxAccessToken(){
        if ( $_SESSION["access_token"] && $_SESSION["expire_time"] > time() ) {
            //未过期
            return $_SESSION["access_token"];
        }else {
            $appid        = "我的id";
            $appsecret = "我的appsecret ";
            $url          = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
            $res =$this->https_request($url,"get","json");
            $access_token = $res["access_token"];
            //将重新获取到的access_token存到session里
            $_SESSION["access_token"]=$access_token;
            $_SESSION["expire_time"]=time()+7200;
            return $access_token; 
        }
    }
    //上传图片素材(该方法只能获取到图片的URL)      
    function addMaterialUrl() {
        $access_token = $this->getWxAccessToken();    
        $url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=".$access_token;
        $filename = "我是图片";
        $data=array("media"=>"@". $filename);
        $res=$this->https_request( $url ,"post", "json", $data);
        //dump($res); exit();
        return $res["url"];
    }
    
    php5.6加上curl_setopt ($curl, CURLOPT_SAFE_UPLOAD, false);或者直接"media" => new CURLFile(realpath($real_path)), https://segmentfault.com/a/1190000000725185 

附:
https://youqingkui.me/note/e5...
python版微信支付
http://bblove.me/2015/10/25/w...
微信APP支付服务端php sdk开发教程
https://github.com/fanhefan/w...
微信红包API接口
http://jeffchen.sinaapp.com/
http://tao.logdown.com/posts/...
微信支付 一步一个坑的APP支付

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21268.html

相关文章

  • 浅析微信支付微信支付简单介绍(小程序、公众号、App、H5)

    摘要:本文是浅析微信支付系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。浅析微信支付前篇大纲微信支付是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。目前微信支付支持手机系统有苹果安卓和。 本文是【浅析微信支付】系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处。 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下。 浅析微信支...

    shadowbook 评论0 收藏0
  • 支付开发填坑记之微信支付

    摘要:前者集成在中,后者主要是为微信用户提供了另一种支付方式需要在微信的内置浏览器中打开页面,再调起微信支付。步骤商户后台收到用户支付单,调用微信支付统一下单接口。拿到所有参数后,就可以在页面中发起微信支付的请求了。 微信支付,支持的支付方式比较多:有扫码支付,刷卡支付,APP支付和公众号支付。其中,APP和网站上最常用的就是APP支付和公众号支付。前者集成在APP中,后者主要是为微信用户提...

    zhunjiee 评论0 收藏0
  • beecloud对接——微信支付

    摘要:微信支付方式付款码支付适用于线下场所支付支付是指商户通过调用微信支付提供的接口,在支付场景中调起微信支付模块完成收款。主要用于触屏版的手机浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付。 微信支付方式(https://pay.weixin.qq.com/sta...): 1、付款码支付————————适用于线下场所 2、JSAPI支付————————JSAPI支付是指商户...

    FingerLiu 评论0 收藏0
  • 微信的三种支付方式接入:APP支付、公众号支付、扫码支付

    摘要:项目版本微信的支付逻辑与支付宝的支付有一些差别。调用微信支付不同接口需要的参数会有差别。调用客户端的方式查看微信文档扫码支付返回了一个地址。可直接放入微信的完成调用。 payment 项目2.0版本 微信的支付逻辑与支付宝的支付有一些差别。为了让客户端忽略这些差别,统一调用。本sdk做了对应处理。 # SDK调用 微信支付不同接口需要的参数会有差别。请大家在使用接口时,仔细查看文档。...

    rollback 评论0 收藏0
  • 记录uni-app基础的安卓app添加微信支付功能

    摘要:移动应用想要调用微信的支付功能,需要到微信开发平台申请创建移动应用,微信会给,拿到到中打开一个项目,添加对应的。当前端拿到值后调用即拉取微信支付弹窗付费。的搜一下就能出来,为后端返回的要传给微信的参数。 移动应用想要调用微信的支付功能,需要到微信开发平台申请创建移动应用,微信会给appid,拿到appid到HBuilderX中打开一个uni-app项目,添加对应的sdk。 在微信开发...

    GitCafe 评论0 收藏0
  • 记录uni-app基础的安卓app添加微信支付功能

    摘要:移动应用想要调用微信的支付功能,需要到微信开发平台申请创建移动应用,微信会给,拿到到中打开一个项目,添加对应的。当前端拿到值后调用即拉取微信支付弹窗付费。的搜一下就能出来,为后端返回的要传给微信的参数。 移动应用想要调用微信的支付功能,需要到微信开发平台申请创建移动应用,微信会给appid,拿到appid到HBuilderX中打开一个uni-app项目,添加对应的sdk。 在微信开发...

    focusj 评论0 收藏0

发表评论

0条评论

2i18ns

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<