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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现Java支付宝转账到银行卡,需要使用支付宝提供的转账接口,具体操作步骤如下: 1. 注册支付宝开发者账号,并创建应用获取应用的 appId、私钥和公钥; 2. 引入支付宝的 Java SDK; 3. 初始化 AlipayClient 对象,设置请求参数; 4. 调用 AlipayFundTransToaccountTransferRequest 请求对象的 setBizContent() 方法设置转账的参数,包括转账的金额、收款人账号和姓名等信息; 5. 调用 AlipayClient 的 execute() 方法发起请求,获取响应结果。 以下是一个示例代码: ``` import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayFundTransToaccountTransferRequest; import com.alipay.api.response.AlipayFundTransToaccountTransferResponse; public class AlipayTransferDemo { // 应用的 appId private static final String APP_ID = "your_app_id"; // 商户私钥 private static final String PRIVATE_KEY = "your_private_key"; // 支付宝公钥 private static final String ALIPAY_PUBLIC_KEY = "alipay_public_key"; // 支付宝网关 private static final String GATEWAY_URL = "https://openapi.alipay.com/gateway.do"; public static void main(String[] args) { // 初始化 AlipayClient AlipayClient client = new DefaultAlipayClient(GATEWAY_URL, APP_ID, PRIVATE_KEY, "json", "utf-8", ALIPAY_PUBLIC_KEY, "RSA2"); // 创建转账请求对象 AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest(); // 设置转账参数 request.setBizContent("{\"out_biz_no\":\"201806300001\",\"payee_type\":\"ALIPAY_LOGONID\",\"payee_account\":\"alipay_user_id\",\"amount\":\"1.00\",\"payer_show_name\":\"示例名称\",\"payee_real_name\":\"示例姓名\",\"remark\":\"转账备注\"}"); try { // 发起转账请求 AlipayFundTransToaccountTransferResponse response = client.execute(request); if (response.isSuccess()) { System.out.println("转账成功!"); } else { System.out.println("转账失败,错误码:" + response.getCode() + ",错误信息:" + response.getMsg()); } } catch (AlipayApiException e) { e.printStackTrace(); } } } ``` 需要注意的是,转账到银行卡需要在支付宝后台进行配置,开通转账到银行卡的功能。开通后,需要使用银行卡转账接口进行转账操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

布尼卡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值