yansongda 支付宝商家转账给用户

开发框架: laravel:8
通过composer下载:   composer require yansongda/pay:^2
//支付宝官方在线生成证书地址 重点:(生成秘钥-》模式-》选择:公钥证书)
https://miniu.alipay.com/keytool/match
//遇到的问题
//因为yansongda 使用的是     
alipay.fund.trans.uni.transfer  转账接口 ( 强制公钥证书,下面配置中的 ali_public_key 参数 )
ERROR_GATEWAY: Get Alipay API Error:Invalid Arguments - isv.missing-app-cert-sn
//证书签名错误
ERROR_GATEWAY: Get Alipay API Error:Invalid Arguments - isv.invalid-signature
<?php
//支付配置 alipay.php
return [
    'alipay' => [
        // 支付宝分配的 APPID
        'app_id' => '你的支付宝appid',

        'sign_type' => 'RSA2',

        // 支付宝异步通知地址
        'notify_url' => env("APP_URL").'/api/alipayMobileNotifyUrl',

        // 支付成功后同步通知地址
        'return_url' => env("APP_URL").'/api/alipayMobileNotifyUrl',

        // 使用公钥证书模式,请配置下面两个参数,同时修改 ali_public_key 为以 .crt 结尾的支付宝公钥证书路径,如(./cert/alipayCertPublicKey_RSA2.crt)
        //支付宝公钥地址(默认沙箱通用公钥,如需调试线上环境请换成支付宝线上的公钥:https://docs.open.alipay.com/291/106103/)
        'ali_public_key' => "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmFD6E1wuPtgw3wTZSbH0xt3CaSs/CKDKMfcwDRvx2tCsMH8X8S7LH2SwsTZMfhg7o9TxQH2+UUJhJHNqogHtWNO9V7ocGhou46e/myyLFA1a3+bjpH2Z9Y5bDZT1YQdC0TVUCnUdwjYBdrLmBwJS6UAso+DPw6jJLjVjyOB14koCPXIaHziggG+y0p+Y6c+a43hrLvYkFzcI8kauc5NPZdiMJKT1orFe4WN1IIgHE+fvAsTqcioImjWY+OSaIgWmYJdbBHbBybkZ3NkyHcno4zxKw0Gd4fbX98sob6qPrKUuHsy7SJhYn8oeAVDi9VuPbQlsVo8OtvCnpT65LS7fL5wIDAQasAB",

        //商户私钥地址(默认沙箱通用私钥,如需调试线上环境请换成线上的私钥:https://docs.open.alipay.com/291/106103/)
        'private_key'=>"MIIEowIBAAKCAQEAmFD6E1wuPtgw3wTZSbH0xt3CaSs/CKDKMfcwDRvx2tCsMH8X8S7LH2SwsTZMfhg7o9TxQH2+UUJhJHNqogHtWNO9V7ocGhou46e/myyLFA1a3+bjpH2Z9Y5bDZT1YQdC0TVUCnUdwjYBdrLmBwJS6UAso+DPw6jJLjVjyOB14koCPXIHziggG+y0p+Y6c+a43hrLvYkFzcI8kauc5NPZdiMJKT1orFe4WN1IIgHE+fvAsTqcioImjWYas+OSaIgWmYJdbBHbBybkZ3NkyHcno4zxKw0Gd4fbX98sob6qPrKUuHsy7SJhYn8oeAVDi9VuPbQlsVo8OdtvCnpT65LS7fL5wIDAQABAoIBAFt4fcW0nP0WnbrA0bClEwd+U2sPEoqe7O42sP+eYY7ztARnvrwTSt5ufIHfxu4OpXpMvhjpqqpn/6iBO29RUvT+K34MgSXXxYLn0XRhup/vKTy/DsRQvW2u8NVmODntv12d9ftVu+pOvnBHHUbmSV5UMLq1nm+05CRA4czXp1OeCwcySx2Eo4h2F6faLWOBjoFVchME4SOXkOdxfBecSMuQHK+Vel5cj7vPQQlHJSZ+pvVkrgXYpzmKmLCDUCHOU8FJivdmFFtqvUCk4ARCRgZFktcaAcGaH8DGhnv9/P69XidhWrVKJsWU09qG5HCc7trmWAi+CjpXI1scdiOw+lECgYEAzNgN5aLlRklozNnHZmdiFkjznRb74bGpg3C6uMwVhiijdjgJHlCyxlOMivb1daAUTN3NgpFrD4yWt6wCEVuRby3WFJT5ELt42d6e1vUO/e2K9SxPeTv/0mU007XwNaQ1Wbn1VCzZ/R8KnboU5sJw8nVK+uws+Fw34xHup0OkkzkCgYEAvlrCttn5qUWJr/HA5PZ7I2tPPbz3YrGNxP4w6x1M+xUVuuvUltOfE+GPVVUXprC1cUNGQpCGZTt0+V5/i2pO8v1rQzZrmucgD+ROZlmdqh5RZKUEtJs8EhnzInneUGODpUF8qFi6ueOg1UJKgg5rgrnd3RKm7louE5LtUGvBuB8CgYAUuEHnmWuBiYldNyYROKHWSTjDCgEeWh8gWXW5nYML1+541cAuXdFHeEn+AG7hn/iNsd3IuDbREtJn77Eh2lZCnatK16q9w4i82OTOL2l9y9pDZGEBjU0aFfya8YtDkcGHuuSSyBqgnNQxEhJtKPvNuomECgGeeY15nWW7a38pGQKBgEyYcs9nCJn/XDcLHWZEdCo9bOZX2mfBMF27Nu30nVxPEK5lZObIArPaSHW6xsiRRIFt46C3TQ0BDsGlL8dmoJwQMxAZntT2+aTLZmyy1Ml2Z6QK7sjJyjMyc+5EgZtxX7ComEOZaJGSMc5+XULWEJbKuabScY9phC7mKU35/jpbAoGBAI9h6SvDC4wCjr7bmNCSjZcPIGJMTe8X2LtrdioFMZBMhhifdEDg6LeMZ2asLl0f5r5UQGck72z8wu1j8UrBC971qTXetwdw4hdKEOpUAjbWfCuthr+jGHHx+ZbgF7szwcIiKtOHzZlrTY3Rm7KadaOaYjO75amHX9SwlNlGD/j2",

        // 应用公钥证书路径
        'app_cert_public_key' => base_path('storage/cert/appCertPublicKey_2021003114639213.crt'),

        // 支付宝根证书路径
        'alipay_root_cert'    => base_path('storage/cert/alipayRootCert.crt'),

        // 公钥证书
        'ali_public_key'      => base_path('storage/cert/alipayCertPublicKey_RSA2.crt'),

        // 日志
        'log' => [
            'file' => storage_path('logs/alipay.log'),
        ],

        // optional,设置此参数,将进入沙箱模式
        // 'mode' => 'dev',
    ],
];
// 处理提现逻辑 Withdrawal.php

                $order = 123456789; //提现订单号
                $price = 100; //提现订单金额
                $id    = 1; //提现订单id
                //提现到支付宝
                $config = config('alipay.alipay'); //获取alipay.php配置
                $aliOrder = [
                    'out_biz_no'      => $order,
                    'product_code'    => 'TRANS_ACCOUNT_NO_PWD',
                    'trans_amount'    => $price,
                    'biz_scene'       => 'DIRECT_TRANSFER',
                    'remark'          => '支付宝提现',
                    'payee_info'      => [
                        'identity'      => $binginfo["alipay"], //提现人支付宝
                        'identity_type' => 'ALIPAY_LOGON_ID',
                        'name'          => $binginfo["truename"] //提现人真实姓名
                   ]
                ];

                $result = \Yansongda\Pay\Pay::alipay($config)->transfer($aliOrder);
                //用户的余额记录
                if (!($result['code'] == 10000 && $result['msg'] === 'Success')) {
                    writeLog('ali_pay_success', ['msg' => '支付宝提现失败' . $order["order_num"], 'returnData' => $result]);
                    return $this->errorResponse($result['sub_msg']);
                }
                //提现成功处理逻辑(大家根据自己的逻辑处理就行了)
                DB::table("withdorder")->where("id", $id)
                    ->update(["desc" => $desc, "status" => $status, "update_time" => date("Y-m-d H:i:s")]);

                $log["user_id"]      = $user_id;
                $log["month_day"]    = date("m-d H:i");
                $log["amount_money"] = $price;
                $log["add_time"]     = date("Y-m-d H:i:s", time());
                $log["descript"]     = $descript;
                // 写入余额操作记录
                Paymentsum::getPaylog($log);

            }
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

建议升级V3

2年前 评论
Pinkerman (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!