Initial commit

This commit is contained in:
易焱
2021-03-13 18:42:01 +08:00
commit d9a3c376d5
3243 changed files with 627198 additions and 0 deletions
@@ -0,0 +1,55 @@
<?php
/* *
* 功能:支付宝手机网站alipay.data.dataservice.bill.downloadurl.query (查询对账单下载地址)接口业务参数封装
* 版本:2.0
* 修改日期:2016-11-01
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
class AlipayDataDataserviceBillDownloadurlQueryContentBuilder
{
// 账单类型
private $billType;
// 账单时间
private $billDate;
private $bizContentarr = array();
private $bizContent = NULL;
public function getBizContent()
{
if(!empty($this->bizContentarr)){
$this->bizContent = json_encode($this->bizContentarr,JSON_UNESCAPED_UNICODE);
}
return $this->bizContent;
}
public function getBillType()
{
return $this->billType;
}
public function setBillType($billType)
{
$this->billType = $billType;
$this->bizContentarr['bill_type'] = $billType;
}
public function getBillDate()
{
return $this->billDate;
}
public function setBillDate($billDate)
{
$this->billDate = $billDate;
$this->bizContentarr['bill_date'] = $billDate;
}
}
?>
@@ -0,0 +1,68 @@
<?php
/* *
* 功能:支付宝手机网站alipay.trade.close (统一收单交易关闭接口)业务参数封装
* 版本:2.0
* 修改日期:2016-11-01
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
class AlipayTradeCloseContentBuilder
{
// 商户订单号.
private $outTradeNo;
// 支付宝交易号
private $tradeNo;
//卖家端自定义的的操作员 ID
private $operatorId;
private $bizContentarr = array();
private $bizContent = NULL;
public function getBizContent()
{
if(!empty($this->bizContentarr)){
$this->bizContent = json_encode($this->bizContentarr,JSON_UNESCAPED_UNICODE);
}
return $this->bizContent;
}
public function getTradeNo()
{
return $this->tradeNo;
}
public function setTradeNo($tradeNo)
{
$this->tradeNo = $tradeNo;
$this->bizContentarr['trade_no'] = $tradeNo;
}
public function getOutTradeNo()
{
return $this->outTradeNo;
}
public function setOutTradeNo($outTradeNo)
{
$this->outTradeNo = $outTradeNo;
$this->bizContentarr['out_trade_no'] = $outTradeNo;
}
public function getOperatorId()
{
return $this->operatorId;
}
public function setOperatorId($operatorId)
{
$this->operatorId = $operatorId;
$this->bizContentarr['operator_id'] = $operatorId;
}
}
?>
@@ -0,0 +1,65 @@
<?php
/* *
* 功能:支付宝手机网站alipay.trade.fastpay.refund.query (统一收单交易退款查询)业务参数封装
* 版本:2.0
* 修改日期:2016-11-01
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
class AlipayTradeFastpayRefundQueryContentBuilder
{
// 商户订单号.
private $outTradeNo;
// 支付宝交易号
private $tradeNo;
// 请求退款接口时,传入的退款请求号,如果在退款请求时未传入,则该值为创建交易时的外部交易号
private $outRequestNo;
private $bizContentarr = array();
private $bizContent = NULL;
public function getBizContent()
{
if(!empty($this->bizContentarr)){
$this->bizContent = json_encode($this->bizContentarr,JSON_UNESCAPED_UNICODE);
}
return $this->bizContent;
}
public function getTradeNo()
{
return $this->tradeNo;
}
public function setTradeNo($tradeNo)
{
$this->tradeNo = $tradeNo;
$this->bizContentarr['trade_no'] = $tradeNo;
}
public function getOutTradeNo()
{
return $this->outTradeNo;
}
public function setOutTradeNo($outTradeNo)
{
$this->outTradeNo = $outTradeNo;
$this->bizContentarr['out_trade_no'] = $outTradeNo;
}
public function getOutRequestNo()
{
return $this->outRequestNo;
}
public function setOutRequestNo($outRequestNo)
{
$this->outRequestNo = $outRequestNo;
$this->bizContentarr['out_request_no'] = $outRequestNo;
}
}
?>
@@ -0,0 +1,55 @@
<?php
/* *
* 功能:支付宝手机网站查询接口(alipay.trade.query)接口业务参数封装
* 版本:2.0
* 修改日期:2016-11-01
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
class AlipayTradeQueryContentBuilder
{
// 商户订单号.
private $outTradeNo;
// 支付宝交易号
private $tradeNo;
private $bizContentarr = array();
private $bizContent = NULL;
public function getBizContent()
{
if(!empty($this->bizContentarr)){
$this->bizContent = json_encode($this->bizContentarr,JSON_UNESCAPED_UNICODE);
}
return $this->bizContent;
}
public function getTradeNo()
{
return $this->tradeNo;
}
public function setTradeNo($tradeNo)
{
$this->tradeNo = $tradeNo;
$this->bizContentarr['trade_no'] = $tradeNo;
}
public function getOutTradeNo()
{
return $this->outTradeNo;
}
public function setOutTradeNo($outTradeNo)
{
$this->outTradeNo = $outTradeNo;
$this->bizContentarr['out_trade_no'] = $outTradeNo;
}
}
?>
@@ -0,0 +1,97 @@
<?php
/* *
* 功能:支付宝手机网站退款接口(alipay.trade.refund)接口业务参数封装
* 版本:2.0
* 修改日期:2016-11-01
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
class AlipayTradeRefundContentBuilder
{
// 商户订单号.
private $outTradeNo;
// 支付宝交易号
private $tradeNo;
// 退款的金额
private $refundAmount;
// 退款原因说明
private $refundReason;
// 标识一次退款请求号,同一笔交易多次退款保证唯一,部分退款此参数必填
private $outRequestNo;
private $bizContentarr = array();
private $bizContent = NULL;
public function getBizContent()
{
if(!empty($this->bizContentarr)){
$this->bizContent = json_encode($this->bizContentarr,JSON_UNESCAPED_UNICODE);
}
return $this->bizContent;
}
public function getTradeNo()
{
return $this->tradeNo;
}
public function setTradeNo($tradeNo)
{
$this->tradeNo = $tradeNo;
$this->bizContentarr['trade_no'] = $tradeNo;
}
public function getOutTradeNo()
{
return $this->outTradeNo;
}
public function setOutTradeNo($outTradeNo)
{
$this->outTradeNo = $outTradeNo;
$this->bizContentarr['out_trade_no'] = $outTradeNo;
}
public function getRefundAmount()
{
return $this->refundAmount;
}
public function setRefundAmount($refundAmount)
{
$this->refundAmount = $refundAmount;
$this->bizContentarr['refund_amount'] = $refundAmount;
}
public function getRefundReason()
{
return $this->refundReason;
}
public function setRefundReason($refundReason)
{
$this->refundReason = $refundReason;
$this->bizContentarr['refund_reason'] = $refundReason;
}
public function getOutRequestNo()
{
return $this->outRequestNo;
}
public function setOutRequestNo($outRequestNo)
{
$this->outRequestNo = $outRequestNo;
$this->bizContentarr['out_request_no'] = $outRequestNo;
}
}
?>
@@ -0,0 +1,124 @@
<?php
/* *
* 功能:支付宝手机网站支付接口(alipay.trade.wap.pay)接口业务参数封装
* 版本:2.0
* 修改日期:2016-11-01
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
class AlipayTradeWapPayContentBuilder
{
// 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"
private $body;
// 订单标题,粗略描述用户的支付目的。
private $subject;
// 商户订单号.
private $outTradeNo;
// (推荐使用,相对时间) 支付超时时间,5m 5分钟
private $timeExpress;
// 订单总金额,整形,此处单位为元,精确到小数点后2位,不能超过1亿元
private $totalAmount;
// 如果该字段为空,则默认为与支付宝签约的商户的PID,也就是appid对应的PID
private $sellerId;
// 产品标示码,固定值:QUICK_WAP_WAY
private $productCode;
private $bizContentarr = array();
private $bizContent = NULL;
public function getBizContent()
{
if(!empty($this->bizContentarr)){
$this->bizContent = json_encode($this->bizContentarr,JSON_UNESCAPED_UNICODE);
}
return $this->bizContent;
}
public function __construct()
{
$this->bizContentarr['productCode'] = "QUICK_WAP_WAY";
}
public function AlipayTradeWapPayContentBuilder()
{
$this->__construct();
}
public function getBody()
{
return $this->body;
}
public function setBody($body)
{
$this->body = $body;
$this->bizContentarr['body'] = $body;
}
public function setSubject($subject)
{
$this->subject = $subject;
$this->bizContentarr['subject'] = $subject;
}
public function getSubject()
{
return $this->subject;
}
public function getOutTradeNo()
{
return $this->outTradeNo;
}
public function setOutTradeNo($outTradeNo)
{
$this->outTradeNo = $outTradeNo;
$this->bizContentarr['out_trade_no'] = $outTradeNo;
}
public function setTimeExpress($timeExpress)
{
$this->timeExpress = $timeExpress;
$this->bizContentarr['timeout_express'] = $timeExpress;
}
public function getTimeExpress()
{
return $this->timeExpress;
}
public function setTotalAmount($totalAmount)
{
$this->totalAmount = $totalAmount;
$this->bizContentarr['total_amount'] = $totalAmount;
}
public function getTotalAmount()
{
return $this->totalAmount;
}
public function setSellerId($sellerId)
{
$this->sellerId = $sellerId;
$this->bizContentarr['seller_id'] = $sellerId;
}
public function getSellerId()
{
return $this->sellerId;
}
}
?>
@@ -0,0 +1,50 @@
<?php
/* *
* 功能:共有有参数,暂未使用本页面
* 版本:2.0
* 修改日期:2016-11-01
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
class ContentBuilder
{
//第三方应用授权令牌
private $appAuthToken;
//异步通知地址(仅扫码支付使用)
private $notifyUrl;
//同步跳转地址
private $returnUrl;
public function setAppAuthToken($appAuthToken)
{
$this->appAuthToken = $appAuthToken;
}
public function setNotifyUrl($notifyUrl)
{
$this->notifyUrl = $notifyUrl;
}
public function getAppAuthToken()
{
return $this->appAuthToken;
}
public function getNotifyUrl()
{
return $this->notifyUrl;
}
public function setReturnUrl($returnUrl)
{
$this->returnUrl=$returnUrl;
}
public function getReturnUrl()
{
return $this->returnUrl;
}
}
@@ -0,0 +1,244 @@
<?php
/* *
* 功能:支付宝手机网站alipay.trade.close (统一收单交易关闭接口)业务参数封装
* 版本:2.0
* 修改日期:2016-11-01
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
class AlipayTradeService {
//支付宝网关地址
public $gateway_url = "https://openapi.alipay.com/gateway.do";
//支付宝公钥
public $alipay_public_key;
//商户私钥
public $private_key;
//应用id
public $appid;
//编码格式
public $charset = "UTF-8";
public $token = NULL;
//返回数据格式
public $format = "json";
//签名方式
public $signtype = "RSA";
function __construct($alipay_config){
$this->gateway_url = $alipay_config['gatewayUrl'];
$this->appid = $alipay_config['app_id'];
$this->private_key = $alipay_config['merchant_private_key'];
$this->alipay_public_key = $alipay_config['alipay_public_key'];
$this->charset = $alipay_config['charset'];
$this->signtype=$alipay_config['sign_type'];
if(empty($this->appid)||trim($this->appid)==""){
throw new Exception("appid should not be NULL!");
}
if(empty($this->private_key)||trim($this->private_key)==""){
throw new Exception("private_key should not be NULL!");
}
if(empty($this->alipay_public_key)||trim($this->alipay_public_key)==""){
throw new Exception("alipay_public_key should not be NULL!");
}
if(empty($this->charset)||trim($this->charset)==""){
throw new Exception("charset should not be NULL!");
}
if(empty($this->gateway_url)||trim($this->gateway_url)==""){
throw new Exception("gateway_url should not be NULL!");
}
}
function AlipayWapPayService($alipay_config) {
$this->__construct($alipay_config);
}
/**
* alipay.trade.wap.pay
* @param $builder 业务参数,使用buildmodel中的对象生成。
* @param $return_url 同步跳转地址,公网可访问
* @param $notify_url 异步通知地址,公网可以访问
* @return $response 支付宝返回的信息
*/
function wapPay($builder,$return_url,$notify_url) {
$biz_content=$builder->getBizContent();
//打印业务参数
$this->writeLog($biz_content);
$request = new \AlipayTradeWapPayRequest();
$request->setNotifyUrl($notify_url);
$request->setReturnUrl($return_url);
$request->setBizContent ( $biz_content );
// 首先调用支付api
$response = $this->aopclientRequestExecute ($request,true);
// $response = $response->alipay_trade_wap_pay_response;
return $response;
}
function aopclientRequestExecute($request,$ispage=false) {
$aop = new AopClient ();
$aop->gatewayUrl = $this->gateway_url;
$aop->appId = $this->appid;
$aop->rsaPrivateKey = $this->private_key;
$aop->alipayrsaPublicKey = $this->alipay_public_key;
$aop->apiVersion ="1.0";
$aop->postCharset = $this->charset;
$aop->format= $this->format;
$aop->signType=$this->signtype;
// 开启页面信息输出
$aop->debugInfo=true;
if($ispage)
{
$result = $aop->pageExecute($request,"post");
echo $result;
}
else
{
$result = $aop->Execute($request);
}
//打开后,将报文写入log文件
$this->writeLog("response: ".var_export($result,true));
return $result;
}
/**
* alipay.trade.query (统一收单线下交易查询)
* @param $builder 业务参数,使用buildmodel中的对象生成。
* @return $response 支付宝返回的信息
*/
function Query($builder){
$biz_content=$builder->getBizContent();
//打印业务参数
$this->writeLog($biz_content);
$request = new AlipayTradeQueryRequest();
$request->setBizContent ( $biz_content );
// 首先调用支付api
$response = $this->aopclientRequestExecute ($request);
$response = $response->alipay_trade_query_response;
var_dump($response);
return $response;
}
/**
* alipay.trade.refund (统一收单交易退款接口)
* @param $builder 业务参数,使用buildmodel中的对象生成。
* @return $response 支付宝返回的信息
*/
function Refund($builder){
$biz_content=$builder->getBizContent();
//打印业务参数
$this->writeLog($biz_content);
$request = new AlipayTradeRefundRequest();
$request->setBizContent ( $biz_content );
// 首先调用支付api
$response = $this->aopclientRequestExecute ($request);
$response = $response->alipay_trade_refund_response;
var_dump($response);
return $response;
}
/**
* alipay.trade.close (统一收单交易关闭接口)
* @param $builder 业务参数,使用buildmodel中的对象生成。
* @return $response 支付宝返回的信息
*/
function Close($builder){
$biz_content=$builder->getBizContent();
//打印业务参数
$this->writeLog($biz_content);
$request = new AlipayTradeCloseRequest();
$request->setBizContent ( $biz_content );
// 首先调用支付api
$response = $this->aopclientRequestExecute ($request);
$response = $response->alipay_trade_close_response;
var_dump($response);
return $response;
}
/**
* 退款查询 alipay.trade.fastpay.refund.query (统一收单交易退款查询)
* @param $builder 业务参数,使用buildmodel中的对象生成。
* @return $response 支付宝返回的信息
*/
function refundQuery($builder){
$biz_content=$builder->getBizContent();
//打印业务参数
$this->writeLog($biz_content);
$request = new AlipayTradeFastpayRefundQueryRequest();
$request->setBizContent ( $biz_content );
// 首先调用支付api
$response = $this->aopclientRequestExecute ($request);
var_dump($response);
return $response;
}
/**
* alipay.data.dataservice.bill.downloadurl.query (查询对账单下载地址)
* @param $builder 业务参数,使用buildmodel中的对象生成。
* @return $response 支付宝返回的信息
*/
function downloadurlQuery($builder){
$biz_content=$builder->getBizContent();
//打印业务参数
$this->writeLog($biz_content);
$request = new alipaydatadataservicebilldownloadurlqueryRequest();
$request->setBizContent ( $biz_content );
// 首先调用支付api
$response = $this->aopclientRequestExecute ($request);
$response = $response->alipay_data_dataservice_bill_downloadurl_query_response;
var_dump($response);
return $response;
}
/**
* 验签方法
* @param $arr 验签支付宝返回的信息,使用支付宝公钥。
* @return boolean
*/
function check($arr){
$aop = new AopClient();
$aop->alipayrsaPublicKey = $this->alipay_public_key;
$result = $aop->rsaCheckV1($arr, $this->alipay_public_key, $this->signtype);
return $result;
}
//请确保项目文件有可写权限,不然打印不了日志。
function writeLog($text) {
// $text=iconv("GBK", "UTF-8//IGNORE", $text);
//$text = characet ( $text );
file_put_contents ( dirname ( __FILE__ ).DIRECTORY_SEPARATOR."./../../log.txt", date ( "Y-m-d H:i:s" ) . " " . $text . "\r\n", FILE_APPEND );
}
/** *利用google api生成二维码图片
* $content:二维码内容参数
* $size:生成二维码的尺寸,宽度和高度的值
* $lev:可选参数,纠错等级
* $margin:生成的二维码离边框的距离
*/
function create_erweima($content, $size = '200', $lev = 'L', $margin= '0') {
$content = urlencode($content);
$image = '<img src="http://chart.apis.google.com/chart?chs='.$size.'x'.$size.'&amp;cht=qr&chld='.$lev.'|'.$margin.'&amp;chl='.$content.'" widht="'.$size.'" height="'.$size.'" />';
return $image;
}
}
?>