1.3. 签名
请求参数签名:
•第一步:商户生成一份RSA公钥私钥,将公钥交付于收钱吧,收钱吧会使用该公钥验证签名,RSA密钥使用2048位
•第二步:将完整的请求内容(不包含"request"字段,仅包括request的值)使用RSA私钥签名,并转换为BASE64编码
•第三步:将生成的签名填充到请求体中的signature当中
返回结果验签:
•第一步:收钱吧生成一份RSA公钥私钥,将公钥交付于商户,商户需要使用该公钥验证返回结果,RSA密钥使用2048位
•第二步:使用正则表达式将请求字符串和签名字符串从完整的请求字符串中分离出来
•第三步:使用收钱吧的公钥对于返回体签名进行验签
签名示例:
请求json字符串为:(不包括“request”:)
{
"head": {
"sign_type": "SHA256",
"appid": "test_appid",
"request_time": "2019-09-26T19:57:29+08:00",
"version": "1.0.0"
},
"body": {
"store_sn": "SHA256",
"brand_code": "000000",
"check_sn": "000000001",
"workstation_sn": "0"
}
}
转换为BASE64编码的签名值为:
g1FLM8OWt6YS1VQhiaFgt6EmHjV23uItAqSGBftf/fs1wi/Zmr6E5zzKToErYkQjYojHfnAw54IqXctCLWIG+quVlgmkpbxjLAgOhEMFbYYegdyycPVWpKqGYBQ5w+a9qRyJhIbTG49KGI7oNlQK4fzoEqUqWt+N352baqfFULJvYoCcNvalWh7qG81N+LndaThvJyNqGajUuZnRqouKYfzJcsVm7IPfMkSouqVRDlITzoaA9pDx0tNdTaDOIB1mAX5o/UmLrPqMvNsHJO3F5AZ7zPXJ6/AlbLd/34IjKJogYfF5jgtKGXstvYF1RsZtirLzNNWlQ11R8HOjSwQOFg==
完整的请求内容为:
{
"request": {
"head": {
"sign_type": "SHA256",
"appid": "test_appid",
"request_time": "2019-09-26T19:57:29+08:00",
"version": "1.0.0"
},
"body": {
"store_sn": "SHA256",
"brand_code": "000000",
"check_sn": "000000001",
"workstation_sn": "0"
}
},
"signature": "g1FLM8OWt6YS1VQhiaFgt6EmHjV23uItAqSGBftf/fs1wi/Zmr6E5zzKToErYkQjYojHfnAw54IqXctCLWIG+quVlgmkpbxjLAgOhEMFbYYegdyycPVWpKqGYBQ5w+a9qRyJhIbTG49KGI7oNlQK4fzoEqUqWt+N352baqfFULJvYoCcNvalWh7qG81N+LndaThvJyNqGajUuZnRqouKYfzJcsVm7IPfMkSouqVRDlITzoaA9pDx0tNdTaDOIB1mAX5o/UmLrPqMvNsHJO3F5AZ7zPXJ6/AlbLd/34IjKJogYfF5jgtKGXstvYF1RsZtirLzNNWlQ11R8HOjSwQOFg=="
}
验签示例:
完整的请求体内容示例:
{
"request": {
"head": {
"sign_type": "SHA256",
"appid": "test_appid",
"request_time": "2019-09-26T19:57:29+08:00",
"version": "1.0.0"
},
"body": {
"store_sn": "SHA256",
"brand_code": "000000",
"check_sn": "000000001",
"workstation_sn": "0"
}
},
"signature": "g1FLM8OWt6YS1VQhiaFgt6EmHjV23uItAqSGBftf/fs1wi/Zmr6E5zzKToErYkQjYojHfnAw54IqXctCLWIG+quVlgmkpbxjLAgOhEMFbYYegdyycPVWpKqGYBQ5w+a9qRyJhIbTG49KGI7oNlQK4fzoEqUqWt+N352baqfFULJvYoCcNvalWh7qG81N+LndaThvJyNqGajUuZnRqouKYfzJcsVm7IPfMkSouqVRDlITzoaA9pDx0tNdTaDOIB1mAX5o/UmLrPqMvNsHJO3F5AZ7zPXJ6/AlbLd/34IjKJogYfF5jgtKGXstvYF1RsZtirLzNNWlQ11R8HOjSwQOFg=="
}
请求json字符串为:(不包含“request”:)
{
"head": {
"sign_type": "SHA256",
"appid": "test_appid",
"request_time": "2019-09-26T19:57:29+08:00",
"version": "1.0.0"
},
"body": {
"store_sn": "SHA256",
"brand_code": "000000",
"check_sn": "000000001",
"workstation_sn": "0"
}
}
签名字符串为:
g1FLM8OWt6YS1VQhiaFgt6EmHjV23uItAqSGBftf/fs1wi/Zmr6E5zzKToErYkQjYojHfnAw54IqXctCLWIG+quVlgmkpbxjLAgOhEMFbYYegdyycPVWpKqGYBQ5w+a9qRyJhIbTG49KGI7oNlQK4fzoEqUqWt+N352baqfFULJvYoCcNvalWh7qG81N+LndaThvJyNqGajUuZnRqouKYfzJcsVm7IPfMkSouqVRDlITzoaA9pDx0tNdTaDOIB1mAX5o/UmLrPqMvNsHJO3F5AZ7zPXJ6/AlbLd/34IjKJogYfF5jgtKGXstvYF1RsZtirLzNNWlQ11R8HOjSwQOFg==