php支付宝单笔转账到支付宝账户,用户提现业务

php支付宝单笔转账到支付宝账户

下载官方sdk:
https://opendocs.alipay.com/open/54/106370

接口文档地址:
https://opendocs.alipay.com/open/309

官方接口地址:https://opendocs.alipay.com/apis/api_28/alipay.fund.trans.uni.transfer/

编写支付宝类

1、将sdk下载集成到项目中,thinkphp5为例:
在这里插入图片描述
2、在 Alipay.php 中编写方法

<?php
/**
 * 支付宝类
 * 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;
        }
    }


}



3、公共方法:

/**
 * 获取证书根路径
 */
function getCertRootPath() {

    return ROOT_PATH.'public/cert/';
}

/**
 * 写日志
 * @param $data : 数据
 * @param $fileName : 写入哪个日志
 */
function logs($data = null, $fileName = null)
{
    if (is_null($data) || is_null($fileName)) {
        $out_arr['code'] = '400004';
        return $out_arr;
    }

    $path = RUNTIME_PATH . 'log/' . $fileName;

    if (!is_dir($path)) {
        $mkdir_re = mkdir($path, 0777, TRUE);
        if (!$mkdir_re) {
            $this->logs($data, $fileName);
        }
    }

    $filePath = $path . "/" . date("Y-m-d", time());

    $time = date("Y-m-d H:i:s", time());
    $re   = file_put_contents($filePath, $time . " " . var_export($data, TRUE) . "\r\n\r\n", FILE_APPEND);

    if (!$re) {
        $this->logs($data, $fileName);
    } else {
        $out_arr['code'] = '000000';
        return $out_arr;
    }
}

4、证书位置:
在这里插入图片描述
5、调用方式:


// 支付宝提现
$result = Alipay::alipayTransfer('12345678901234567890', '7564347564', 0.1, '提现');
if ($result) {
    // 提现成功,处理业务逻辑
    
} else {
    // 失败,处理业务逻辑
   
}


end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布尼卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值