前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >支付宝转账到支付宝账户- yansongda/pay实例

支付宝转账到支付宝账户- yansongda/pay实例

原创
作者头像
OwenZhang
发布2023-05-06 17:13:46
8400
发布2023-05-06 17:13:46
举报
文章被收录于专栏:Owen's WorldOwen's World

本文环境 PHP7.3,Laravel6.0 不懂的可以评论 著作权归OwenZhang所有。商业转载请联系OwenZhang获得授权,非商业转载请注明出处。

yansongda/pay引入项目中

代码语言:txt
复制
composer require yansongda/pay

开通功能

转账到支付宝账户

代码语言:txt
复制
/**
     * @notes : 帐户转账
     * https://opendocs.alipay.com/open/01zsdq?pathHash=9f308cb1
     * @param int    $alipayUserId 支付宝的会员ID
     * @param string $orderNo      订单号
     * @param float  $payMoney     订单金额,单位为元,精确到小数点后两位
     * @return array
     * @author: OwenZhang
     * @time  : 2023/4/11 15:02
     */
    public function transfer(int $alipayUserId, string $orderNo, float $payMoney)
    {
        $appEnv    = env('APP_ENV', 'dev');
        $redisKey  = 'payConfig:' . $appEnv;
        $redisData = Redis::get($redisKey);
        $payKey    = ($appEnv == 'dev') ? 'alipay-sh' : 'alipay';
        if (!$redisData) {
            $payConfig = self::payConfig($payKey);
            $redis     = Redis::set($redisKey, json_encode($payConfig, true), 1800);
        } else {
            $payConfig = json_decode($redisData, true);
        }

        // 使用公钥证书模式,请配置下面两个参数,同时修改ali_public_key为以.crt结尾的支付宝公钥证书路径,如(./cert/alipayCertPublicKey_RSA2.crt)
//        $isdir                            = app_path() . "/extend/cert/alipay/";//证书位置;绝对路径
//        $payConfig['app_cert_public_key'] = $isdir . 'appPublicCert.crt'; //应用公钥证书路径
//        $payConfig['alipay_root_cert']    = $isdir . 'alipayRootCert.crt'; //支付宝根证书路径
//        $payConfig['log']  = [
//            'file'     => './logs/alipay.log',
//            'level'    => 'info', // 建议生产环境等级调整为 info,开发环境为 debug
//            'type'     => 'single', // optional, 可选 daily.
//            'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
//        ];
//        $payConfig['http'] = [
//            'timeout'         => 5.0,
//            'connect_timeout' => 5.0,
//            // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
//        ];
        if ($appEnv == 'dev') {
            $payConfig['mode'] = 'dev'; // optional,设置此参数,将进入沙箱模式
            $alipayUserId      = 208823395231;
        }

        //订单信息
        $data = [
            'out_biz_no'   => $orderNo,//商户订单号,内部订单号
            'trans_amount' => $payMoney,  //订单总金额,单位为元,精确到小数点后两位,
            'biz_scene'    => 'DIRECT_TRANSFER',  //描述特定的业务场景,可传的参数如下:DIRECT_TRANSFER:单笔无密转账到支付宝,B2C现金红包PERSONAL_COLLECTION:C2C现金红包-领红包
            'product_code' => 'TRANS_ACCOUNT_NO_PWD',  //业务产品码,单笔无密转账到支付宝账户固定为:TRANS_ACCOUNT_NO_PWD;收发现金红包固定为:STD_RED_PACKET;
            'remark'       => 'owen提现-单笔转账',//业务备注
            'order_title'  => 'owen提现',//转账业务的标题,用于在支付宝用户的账单里显示
            'payee_info'   => [
                'identity'      => $alipayUserId,//参与方的唯一标识'208823395231'
                'identity_type' => 'ALIPAY_USER_ID',//参与方的标识类型,目前支持如下类型:1、ALIPAY_USER_ID 支付宝的会员ID2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式3、ALIPAY_OPEN_ID:支付宝openid
            ],//收款方信息
        ];

        try {
            $result = Pay::alipay($payConfig)->transfer($data)->toArray();
            //array(6) {
            //["code"]=>
            //string(5) "10000"
            //["msg"]=>
            //string(7) "Success"
            //["order_id"]=>
            //string(32) "2023042230018719111"//支付宝转账订单号
            //["out_biz_no"]=>
            //string(32) "vYjTkuCn6o32PdDkuwMfi9jFs"//商户订单号
            //["pay_fund_order_id"]=>
            //string(32) "202304201100230018886889"//支付宝支付资金流水号
            //["status"]=>
            //string(7) "SUCCESS"
            //}
            if (!empty($result['code'])) {
                if (($result['code'] == 10000) && ($result['status'] == 'SUCCESS')) {
                    $data = [
                        'order_id'          => $result['order_id'],
                        'pay_fund_order_id' => $result['pay_fund_order_id'],
                    ];
                    return ['code' => 200, 'msg' => $result['msg'], 'data' => $data];
                }
            }

            return ['code' => 400, 'msg' => $result['msg']];
        } catch (\Exception $e) {
            return ['code' => 400, 'msg' => $e->getMessage()];
        }
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • yansongda/pay引入项目中
  • 开通功能
  • 转账到支付宝账户
相关产品与服务
云支付
云支付(Cloud Pay,CPay)为您提供开放、可靠的聚合收款技术服务和商户管理功能。云支付支持刷卡支付、扫码支付、一码多付多种支付方式。服务商也可使用云支付提供的 SDK 和 HTTPS 接口,将云支付集成进自己的系统中,为商户提供的个性化解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com