PHP 支付宝(单笔转账到银行账户接口)

这篇具有很好参考价值的文章主要介绍了PHP 支付宝(单笔转账到银行账户接口)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

alipay.fund.trans.tobank.transfer(单笔转账到银行账户接口)

小程序文档 - 支付宝文档中心

一、下载支付宝SDK,现有版本v1、v2、v3

https://github.com/alipay/alipay-sdk-php-all

github 慢的话,DNS   直达即可 140.82.112.3 github.com

【host文件路径c:\windows\system32\drivers\etc】

二、引用代码编写

<?php
 //支付宝转账到银行卡配置
    function alipay_init_bank() {
        //调用支付宝身份证认证接口
        require_once WY_ROOT . '/includes/aop/AopCertClient.php'; //支付宝加载
        require_once WY_ROOT . '/includes/aop/AopClient.php'; //支付宝加载
        require_once WY_ROOT . '/includes/aop/AopCertification.php'; //支付宝加载
        require_once WY_ROOT . '/includes/libs/Config.php'; //配置加载
        require_once dirname(WY_ROOT) . '/ApiV1' . '/function_apiv1.php'; //引用 加载
        $aop = new AopCertClient ();
        $config = Config::getInstance();
        $appCertPath = ''; //应用证书路径(要确保证书文件可读),
        $alipayCertPath = ''; //支付宝公钥证书路径(要确保证书文件可读),
        $rootCertPath = ''; //支付宝根证书路径(要确保证书文件可读),
//        $alipay_config = ''; //支付宝配置文件
        $alipay_config = $config->alipay_bank_config;
        $appCertPath = WY_ROOT . '/includes/aop/cert3/appCertPublicKey_2021002131640271.crt'; //"例如:/home/admin/cert/appCertPublicKey.crt";
        $alipayCertPath = WY_ROOT . '/includes/aop/cert3/alipayCertPublicKey_RSA2.crt'; //"例如:/home/admin/cert/alipayCertPublicKey_RSA2.crt";
        $rootCertPath = WY_ROOT . '/includes/aop/cert3/alipayRootCert.crt'; //"例如:/home/admin/cert/alipayRootCert.crt";
        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
//        $aop->method='alipay.fund.trans.tobank.transfer';
        $aop->appId = $alipay_config['appId'];
        $aop->rsaPrivateKey = $alipay_config['rsaPrivateKey'];
        $aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);
        $aop->apiVersion = $alipay_config['apiVersion'];
        $aop->signType = $alipay_config['signType'];
        $aop->postCharset = $alipay_config['postCharset'];
        $aop->format = $alipay_config['format'];
        $aop->isCheckAlipayPublicCert = true; //是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内
        $aop->appCertSN = $aop->getCertSN($appCertPath); //调用getCertSN获取证书序列号
        $aop->alipayRootCertSN = $aop->getRootCertSN($rootCertPath); //调用getRootCertSN获取支付宝根证书序列号
        return $aop;
    }

 /**
     * 支付宝转账到银行卡
     * @param type $data    用户信息
     * @param type $orderId 订单号
     * @param type $money   订单金额
     * @param type $fee     手续费
     * @return type     $ret = array(
      'error' => false, //是否出错
      'error_msg' => '' //错误信息
      );
     */
    public function alipay_bank($data, $orderId, $money, $fee) {
        require_once dirname(WY_ROOT) . '/ApiV1' . '/function_apiv1.php'; //引用 加载
        $ret = array(
            'error' => false, //是否出错
            'error_msg' => '' //错误信息
        );
        $pub = new ALLClass();
        $realmoney = $money - $fee; //实际支付 
        $realmoney = sprintf("%.2f", $realmoney); //精确到小数点后两位
        require_once WY_ROOT . '/includes/aop/request/AlipayFundTransTobankTransferRequest.php';
        $request = new AlipayFundTransTobankTransferRequest ();
        $this->aop = $this->alipay_init_bank();
        $payee_card_no = $data['bank_account_id']; //银行卡号
        $payer_real_name = ''; //付款方名称
//        $payer_real_name='';//付款方名称
        $payee_account_name = $data['bank_account_name']; //收款名称,
        $payee_inst_name = $data['position']; //收款行

        $bizContentObj['out_biz_no'] = $orderId; //商户端的唯一订单号,对于同一笔转账请求,商户需保证该订单号唯一。201806300001
        $bizContentObj['amount'] = $realmoney; // $realmoney; //订单总金额,单位为元,精确到小数点后两位,STD_RED_PACKET产品取值范围[0.01,100000000];
        $bizContentObj['payer_real_name'] = $payer_real_name;
        $bizContentObj['payee_card_no'] = $payee_card_no;
        $bizContentObj['payee_account_name'] = $payee_account_name;
        $bizContentObj['payee_account_type'] = '2';
        $bizContentObj['payee_inst_name'] = $payee_inst_name;
        $bizContentObj['payee_inst_province'] = '';
        $bizContentObj['payee_inst_city'] = '';
        $bizContentObj['payee_inst_branch_name'] = '';
        $bizContentObj['payee_bank_code'] = '';
        $bizContentObj['time_liness'] = 'T0';
        $bizContentObj['memo'] = '';
        $bizContentObj['remark'] = '结算款'; //业务备注
        $pub->data_log($bizContentObj, __FUNCTION__ . '.log');
        $request->setNotifyUrl('https://alipay_notify_url.php');//回调地址
        $request->setBizContent(json_encode($bizContentObj, JSON_UNESCAPED_UNICODE));
        $result = $this->aop->execute($request);
        $pub->data_log('alipay_fund_transfer_new==' . json_encode($result, JSON_UNESCAPED_UNICODE), __FUNCTION__ . '.log');
        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
        $resultCode = $result->$responseNode->code;
        if (!empty($resultCode) && $resultCode == 10000) {
            $pub->data_log('Success', __FUNCTION__ . '.log');
        } else {
            $ret['error'] = true;
            $ret['error_msg'] = $result->$responseNode->sub_msg;
            $pub->data_log('error_msg==' . $ret['error_msg'], __FUNCTION__ . '.log');
        }
        return $ret;
    }

/**
回调验签
*/
function check_sign(){
$postData = parameters_certification();
require_once WY_ROOT . '/includes/aop/AopCertClient.php'; //支付宝加载
$aop = new AopCertClient ();
$alipayCertPath = ''; //支付宝公钥证书路径(要确保证书文件可读),
$alipayCertPath = WY_ROOT . '/includes/aop/cert3/alipayCertPublicKey_RSA2.crt'; //"例如:/home/admin/cert/alipayCertPublicKey_RSA2.crt";
$aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);
$bool=$aop->rsaCheckV1($postData, $alipayCertPath,$postData['sign_type']);
if(!$bool){
    die('sign error.');
}

}

/**
 * 参数验证
 * @param array $field      参数索引数组【'a','b'】
 * @param array $data       需要验证数组,不传拿$_REQUEST
 * @return boolean | array  不存在参数,空参数返回false,否则返回验证数组
 */
function parameters_certification($field = [], $data = []) {
    if (empty($data)) {
        $data = $_REQUEST;
    }
    if (empty($field)) {
        return $data;
    }
    foreach ($field as $val) {
        if (isset($data[$val])) {
            if (is_array($data[$val])) {
                if (empty($data[$val])) {
                    return false;
                } else {
                    continue;
                }
            }
            if (strlen($data[$val]) > 0) {
                continue;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
    return $data;
}

?>

回调的时候,默认签名使用的是 rsaCheckV1

暂时还没有碰到 rsaCheckV2 的,本来我以为我发送的是V2版本的签名,回调也是V2的

后面试了又试,rsaCheckV1 无疑了

支付宝的SDK无疑是很完善的,接入也方便很多

这里使用的是V2版本文章来源地址https://www.toymoban.com/news/detail-801241.html

到了这里,关于PHP 支付宝(单笔转账到银行账户接口)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • php第三方阿里云接口

    阿里云 OpenAPI 开发者门户

    2024年02月15日
    浏览(30)
  • 如何通过python写接口自动化脚本对一个需要调用第三方支付的报名流程进行测试?

    对于需要调用第三方支付的报名流程进行接口自动化测试,可以通过以下步骤来编写Python代码: 1. 确认API需求 首先,需要确认报名流程的API需求和预期功能。这涉及到对业务需求的理解和API设计的分析。 2. 安装依赖库 在Python程序中,需要安装requests库(用于发送HTTP请求)和

    2024年02月10日
    浏览(54)
  • php实现支付宝商户转账

    目录 一:背景介绍 一:准备工作 三:代码实现 一:背景介绍 最近工作中,要用到支付宝的商家转账功能,用php代码实现,网上找的内容,有些是老版本的实现,有些是调用sdk,而且功能还不完善。最后自己实现了官方最新的转账功能,特此记录下。 一:准备工作 1:在开

    2024年01月20日
    浏览(28)
  • app第三方支付,微信小程序支付

    最近公司开发一个app,需要从app跳转到小程序去微信支付,当时在网上看了好长时间没有看到适合自己的,在这里记录一下,也方便自己以后可以再复习一下,毕竟本人脑子不太好使,只能记下来。 app跳转页面携带参数到小程序 小程序接收参数,拉起微信支付

    2024年02月16日
    浏览(49)
  • 什么是第三方支付?

    中央银行官方解读:是一些与产品所在国和主要外资银行签订合同、具有一定实力和信誉保证的第三方独立机构提供的交易支持平台。在通过第三方支付平台进行的交易中,在买方购买货物后,买方使用第三方平台提供的账户支付货物,第三方将付款和交货的到达通知卖方;

    2024年02月06日
    浏览(26)
  • 银联在线支付、第三方快捷支付三种快捷支付模式有何区别?

    银联在线支付是中国银联联合各家商业银行共同打造的银行卡转接清算平台,涵盖四种支付方式:认证支付、快捷支付、储值卡支付和网银支付,无需开通网银; 代扣是用户通过线上或线下柜台方式签署“用户-授权商户-银行”的三方协议,在协议期内,授权商户可以直接从

    2024年02月11日
    浏览(34)
  • 支付宝服务商第三方代发布小程序

      在 开放平台 创建第三方应用   获取第三方的支付宝公钥和私钥  创建模板小程序 通过你得到的模板小程序appid  下载   支付宝开发工具 上传版本 发布到标准版 然后发布审核到服务市场   在下面平台去管理授权小程序  服务商代商家小程序发布管理平台 https://consol

    2024年02月09日
    浏览(43)
  • 如何为微信小程序添加第三方支付功能

    随着微信小程序的普及和应用,越来越多的商家希望在小程序中接入第三方支付功能,以提高用户购买体验和支付安全性。本文将详细介绍如何为微信小程序添加第三方支付功能,并提供具体的开发流程及注意事项。 一、什么是第三方支付 第三方支付平台是指一种网上支付

    2024年02月07日
    浏览(56)
  • PHP Twitter 推特 第三方登录

    twitter登录文档 开发者平台 申请成为开发流程按引导操作就可以了, 但是要注意信息填写要真实完善的信息, 否则容易被拒绝(被拒绝可能不能二次申请, 之前不能, 现在不知道能不能) 目前推特一个号只能开通一个免费应用, 可付费开通多个 设置基础信息 User authentication setting

    2024年04月16日
    浏览(27)
  • java调第三方接口

    目录 背景 Spring的RestTemplate 1.引入依赖 2.RestTemplate配置类 3.RestTemplate实现类 java调第三方接口我百度的有三种方法. 第一种:通过JDK网络类Java.net.HttpURLConnection 第二种:通过Apache common封装好的HttpClient 第三种:通过Spring的RestTemplate 这个三种方法在我的scdn收藏里有,都是可以直接用的

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包