tbk usa requests para hacer los requests, que utiliza los valores por defecto actuales de openssl y cuando se hace un request al servidor de Transbank de certificación, los mismos fallan al inicio por no poder hacer el handshake de SSL (utilizando tbk@1.0.0rc2).
SSLError at /transbank/payment-start/
[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
Request Method: POST Request URL: http://192.168.1.33:8000/transbank/payment-start/ Django Version: 1.8.6 Exception Type: SSLError Exception Value:
[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)
Exception Location: /home/rodrigo/.virtualenvs/dartel/lib/python2.7/site-packages/requests/adapters.py in send, line 433 Python Executable: /home/rodrigo/.virtualenvs/dartel/bin/python Python Version: 2.7.10 Python Path:
['/home/rodrigo/wapps/dartel/dartel',
'/home/rodrigo/.virtualenvs/dartel/lib/python27.zip',
'/home/rodrigo/.virtualenvs/dartel/lib/python2.7',
'/home/rodrigo/.virtualenvs/dartel/lib/python2.7/plat-linux2',
'/home/rodrigo/.virtualenvs/dartel/lib/python2.7/lib-tk',
'/home/rodrigo/.virtualenvs/dartel/lib/python2.7/lib-old',
'/home/rodrigo/.virtualenvs/dartel/lib/python2.7/lib-dynload',
'/usr/lib64/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib64/python2.7/lib-tk',
'/usr/lib/python2.7/lib-tk',
'/home/rodrigo/.virtualenvs/dartel/lib/python2.7/site-packages']
Para reproducir, tomado de https://github.com/pedroburon/tbk/blob/1.0.0-rc.2/tbk/kcc/payment.py#L165 para obtener el token para redirigir al servidor de Transbank, en un ipdb:
import requests
TBK_VERSION_KCC = '6.0'
data1 = {'TBK_KEY_ID': 101, 'TBK_CODIGO_COMERCIO': '597026007976', 'TBK_PARAM': '5QWcIkl7aE0PyILFwtrPzC+Zc1dm5CBMyalTtut0yFkrdbK0yGMFiIWbAZS78w2BiYUNqiakjWFo\nocBMLd/mmBYFmk7rWn60qlcbjm788ao+wfNPVmibL/G/dxG8bRzEP6JrbIuUC2yIyCd82GWzWtdY\nwsflOFsnWPG9Nq9AteDP4GkLbm3mqn6LWzlx6Lj4+oJsy7Sdwo+iD/B1MUomgEfbGXB5htPHMRhU\nZ+blsCVSUiIv5MvUTbAwAo2XoTRylGJEji5b4/lF/ORv9t0JE/XA2+yvba2p7LNV636EddfrhqEo\nad2zQXI07UI/YNE1YpmHgr6QzoEKLwHQjz5jPTB2PMSWyWd9cZuZ+eGbk1p7WAbVSSfYwA6sLf6G\nh1KhpgQ3yw+tM/Tk83oDIB8uJ/oXU4o5aS60+whiZqck/bI6ZhBZ69ZQYA/Eu7CRgFI8y1Jrx1e/\n0GLdoPgG/AbmiP1UrmbJPGlpx0TM5Fw7I7HN0oSZYC19ntFwXX6YF72ScoBv68aAp0mC9D1eiUN0\nY9Ov168iaZTY4p706I2YNwEt3K1qSq6oCiEXrrkS94UzpqUj8ZbN3JbzLUCLqhcdPTeW3iBkZEFP\nsAk6qvvGsrCg6pZLafbqDuw5B83F5dVJuXLfWTW1/ZoTY3Jib+Dxv829IsthSZZJ9YQwnvLgCVIX\n0jwC5pIFoM4Qx9/KK07aKciLJKqKIcCejRVxGBQh7RqveFLlKusfEJjAHpRDHBKtzdRNilUl31S3\nKALXm44D+scDg67VGxE2PMWot9c3JnHteqKLXAbJP+Y4eo+yrfUKsDGbUzlU+d36dyLw7RGjw6BE\n7YFpLC/o+FsHcwXDNQkHYfyvC1CX7qPG5vl6OOMAIsdmnTvhkCndT9tf1AlPDqdGaSzy+njenS9I\nGae+tD2ZMbChcQJDCvfkf/m7j1hlhk/NI88JcRgBwjIDw44ao/wEsOGbkYfeFNa6w2D9sbbCUkAh\nHAI4gNTqEoz/uZW11618DzWzJndVVn5CNuqcA7NLCjDOQCJsXrpf7Pt7ZJ5JbPYUFqQANSbcw4er\nBGUzq+KF00Enj/pMWsBnp8GesvmeQwbiUD7z9PmPQlX0TY98pXLMdRcJWoF6xM+dzo6tKmOeEhMW\nfBr/xzJEOFvvCozqNwsHSq0Nax5ouSCBdn/fdLi39iIJUtcEdoToQG8ip/BykMC6/eWYh5mV67XU\nYYkhfjyXWL0xS2uB2wsl9KvYFDdpNLUKN9oiGrZOv8vZ+wYYhvjxwuAIc53zIfbe61QWrhQ8yczB\nJDiDJ+zfV2iBpcFR+itPVAea9oQp8+j1wfp8DbcQmCd3O/8iYq6t1JqtBmd6Yq/0fODboeoLmzQ4\n9qTgCgmGKQAJfb2SmrAyqHkBOTKBhoR9VLSi0V3icS0ID9PoZlXr4spHFDRBpMjXCIYFzdToGd0N\nFnSwWNrf7n1XtKwumvbYNZ7Ng+zMsqzKMN9/MDLWRdts7wE9Pf9psIBRcjwcmjYuXEzd/wdjWBlE\nnS59G6XPl6Z3GtCHSnX6HUDow59ypPAxjPBY0biakCyuZYZrV1lOVW+SeAJPsUVU40dOP3xRE6zd\nqDufTeeNX9mQwz5PgBfs3dKwnFQJLwb66g2cb8fqHNbBjieNvGpw8Lq+i8q17ERkBtFINdgoCjxg\nbdidWCo8eGNfYA+F3fE1gV2Au7w3S/yaW/RgPfNO8XTFEqbRzH8iiGaxU0L+B53B+tVWJNv/4S4L\n+iLw4H2p2KXQk4DlRKI0i9A=\n', 'TBK_VERSION_KCC': '6.0'}
validation_url = 'https://certificacion.webpay.cl:6443/filtroUnificado/bp_validacion.cgi'
headers1 = {'User Agent': 'TBK/6.0 (Python/2.7)'}
requests.post(validation_url, data=data1, headers={'User Agent': USER_AGENT}, allow_redirects=False, verify=False)
En un bash se verifica el handshake error:
openssl s_client -connect certificacion.webpay.cl:6443 -ssl2
openssl s_client -connect certificacion.webpay.cl:6443 -ssl3
Hacer que se utilice sólo tls1 para los requests hacia certificacion puedan realizarse, y poder especificar otro para produccion que eventualmente se puede actualizar.
openssl s_client -connect certificacion.webpay.cl:6443 -tls1
Para esto habría que hacer que requests utilice TLS1:
O utilizar requests-toolbelt:
** Obs
- No está verificado en Python 3 ni contra el servidor de producción de Transbank
- Firefox se queja del SSL de certificacion también

tbkusarequestspara hacer los requests, que utiliza los valores por defecto actuales deopenssly cuando se hace un request al servidor de Transbank de certificación, los mismos fallan al inicio por no poder hacer el handshake de SSL (utilizandotbk@1.0.0rc2).Para reproducir, tomado de https://github.com/pedroburon/tbk/blob/1.0.0-rc.2/tbk/kcc/payment.py#L165 para obtener el token para redirigir al servidor de Transbank, en un ipdb:
En un
bashse verifica el handshake error:Hacer que se utilice sólo tls1 para los requests hacia
certificacionpuedan realizarse, y poder especificar otro paraproduccionque eventualmente se puede actualizar.Para esto habría que hacer que
requestsutilice TLS1:O utilizar
requests-toolbelt:** Obs