Files
liche/common/third_party/alipaysdk/Alipay.php
T
2021-10-18 14:56:58 +08:00

126 lines
5.1 KiB
PHP

<?php
require_once 'aop/AopClient.php';
require_once 'aop/AopCertClient.php';
require_once 'aop/AopCertification.php';
require_once 'aop/AlipayConfig.php';
require_once 'aop/request/AlipayFundTransUniTransferRequest.php';
require_once 'aop/request/AlipayFundTransCommonQueryRequest.php';
class Alipay{
private $privateKey;
private $alipayPublicKey;
private $appId;
private $ci;
private $alipayClient;
private $log_dir = 'alipay';
private $log_file;
public function __construct(){
$this->ci = & get_instance();
$this->ci->config->load('alipay');
$params = $this->ci->config->item('default');
$alipayConfig = new AlipayConfig();
$alipayConfig->setServerUrl("https://openapi.alipaydev.com/gateway.do");
$alipayConfig->setAppId($params['app_id']);
$alipayConfig->setPrivateKey($params['private_key']);
$alipayConfig->setFormat("json");
$alipayConfig->setAlipayPublicKey($params['public_key']);
$alipayConfig->setCharset("UTF-8");
$alipayConfig->setSignType("RSA2");
$this->alipayClient = new AopClient($alipayConfig);
}
/**
* 单笔转账
* 官方接口说明地址:https://opendocs.alipay.com/open/02byuo
* @param $out_biz_no string 订单号
* @param $amount float 转账金额(元)
* @param $account string 支付宝账号
* @param $name string 转账人姓名
* return array()
*/
public function transfer($out_biz_no,$amount,$account,$name){
$this->log_file = __FUNCTION__.'.log';
$request = new AlipayFundTransUniTransferRequest();
$bizContent = [
'out_biz_no' => $out_biz_no,
'trans_amount' => $amount,
'product_code' => 'TRANS_ACCOUNT_NO_PWD',
'biz_scene' => 'DIRECT_TRANSFER',
'payee_info' => [
'identity' => $account,
'identity_type' => 'ALIPAY_LOGON_ID',
'name' => $name
]
];
$bizContent = json_encode($bizContent,JSON_UNESCAPED_UNICODE);
$request->setBizContent($bizContent);
$responseResult = $this->alipayClient->execute($request);
$responseApiName = str_replace(".","_",$request->getApiMethodName())."_response";
$response = $responseResult->$responseApiName;
debug_log("提交参数:".$bizContent,$this->log_file,$this->log_dir);
if(!empty($response->code)&&$response->code==10000){
debug_log("支付宝转账成功:".json_encode($response,JSON_UNESCAPED_UNICODE),$this->log_file,$this->log_dir);
$result = [
'code' => 1,
'msg' => '转账成功',
'data' => json_decode(json_encode($response),true)
];
}
else{
debug_log("支付宝转账失败:".json_encode($response,JSON_UNESCAPED_UNICODE),$this->log_file,$this->log_dir);
$result = [
'code' => 0,
'msg' => $response->sub_msg ? $response->sub_msg : $response->msg,
];
}
return $result;
}
/**
* 转账业务单据查询接口
* 官方接口说明地址:https://opendocs.alipay.com/open/02byup
* @param $out_biz_no string 商户转账唯一订单号
* @param $out_biz_no string 支付宝转账单据号
* @param $out_biz_no string 支付宝支付资金流水号
* return array()
*/
public function query($out_biz_no='',$order_id='',$pay_fund_order_id=''){
$this->log_file = __FUNCTION__.'.log';
if(!$out_biz_no && !$order_id && !$pay_fund_order_id){
$result = [
'code' => 0,
'msg' => '参数错误',
];
return $result;
}
$request = new AlipayFundTransCommonQueryRequest();
if($out_biz_no){
$bizContent['out_biz_no'] = $out_biz_no;
$bizContent['product_code'] = 'TRANS_ACCOUNT_NO_PWD';
$bizContent['biz_scene'] = 'DIRECT_TRANSFER';
}
$order_id && $bizContent['order_id'] = $order_id;
$pay_fund_order_id && $bizContent['pay_fund_order_id'] = $pay_fund_order_id;
$bizContent = json_encode($bizContent,JSON_UNESCAPED_UNICODE);
$request->setBizContent($bizContent);
$responseResult = $this->alipayClient->execute($request);
$responseApiName = str_replace(".","_",$request->getApiMethodName())."_response";
$response = $responseResult->$responseApiName;
if(!empty($response->code)&&$response->code==10000){
$result = [
'code' => 1,
'msg' => '查询成功',
'data' => json_decode(json_encode($response),true)
];
}
else{
debug_log("提交参数:".$bizContent,$this->log_file,$this->log_dir);
debug_log("支付宝查询失败:".json_encode($response,JSON_UNESCAPED_UNICODE),$this->log_file,$this->log_dir);
$result = [
'code' => 0,
'msg' => $response->sub_msg ? $response->sub_msg : $response->msg,
];
}
return $result;
}
}