首先下载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;
}
}
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!