You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
248 lines
7.5 KiB
248 lines
7.5 KiB
10 months ago
|
<?php
|
||
|
/* *
|
||
|
* 功能:支付宝手机网站alipay.trade.close (统一收单交易关闭接口)业务参数封装
|
||
|
* 版本:2.0
|
||
|
* 修改日期:2016-11-01
|
||
|
* 说明:
|
||
|
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
|
||
|
*/
|
||
|
|
||
|
require_once dirname ( __FILE__ ).DIRECTORY_SEPARATOR.'./../../AopSdk.php';
|
||
|
require dirname ( __FILE__ ).DIRECTORY_SEPARATOR.'./../../config.php';
|
||
|
|
||
|
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;
|
||
|
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.'&cht=qr&chld='.$lev.'|'.$margin.'&chl='.$content.'" widht="'.$size.'" height="'.$size.'" />';
|
||
|
return $image;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|