Eu uso WAMP em um ambiente de desenvolvimento local e estou tentando cobrar um cartão de crédito, mas recebo a mensagem de erro:
erro cURL 60: problema com o certificado SSL: incapacidade de obter o certificado do emissor local
Pesquisei muito no Google e muitas pessoas estão sugerindo que eu faça o download deste arquivo: cacert.pem, coloque-o em algum lugar e referencie-o no meu php.ini. Esta é a parte do meu php.ini:
curl.cainfo = "C:\Windows\cacert.pem"
No entanto, mesmo após reiniciar o meu servidor várias vezes e mudar o caminho, recebo a mesma mensagem de erro.
Eu uso WAMP dos Módulos Apache e tenho o ssl_module habilitado. E das extensões PGP eu tenho o php_curl habilitado.
Continua a mesma mensagem de erro. Porque é que isso está a acontecer?
Agora estou a seguir esta correção: Como corrigir o PHP CURL Error 60 SSL
O que sugere que eu acrescente estas linhas às minhas opções de cURL:
curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, true);
Onde posso adicionar opções ao meu cURL? Aparentemente não através da linha de comando, já que o meu CLI não't encontra o comando "curl_setopt"
**EDIT***
Este é o código que estou a usar:
public function chargeStripe()
{
$stripe = new Stripe;
$stripe = Stripe::make(env('STRIPE_PUBLIC_KEY'));
$charge = $stripe->charges()->create([
'amount' => 2900,
'customer' => Input::get('stripeEmail'),
'currency' => 'EUR',
]);
dd($charge);
// echo $charge[Input::get('stripeToken')];
return Redirect::route('step1');
}
Guzzle, que é usado por cartalyst/stripe, fará o seguinte para encontrar um arquivo de certificados adequado para verificar um certificado de servidor:
openssl.cafile
está configurado no seu arquivo php.ini.curl.cainfo
está configurado no seu arquivo php.ini./etc/pki/tls/certs/ca-bundle.crt
existe (Red Hat, CentOS, Fedora; fornecido pelo pacote ca-certificates)./etc/ssl/certs/ca-certificates.crt
existe (Ubuntu, Debian; fornecido pelo pacote ca-certificates)/usr/local/share/certs/ca-root-nss.crt
existe (FreeBSD; fornecido pelo pacote ca_root_nss)/usr/local/etc/openssl/cert.pem
(OS X; fornecido por homebrew)C:\system32\curl-ca-bundle.crt
existe (Windows)C:\\curl-ca-bundle.crt
existe (Windows)Você vai querer ter certeza de que os valores para as duas primeiras configurações estão devidamente definidos, fazendo um teste simples:
echo "openssl.cafile: ", ini_get('openssl.cafile'), "\n";
echo "curl.cainfo: ", ini_get('curl.cainfo'), "\n";
Em alternativa, tente escrever o ficheiro nos locais indicados por #7 ou #8.
Como você está usando Windows, acho que o seu separador de caminho é '\' (e '/' no Linux). Tente utilizar a constante `DIRECTORY_SEPARATORY'. O seu código será mais portável.
Tente:
curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cacert.pem');
EDIT: e escreva o caminho completo. Eu tive alguns problemas com os caminhos relativos (talvez o curl seja executado a partir de outro diretório base?)