Estoy tratando de utilizar Amazon servicios de pago, y requieren que haga algo como esto:problemas de codificación Amazon Payments flexibles serie secreta en PHP
Aquí está la firma completa para que pueda ver he añadido el método de la firma:
$string_to_sign = "GET\n
authorize.payments-sandbox.amazon.com\n
cobranded-ui/actions/start?
SignatureMethod=HmacSHA256&SignatureVersion=2&callerKey=my_key&callerReference=YourCallerReference&paymentReason=donation&pipelineName=SingleUse&returnUrl=http%3A%2F%2Fyourwebsite.com%2Freturn.html&transactionAmount=4.0";
y después cifrarlo como a continuación.
$encoded_string_to_sign = URLEncode(Base64_Encode(hash_hmac("sha256", $string_to_sign, 'my_secret_key')));
hago eso, pero entonces me da un error de ellos diciendo:
Caller Input Exception: The following input(s) are either invalid or absent:[signatureMethod]
Cualquier idea de lo que podría estar pasando mal aquí?
Aquí está el código completo para esto: (las variables se asignan valores por encima de)
<?php
$string_to_sign = 'GET
authorize.payments-sandbox.amazon.com/cobranded-ui/actions/startSignatureMethod=HmacSHA256&SignatureVersion=2&callerKey=AKIAJENBYSJCJX2IDWDQ&callerReference=YourCallerReference&paymentReason=donation&pipelineName=SingleUse&returnUrl=http%3A%2F%2Fproblemio.com&transactionAmount=4.0';
$encoded_string_to_sign = URLEncode(Base64_Encode(hash_hmac("sha256", $string_to_sign, 'my_secret_key')));
$amazon_request_sandbox = 'https://authorize.payments-sandbox.amazon.com/cobranded-ui/actions/start?SignatureVersion=2&returnUrl='.$return_url.'&paymentReason='.$payment_reason.'&callerReference=YourCallerReference&callerKey='.$my_access_key_id.'&transactionAmount=4.0&pipelineName=SingleUse&SignatureMethod=HmacSHA256&Signature='.$encoded_string_to_sign;
//echo $amazon_request_sandbox; - use this if you want to see the resulting request and paste it into the browser
header('Location: '.$amazon_request_sandbox);
?>
Gracias !!
edité mi Q originales para demostrar que estoy incluyendo la cadena SignatureMethod = HMACSHA256, pero no ayuda :( – GeekedOut
se ha asegurado de que no hay espacio en blanco entrando en la cadena de consulta decir quizás después de "comenzar?"? – travega
¿Puedo preguntar también por qué está codificando los caracteres: y/en su returnUrl si lo está URLEncoding de todos modos? – travega