Skip to content

Latest commit

 

History

History
98 lines (85 loc) · 3.63 KB

README.md

File metadata and controls

98 lines (85 loc) · 3.63 KB

composer require lovecn/alipaybatchphp

支付宝转账api

以下代码采用laravel框架,如果原生php自行改动

###同步请求

    /**
     * 支付宝转账
     * @param  string $batch_no    转账批次号
     * @param  string $batch_fee   付款总金额
     * @param  string $batch_num   付款总笔数
     * @param  string $detail_data 付款详细数据
     * @return string              跳转支付宝
     */
    public function alipay($batch_no, $batch_fee, $batch_num, $detail_data)
    {
        
        $notify_url = config('services.alipay.notify');;//异步回调地址
        $email = config('services.alipay.email');
        $account_name = config('services.alipay.account');
        $pay_date = date('Ymd');
        /**
        测试
        $batch_no = date('Ymd').rand(1000000,9999999999);
        $batch_fee = 0.02;
        $batch_num = 2;
        $fee = 0.01;
        $detail_data = date('Ymd').rand(1000000,9999999999).'^[email protected]^小明^'.$fee.'^转账|'.date('Ymd').rand(1000000,9999999999).'^[email protected]^小红^'.$fee.'^转账';
        */
        
        //合作身份者id,以2088开头的16位纯数字
        $alipay_config['partner']       = config('services.alipay.id');
        
        //安全检验码,以数字和字母组成的32位字符
        $alipay_config['key']           = config('services.alipay.key');
        
        //签名方式 不需修改
        $alipay_config['sign_type']    = strtoupper('MD5');
        
        //字符编码格式 目前支持 gbk 或 utf-8
        $alipay_config['input_charset']= strtolower('utf-8');
        
        //ca证书路径地址,用于curl中ssl校验
        //请保证cacert.pem文件在当前文件夹目录中
        $alipay_config['cacert']    = getcwd().'\\cacert.pem';
        
        //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
        $alipay_config['transport']    = 'http';
        
        //构造要请求的参数数组,无需改动
        $parameter = array(
            "service" => "batch_trans_notify",
            "partner" => trim($alipay_config['partner']),
            "notify_url"    => $notify_url,
            "email" => $email,
            "account_name"  => $account_name,
            "pay_date"  => $pay_date,
            "batch_no"  => $batch_no,
            "batch_fee" => $batch_fee,
            "batch_num" => $batch_num,
            "detail_data"   => $detail_data,
            "_input_charset"    => trim(strtolower($alipay_config['input_charset']))
        );
        //建立请求
        $alipaySubmit = new \AlipaySubmit($alipay_config);
        $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");

        return $html_text;
    }

###异步回调

public function postAlipay()
    {
        $success = Input::get('success_details', '');
        $fail = Input::get('fail_details', '');
        $notifyId = Input::get('notify_id', '');
        $batchNo = Input::get('batch_no', '');
        $alipayConfig = [
            'partner' => config('services.alipay.id'),
            'key' => config('services.alipay.key'),
            'sign_type' => strtoupper('MD5'),
            'input_charset' => strtolower('utf-8'),
            'cacert' => getcwd() . '\\cacert.pem',
            'transport' => 'http',
        ];
        $alipayNotify = new \AlipayNotify($alipayConfig);
        $result = $alipayNotify->verifyNotify();
        if ($result) {
            //更新订单状态
            return 'success';
        }

        return 'fail';
    }