php结合支付宝小程序SDK生成支付宝小程序码

6个月前 教程分享 114°C

这篇文章最后更新于06-06 15:09前,您需要注意相关的内容是否还可用,如有疑问请联系作者!

首先下载SDK
支付宝官方SDK

php实现代码

<?php
// +----------------------------------------------------------------------
// | Created by PHPstorm: [ JRK丶Admin ]
// +----------------------------------------------------------------------
// | Copyright (c) 2019~2022 [LuckyHHY] All rights reserved.
// +----------------------------------------------------------------------
// | SiteUrl: http://www.luckyhhy.cn
// +----------------------------------------------------------------------
// | Author: LuckyHhy <jackhhy520@qq.com>
// +----------------------------------------------------------------------
// | Date: 2020/11/9 0009
// +----------------------------------------------------------------------
// | Description:
// +----------------------------------------------------------------------
namespace app\common\service;
use think\Db;
use think\Exception;
class CreateAlipayQrcodeService {
    const  APPID = "20210021"; //appid
    const  PRIVATEKEY = 'MII='; //私钥
    const  PUBLICKEY = 'AQAB'; //公钥
    /**
     * @param $queryParam 参数
     * @param string $page 启动页
     * @param string $describe 描述
     * @param int $site_id 
     * @param bool $domain
     * @return \SimpleXMLElement|string
     * @throws Exception
     * @author: Hhy <jackhhy520@qq.com>
     * @describe:支付宝小程序生成分享二维码
     */
    public static function createQrcode($queryParam, $page = "pages/tabs/home", $describe = "默认站点",$site_id=0,$domain=false) {
       //根据你sdk存放的地址引入文件
        include EXTEND_PATH . "alipay/AopClient.php";
        include EXTEND_PATH . "alipay/request/AlipayOpenAppQrcodeCreateRequest.php";
        try {
            $aop = new \AopClient ();
            $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
            $aop->appId = self::APPID;
            $rsaPrivateKey = self::PRIVATEKEY;
            $aop->rsaPrivateKey = trim($rsaPrivateKey);
            $alipayrsaPublicKey = self::PUBLICKEY;
            $aop->alipayrsaPublicKey = trim($alipayrsaPublicKey);
            $aop->apiVersion = '1.0';
            $aop->signType = 'RSA2';
            $aop->postCharset = 'UTF-8';
            $aop->format = 'json';
            $request = new \AlipayOpenAppQrcodeCreateRequest ();
            $request->setBizContent("{" . "\"url_param\":\"" . $page . "\"," . "\"query_param\":\"" . $queryParam . "\"," . "\"describe\":\"" . $describe . "\"" . "  }");
            // 执行操作  请求对应的接口
            $result = $aop->execute($request);
            $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
            $resultCode = $result->$responseNode->code;
            if(!empty($resultCode)&&$resultCode == 10000){
                if ($domain){
                    //服务端使用,图片下载到本地
                    return self::create($result->$responseNode->qr_code_url,$site_id);
                }else{
                    //支付宝小程序端使用(直接返回生成的地址就行)
                    return $result->$responseNode->qr_code_url;
                }
            }else{
                throw  new Exception("错误代码:".$resultCode);
            }
        } catch (Exception $exception) {
            throw  new Exception($exception->getMessage());
        }
    }
    /**
     * @param $qr_code_url
     * @param $site_id
     * @return string
     * @author: Hhy <jackhhy520@qq.com>
     * @describe:远程图片保存到本地
     */
    protected static function create($qr_code_url,$site_id){
        $d=date("Ymd",time());
        $save_dir=ROOT_PATH."public";
        $dk="/alipay/".$d."/";
        $save_dir.=$dk;
        $filename=$site_id.".jpg";
        if (!is_dir($save_dir)){
            @mkdir($save_dir,0777,true);
        }
        if (file_exists($save_dir.$filename)){
            return  $dk.$filename;
        }
        $url=$qr_code_url.".jpg";
        $ch = curl_init ();
        curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
        curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
        curl_setopt ( $ch, CURLOPT_URL, $url );
        ob_start ();
        curl_exec ( $ch );
        $return_content = ob_get_contents();
        ob_end_clean ();
        $fp=@fopen($save_dir.$filename,"a"); //将文件绑定到流
        fwrite($fp,$return_content); //写入文件
        fclose($fp);
        return $dk.$filename;
    }
}

文章来源于:http://www.lovegyl.cn/show/MzY=

版权说明:本站所提供的文章、图片等内容均为用户发布或互联网整理而来,仅供学习参考,如有侵犯您的版权,请联系我们客服人员删除。
本文链接:https://huue.cc/index.php/archives/349.html
最后编辑: 21年06月06日