/**
* 支付宝类
* Created by PhpStorm.
* User: smt
*/
namespace Alipay;
require_once 'alipay-sdk-PHP-3.4.2/AopSdk.php';
class Alipay
{
// 商户配置信息
public static function getAlipayAppConfig()
{
return config('alipay_app');
}
/**
* 单笔转账接口
* @param $order_number 订单号
* @param $pay_user_id 收款方user_id
* @param $amount 转账金额,单位为元,精确到小数点后两位
* @param $remark 备注
*/
public static function alipayTransfer($order_number, $pay_user_id, $amount, $remark = '提现')
{
// 我这里打印结果:项目根目录/public/cert/
$isdir = getCertRootPath();//证书位置;绝对路径
$alipay_conf = self::getAlipayAppConfig();
$aop = new AopCertClient();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = $alipay_conf['app_id'];
$aop->rsaPrivateKey = $alipay_conf['rsa_private_key']; // 开发者私钥
$aop->alipayrsaPublicKey = $aop->getPublicKey($isdir . 'alipayCertPublicKey_RSA2.crt');//调用getPublicKey从支付宝公钥证书中提取公钥
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset = 'utf-8';
$aop->format = 'json';
$aop->isCheckAlipayPublicCert = true;//是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内
$aop->appCertSN = $aop->getCertSN($isdir . 'alipayappCertPublicKey_2021001153673295.crt');//调用getCertSN获取证书序列号
$aop->alipayRootCertSN = $aop->getRootCertSN($isdir . 'alipayRootCert.crt');//调用getRootCertSN获取支付宝根证书序列号
$request = new AlipayFundTransToaccountTransferRequest ();
$request->setBizContent("{" .
""out_biz_no":"" . $order_number . ""," .
""payee_type":"ALIPAY_USERID"," .
""trade_no":"" . $order_number . ""," .
""payee_account":"" . $pay_user_id . ""," .
""payee_real_name":""," .
""amount":"" . $amount . ""," .
""remark":"" . $remark . """ .
"}");
$result = $aop->execute($request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if (!empty($resultCode) && $resultCode == 10000) {
// 成功,返回业务需要的信息
$data = [
'code' => $result->$responseNode->code,
'msg' => $result->$responseNode->msg,
// 支付宝转账订单号
'order_id' => $result->$responseNode->order_id,
// 商户订单号
'out_biz_no' => $result->$responseNode->out_biz_no,
// 支付时间
'pay_date' => $result->$responseNode->pay_date
];
return $data;
} else {
// 失败记录错误查日志
logs($result, 'alipay_transfer_error');
return false;
}
}
}