使用该接口前需申请如下三个证书
1:alipayCertPublicKey_RSA2.crt
2:alipayRootCert.crt
3:appCertPublicKey_20210*******.crt**
如报系统繁忙等等错误,去AopCertClient的execute方法
打印一下 $apiParams[‘biz_content’]
看是否是json正确格式
切记 支付宝公钥此参数 必须使用支付宝公钥证书获取,普通支付宝公钥不行
如报参数payee_info错误,看identity_type参数,如果传的:ALIPAY_LOGON_ID
name参数必传
//入口文件
define('ALI_PATH',__DIR__.'/../extend/aop/');
//引入文件
import('AlipayConfig',ALI_PATH);
import('AopClient',ALI_PATH);
import('request/AlipayFundTransToaccountTransferRequest',ALI_PATH);//旧接口
import('request/AlipayFundTransUniTransferRequest',ALI_PATH);//新接口
import('AopCertClient',ALI_PATH);//新接口
protected $alipayAppId = '202100116*****';//appid
protected $prikey = '';//应用私钥 字符串
public function adzad($row,$amount)
{
Loader::import('aop.AopClient', APP_PATH . '../extend/');
Loader::import('aop.request.AlipayFundTransUniTransferRequest', APP_PATH . '../extend/');
Loader::import('aop.AopCertClient', APP_PATH . '../extend/');
if (empty($row)){
$this->error('提现缺少参数!');
}
//获取应用公钥证书序列号
$AopCertClient = new \AopCertClient();
$keyurl = 'http://xxxx.com/appCertPublicKey.crt';//应用公钥绝对路径
$aopCert = $AopCertClient->getCertSN($keyurl);
if ($aopCert == null){
$this->error('支付宝应用公钥获取失败!');
}
//获取支付宝根证书序列号
$keyurl = 'http://xxxx.com/alipayRootCert.crt';//支付宝根证书路径
$RootCertSN = $AopCertClient->getRootCertSN($keyurl);
if ($RootCertSN == null){
$this->error('支付宝根证书路径获取失败!');
}
//获取支付宝公钥
$certPublicKey = new \AopCertClient();
$url = 'http://xxxx.com/alipayCertPublicKey.crt';
$certsn = $certPublicKey->getPublicKey($url);
if ($certsn == null){
$this->error('支付宝公钥获取失败!');
}
//$aop = new \AopClient();
$aop = new \AopCertClient();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = $this->alipayAppId;
$aop->rsaPrivateKey = $this->prikey;//应用私钥
$aop->alipayrsaPublicKey=$certsn;//支付宝公钥
//$aop->alipayrsaPublicKey=$this->alikey;//支付宝公钥
$order_no = time().rand(1111,9999);
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='UTF-8';
$aop->format='json';
$aop->appCertSN=$aopCert;
$aop->alipayRootCertSN=$RootCertSN;
$request = new \AlipayFundTransUniTransferRequest();
$request->setBizContent("{" .
"\"out_biz_no\":\"$row[orderno]\"," . //本地唯一订单号 6/3*2
"\"trans_amount\":\"$amount\"," . //订单总金额,单位为元
"\"product_code\":\"TRANS_ACCOUNT_NO_PWD\"," .
"\"biz_scene\":\"DIRECT_TRANSFER\"," .
"\"payee_info\":{" .
"\"identity_type\":\"ALIPAY_LOGON_ID\"," .
"\"identity\":\"$row[tel]\"," .
"\"name\":\"$row[name]\"" .
"}," .
"\"remark\":\"单笔转账测试\"," . //转账说明
"\"order_title\":\"单笔转账测试\"" . //
"}");
$result = $aop->execute($request);
/*file_put_contents('withdraw.log', '['.date("Y-m-d H:i:s").']' .PHP_EOL .json_encode($result).
PHP_EOL."------------------------ --------------------------".PHP_EOL, FILE_APPEND);*/
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if(!empty($resultCode)&&$resultCode == 10000){
return true;
} else {
return false;
}
}