使用TP5接入支付宝单笔转账接口(AlipayFundTransUniTransferRequest)

这篇博客详细介绍了如何使用支付宝API进行转账操作,包括需要申请的证书、错误处理方法以及关键代码示例。重点讲解了如何获取并使用应用公钥证书序列号、支付宝根证书序列号和支付宝公钥,同时强调了参数设置的注意事项,如biz_content的JSON格式检查和特定参数的要求。
摘要由CSDN通过智能技术生成

使用该接口前需申请如下三个证书
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;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值