我正在尝试在PayOne ( https://www.payone.de/en/ )上验证信用卡。
我从中获得的参数列表According to 3.4.1 Verifying credit cards (creditcardcheck)
和3.1.2 Standard parameter
文档 PAYONE_Platform_Client_API_EN.pdf 的部分(您可以在此处请求https://www.payone.de/en/contact/)。
- 我计算 (aid, api_version, mid, mode, portalid, responsetype, request, storecarddata) (Python) 的哈希值并将其传递给客户端。
# build hash on server side:
import hmac
import hashlib
params = {
'aid': '123456',
'api_version': '3.12',
'mid': '123456',
'mode': 'test',
'portalid': '1234567',
'responsetype': 'JSON',
'request': 'creditcardcheck',
'storecarddata': 'yes'
}
message = ''.join([params[k] for k in sorted(params)])
return hmac.new(b'some-secret-key!', msg=message.encode('utf-8'), digestmod=hashlib.sha384).hexdigest()
- 然后使用我从服务器端获得的附加参数( cardcvc2、cardexpiredate、cardpan、cardtype )和哈希执行 JSONP(为什么这里没有 CORS 和 RESTful API?)请求:
- 得到结果:
{ "customermessage": "处理此交易时发生错误(错误的参数)。", "errorcode": "2007", "errormessage": "哈希不正确", "status": "ERROR" }
我正在使用 python 3.5 和 angular2。
我在这里做错了什么?
PS:
- 你可以在这里找到示例 php 代码,但没有 python 代码
PP:
已在网页界面中选择了哈希方法:https ://pmi.pay1.de/merchants/?navi=portal&rc=1 ( Method hash calculation*: SHA2-384 (recommended method)
)