企业支付宝转账

简介: 企业支付宝转账

第一步,配置证书。

//    支付宝单笔转账
    public function alipay($bank=null){
 
        $pay_param = Db::name('StoreBankInfo')->where(['title'=>'支付宝'])->find();
 
        $alipay_config['app_id'] = 2021001150668881;
        $alipay_config['public_key'] = '';  // 公钥
        $alipay_config['private_key'] = ''; // 应用私钥
 
        $alipay_config['appCertPath'] = ''; //应用公钥证书绝对路径
        $alipay_config['alipayCertPath'] = ''; //支付宝公钥证书绝对路径
        $alipay_config['rootCertPath'] = "";  // 支付宝根证书绝对路径
//        用户支付宝
        $zfb = Db::name('StoreBankuser')->where(['uid'=>$bank['uid'],'type'=>1,'is_deleted'=>0])
                    ->where('bankusername','neq','')->where('zfbname','neq','')->find();
 
        if(empty($zfb)){
           return $this->error('支付宝不存在');
        }
 
        $res = AliPayTrans([
            'order_sn' => $bank['logno'], // 订单号
            'account' => $zfb['zfbname'], // 支付宝登录号,支持邮箱和手机号格式
            'name' => $zfb['bankusername'],  // 账号姓名
            'money' => $bank['realmoney']
        ], $alipay_config);
 
        return $res;
    }

 

第二步,调用接口,建议放在common.php中

 
    /**
 * 支付宝转账
 * @param $params
 * @param $config
 */
function AliPayTrans($params,$config) {
    $biz_content = array();
    $biz_content['out_biz_no'] = trim($params['order_sn']);
    $biz_content['trans_amount'] = $params['money'];  //单位为元
    $biz_content['product_code'] = 'TRANS_ACCOUNT_NO_PWD' ; //trim($params['product_code']);
    $biz_content['biz_scene'] =  'DIRECT_TRANSFER';
    $biz_content['order_title'] =  '提现转账';
    $biz_content['payee_info']['identity'] =  $params['account']; //付宝登录号,支持邮箱和手机号格式
    $biz_content['payee_info']['identity_type'] =  'ALIPAY_LOGON_ID'; //付宝登录号,支持邮箱和手机号格式
    $biz_content['payee_info']['name'] =  $params['name']; //真实姓名
    $biz_content['remark'] =  '提现转账,注意查收';
 
    $biz_content = array_filter($biz_content);
 
    $config['method'] = 'alipay.fund.trans.uni.transfer';
 
    $config['biz_content'] = json_encode($biz_content,JSON_UNESCAPED_UNICODE);
 
    $result = AliPayCertClientTrans($config);
 
 
 
    $key = str_replace('.', '_', $config['method']) . '_response';
    if (($result[$key]['code'] == '10000') && ($result[$key]['status'] == 'SUCCESS'))
    {
        return $result[$key];
    }
 
    return var_dump($result[$key]['code'], $result[$key]['msg'] . ':' . $result[$key]['sub_msg']);
 
}
 
// 支付宝转账
function AliPayCertClientTrans($config) {
    ini_set('display_errors',1);
    error_reporting(E_ALL^E_NOTICE);
    require_once Env::get('app_path').'../vendor/alipaysdk/aop/AopCertClient.php';
    require_once Env::get('app_path').'../vendor/alipaysdk/aop/AopCertification.php';
    require_once Env::get('app_path').'../vendor/alipaysdk/aop/request/AlipayFundTransUniTransferRequest.php';
    /**
     * 证书类型AopCertClient功能方法使用测试,特别注意支付宝根证书预计2037年会过期,请在适当时间下载更新支付更证书
     * 1、execute 证书模式调用示例
     * 2、sdkExecute 证书模式调用示例
     * 3、pageExecute 证书模式调用示例
     */
    //1、execute 使用
    $aop = new \AliPay\Aop\AopCertClient ();
 
    $appCertPath = $config['appCertPath']; //应用公钥证书绝对路径
    $alipayCertPath = $config['alipayCertPath']; //支付宝公钥证书绝对路径
    $rootCertPath =  $config['rootCertPath']; // 支付宝根证书绝对路径
 
    $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
    $aop->appId = $config['app_id'];
    $aop->rsaPrivateKey = $config['private_key'];
    $aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);//调用getPublicKey从支付宝公钥证书中提取公钥
    $aop->apiVersion = '1.0';
    $aop->signType = 'RSA2';
    $aop->postCharset='utf-8';
    $aop->format='json';
    $aop->isCheckAlipayPublicCert = true;//是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内
    $aop->appCertSN = $aop->getCertSN($appCertPath);//调用getCertSN获取证书序列号
    $aop->alipayRootCertSN = $aop->getRootCertSN($rootCertPath);//调用getRootCertSN获取支付宝根证书序列号
 
    $request = new \AliPay\Aop\Request\AlipayFundTransUniTransferRequest();
    $request->setBizContent($config['biz_content']);
 
    $result = $aop->execute ( $request);
 
    $result = json_decode(json_encode($result),1);
    return $result;
}

 

第三部,引入类库并测试

建议放到vendor中   点击下载

目录
相关文章
|
5月前
|
安全 API 开发者
转账到支付宝账户接口:一次开发,提升打款效率
转账到支付宝账户接口:一次开发,提升打款效率
118 0
|
前端开发 安全 数据安全/隐私保护
支付宝支付流程解读
支付宝支付流程解读
|
5月前
|
安全 API UED
【支付宝推荐】企业转账如何又快又省?试试“商家转账”吧!
企业面对日益增长的转账需求,财务操作繁琐、效率低下。但支付宝的“商家转账”服务为企业提供了数字化资金通道,实现0费率、批量处理、实时到账。适用于零工薪酬、佣金、营销激励等多种场景,已覆盖灵活用工、物流、出行、家政服务等多行业。该服务提供无需开发的批量转账产品和API接口产品,支持定制化行业解决方案。如需接入,可点击链接留下信息以获取联系。
【支付宝推荐】企业转账如何又快又省?试试“商家转账”吧!
|
5月前
|
消息中间件 Java 测试技术
支付宝支付
支付宝支付
107 1
|
5月前
支付设计白皮书:详解!《境外信用卡支付》收单完整过程
支付设计白皮书:详解!《境外信用卡支付》收单完整过程
137 0
支付宝提现方案
说明   首先使用支付宝接口实现提现功能,需要使用到【单笔转账到支付宝账户接口】   大家需要转变一个思路,单笔转账接口可以转账给个人支付宝账户,对于用户而言收到商家转账就是提现成功。所以我们可以针对这个接口来说,转账就是提现。
1275 12
|
开发者
支付之去银行 | 学习笔记
快速学习支付之去银行。
134 0
支付之去银行 | 学习笔记
|
JSON 数据格式
单笔转账到支付宝账户接入流程
功能场景说明: 1. 支付宝商户向其他支付宝账户单笔转账; 2. 目前仅支持账户余额渠道付款; 3.可集成到商户自身业务系统,无需登录支付宝,可用于商户间的货款结算,商户给个人用户发放佣金等; 4.提现场景/发放工资场景等; 产品规则: 1.最低额度为0.1元。
2227 0
如何解决单笔转账到支付宝账户-报手机号对应多个支付宝账户
应该有部分人会碰到一个手机号码绑定多个支付宝账号的情况,在测试单笔转账到支付宝账号时,就有同学为此困扰,这边发现问题,测试后得出一的结果,希望的对大家有帮助 1.如果你传入的手机号码对应多个支付宝账号,没有传payee_real_name(收款方真是账户时)则会报该"手机号对应多个支付宝账户,请传入...
1810 0