支付宝企业账户转账个人账户PHP接口代码

2022-04-15 0 1,036

前言

支付宝企业账户转账个人账户php接口代码,该接口主要用于平台对用户奖励的发放,场景也很简单就是我在你平台上有余额,我提现,平台给钱。

只不过项目中是用的官方的SDK调用的,仔细看了下那个SDK目录,把很多无用的接口(目前自己用不上)也包含在里面,作为强迫症的自己,想着精简一番。

注意

因为使用时间比较长,这里用的是转账的老接口,停止更新了,目前还能正常使用。

需要企业支付宝才能签约

收款账号必填,收款姓名可以不填,但是如果当账号对应多个名字的时候,会提示完善姓名,否则找不到哪个账号,我也不知道为啥一个账号会对应多个姓名这种,可能是支付宝前期账号和手机号没有处理好吧。

付款方(企业方)可以自定义显示的名称,比如企业名称太长想简化可以设置payer_show_name参数

当一个账号在某个很短的时间内,频繁提现相同金额,会触发支付宝的风控,因此 在调用该接口时一定要做好访问频率(同账号,同ip)限制。涉及到金钱的一定要把细节做好。

php代码

<?php

header(‘Content-type:text/html; Charset=utf-8’);

// sdk 单笔转账接口  https://opendocs.alipay.com/apis/api_28/alipay.fund.trans.uni.transfer

Class AliTransferPay

{

    public $appId;

    public $privateKey;

    public $charset ;

    public $sign_type ;

    public function __construct($appId, $privateKey)

    {

        $this->appId = $appId;

        $this->privateKey = $privateKey;

        $this->charset=‘utf-8’;

        $this->sign_type=‘RSA2’;

    }

    /**

    * 查询余额,需要签约改功能,如果不能签约的话 会提示 ISV权限不足,建议在开发者中心检查签约是否已经生效

    * home.php?mod=space&uid=155549 mixed

    */

    public function queryBalance()

    {

        $reqParams = [

            ‘app_id’ => $this->appId,

            ‘method’ => ‘alipay.data.bill.balance.query’,

            ‘format’ => ‘JSON’,

            ‘charset’ => $this->charset,

            ‘sign_type’ => $this->sign_type,

            ‘timestamp’ => date(‘Y-m-d H:i:s’),

            ‘version’ => ‘1.0’,

        ];

        //格式化编码

        $bizParmsStr = $this->getSignContent($reqParams);

        //计算签名

        $sign = $this->getSign($bizParmsStr, $this->sign_type);

        $reqParams[‘sign’] = $sign;

        //发送请求

        $result = $this->curlPost(‘https://openapi.alipay.com/gateway.do?charset=’.$this->charset, $reqParams);

        return json_decode($result,true);

    }

    /**

    * 转账方法

    * home.php?mod=space&uid=952169 $order_id string 订单号

    * @param $price string 价格

    * @param $account string 收款方账户账号

    * @param $payee_real_name string 收款方账户姓名 可以不传

    * @param string $remark string 支付备注

    * @param string $payer_show_name 转账企业支付时显示的名称

    * @return mixed

    */

    public function pay($order_id, $price, $account, $payee_real_name, $remark = ‘测试’, $payer_show_name = ‘测试’)

    {

        $bizParms = [

            ‘out_biz_no’ => $order_id,

            ‘payee_type’ => ‘ALIPAY_LOGONID’,//固定值,老接口

            ‘payee_account’ => $account,

            ‘payee_real_name’ => $payee_real_name,  //收款方姓名(选填)

            ‘amount’ => $price, //转账金额

            ‘remark’ => $remark,  //转账备注(选填)

            ‘payer_show_name’ => $payer_show_name,  //支付方名称,比如我不想显示公司名称太长了,可以自定义这个名称

        ];

        $reqParams = [

            ‘app_id’ => $this->appId,

            ‘method’ => ‘alipay.fund.trans.toaccount.transfer’,

            ‘format’ => ‘JSON’,

            ‘charset’ => $this->charset,

            ‘sign_type’ => $this->sign_type,

            ‘timestamp’ => date(‘Y-m-d H:i:s’),

            ‘version’ => ‘1.0’,

            ‘biz_content’ => json_encode($bizParms),

        ];

        //格式化编码

        $bizParmsStr = $this->getSignContent($reqParams);

        //计算签名

        $sign = $this->getSign($bizParmsStr, $this->sign_type);

        $reqParams[‘sign’] = $sign;

        //发送请求

        $result = $this->curlPost(‘https://openapi.alipay.com/gateway.do?charset=’.$this->charset, $reqParams);

        return json_decode($result, true);

    }

    /**

    * 根据加密类型,进行参数加密

    * @param $params string

    * @param string $sign_type 该函数只支持 RSA 和 RSA2两种方式

    * @return string

    */

    public function getSign($params, $sign_type = “RSA”)

    {

        $privateKey = $this->privateKey;

        $formatPrivateKey = “—–BEGIN RSA PRIVATE KEY—–\n” .

        wordwrap($privateKey, 64, “\n”, true) .

        “\n—–END RSA PRIVATE KEY—–“;

        ($formatPrivateKey) or die(‘您使用的私钥格式错误,请检查RSA私钥配置’);

        if ($sign_type == ‘RSA2’) {

            openssl_sign($params, $sign, $formatPrivateKey, version_compare(PHP_VERSION, ‘5.4.0’, ‘<‘) ? SHA256 : OPENSSL_ALGO_SHA256); //OPENSSL_ALGO_SHA256是php5.4.8以上版本才支持

        } else {

            openssl_sign($params, $sign, $formatPrivateKey);

        }

        return base64_encode($sign);

    }

    /**

    * 获取待签名的字符串

    * @param $params

    * @return string

    */

    public function getSignContent($params)

    {

        ksort($params);

        $stringToBeSigned = “”;

        $i = 0;

        foreach ($params as $k => $v) {

            if (false === $this->checkEmpty($v) && “@” != substr($v, 0, 1)) {

                // 转换成目标字符集

                $v = $this->transCoding($v, $this->charset);

                if ($i == 0) {

                    $stringToBeSigned .= “$k” . “=” . “$v”;

                } else {

                    $stringToBeSigned .= “&” . “$k” . “=” . “$v”;

                }

                $i++;

            }

        }

        unset ($k, $v);

        return $stringToBeSigned;

    }

    /**

    * 转换字符集编码

    * @param $data

    * @param $targetCharset

    * @return string

    */

    function transCoding($data, $targetCharset)

    {

        if (!empty($data)) {

            $fileType = $this->charset;

            if (strcasecmp($fileType, $targetCharset) != 0) {

                $data = mb_convert_encoding($data, $targetCharset, $fileType);

            }

        }

        return $data;

    }

    /**

    * 校验参数是否为空

    * @param $value

    * @return bool

    */

    protected function checkEmpty($value)

    {

        return empty($value) == true;

    }

    /**

    * curl请求,注意https如果没有证书,需要设置不验证证书和host

    * @param string $url

    * @param string $postData

    * @param array $options

    * @param bool $isssl

    * @return mixed

    */

    public function curlPost($url = , $postData = , $options = [], $isssl = true)

    {

        if (is_array($postData)) {

            $postData = http_build_query($postData);

        }

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($ch, CURLOPT_POST, 1);

        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

        curl_setopt($ch, CURLOPT_TIMEOUT, 30);

        if (!empty($options)) {

            curl_setopt_array($ch, $options);

        }

        //https请求 不验证证书和host

        if ($isssl) {

            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

        }

        $data = curl_exec($ch);

        curl_close($ch);

        return $data;

    }

}

//转账

function invoke()

{

    //调用测试

    $appid = ;

    $order_id = uniqid();

    $price = 0.1;

    $saPrivateKey=;

    $account = ;//收款方账号

    $payee_real_name = ;//收款方真实姓名

    $aliPay = new AliTransferPay($appid, $saPrivateKey);

    $result = $aliPay->pay($order_id, $price, $account, $payee_real_name);

    $result = $result[‘alipay_fund_trans_toaccount_transfer_response’];

    if ($result[‘code’] && $result[‘code’] == ‘10000’) {

        echo ‘转账成功’;

    } else {

        echo $result[‘msg’] . ‘ : ‘ . $result[‘sub_msg’];

    }

}

invoke();

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在!
点赞 (0)

本站声明:
1.资源来自于网络,版权争议与本站无关,版权归原创者所有!
2.本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用。
3.本站所发布的文章以及附件仅限用于学习和研究目的;不得将上述内容资源用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
4.如果运营棋牌游戏请合法取得相关资质,切勿违法犯罪!
5.本站默认解压密码:www.028sf.cn丨www.bxym8.com丨www.8xym.cc

八仙源码网 技术教程 支付宝企业账户转账个人账户PHP接口代码 https://www.8xym.cn/734564.html

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
查看详情
  • 按照我国的法律规定,运营网络棋牌首先需要成立一个注册正规备案的公司,然后申请网站备案、文网文、ICP等等,这些证件缺一不可。 一.注册公司 在当地工商进行注册,公司名称以“XX科技有限公司”为名,如:富裕棋牌经营范围填写“计算机软硬件、网络设备的设计开发与购销”。 二.域名及网站备案 在国内从事网站经营活动就必须经过相关部门的备案,因此棋牌运营商在购买了域名后,就要到当地网监局办理网站备案,或者请服务器提供商代为备案。 三.申请文网文 文网文全称为网络文化经营许可证,是从事经营性互联网文化活动所必需的资质。一般是需要到当地省一级(省、直辖市、自治区)的文化行政部门提出申请,并经由当地的文化行政部门合法批准。次资质要求申请公司注册资金必需达到1000万,并提供游戏版权证明文件。 四.申请ICP ICP又称为增值电信业务许可证,所有网络游戏运营商均需要办理ICP许可证,此证件要求公司注册资金1000万,需到当地市级通讯管理局办理。 五.申请文网游——游戏备案 根据《网络游戏管理暂行办法》(文化部第49号)的规定,国产网络游戏在上网运营之日起30日内应当按规定向国务院文化行政部门履行备案手续。 以上就是网络棋牌游戏正规运营所必需的资质证明。一般作为正规有实力的棋牌游戏开发公司,不光要具备所有的正规资质,而且会对投资者、代理商等合作伙伴给予相关指导和协助,与合作伙伴携手共赢!
查看详情

相关文章

支付宝企业账户转账个人账户PHP接口代码-海报

分享本文封面