Estoy tratando de usar la API de pagos adaptables de Paypal y tengo dificultades para cambiarlo a producción. Todo funciona como se espera en el modo de espacio aislado y obtengo una respuesta adecuada, pero cuando cambio a mi ID de aplicación en vivo, no funciona.Paypal Adaptive Payments funciona en modo sandbox pero no en la producción
Estos son los valores de configuración que estoy usando para caja de arena
PayPal URL : https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?paykey=[TOKEN_HERE]
Application ID : APP-80W284485P519543T
Estos valores me funcionan en el modo de recinto de seguridad. Pero cuando cambio a los valores de producción inferiores, deja de funcionar
PayPal URL : https://www.paypal.com/webapps/adaptivepayment/flow/pay?paykey=[TOKEN_HERE]
Application ID : [ACTUAL APP ID]
This is what I mean by stops working.
- En el modo de producción, la aplicación obtiene el paykey
- lo anexa a la URL de Paypal y luego lo redirige a su sitio
- en carga del sitio, me sale el siguiente mensaje
This transaction has already been approved. Please visit your PayPal Account Overview to see the details
La URL final que termina en - https://ic.paypal.com/webapps/adaptivepayment/flow/payinit?execution=e6s1
Imágenes - http://screencast.com/t/28qJZ9CIk
También hay un botón 'Volver' allí, y cuando hago clic en él me sale llevado a un sitio diferente cada vez (se parece me envían al azar) failUrls
que he incluido el código que utilizo a continuación
$payRequest = new PayRequest();
$payRequest->actionType = "PAY";
$payRequest->cancelUrl = $cancelURL; //my success and fail urls
$payRequest->returnUrl = $returnURL;
$payRequest->clientDetails = new ClientDetailsType();
$payRequest->clientDetails->applicationId = $this->config['application_id'];
$payRequest->clientDetails->deviceId = $this->config['device_id'];
$payRequest->clientDetails->ipAddress = $this->CI->input->ip_address();
$payRequest->currencyCode = $currencyCode;
$payRequest->requestEnvelope = new RequestEnvelope();
$payRequest->requestEnvelope->errorLanguage = "en_US";
//I set the receiver and the amounts. I also define that these are digital goods payments
$receiver1 = new receiver();
$receiver1->email = $opts['receiver_email'];
$receiver1->amount = $opts['amount'];
$receiver1->paymentType = 'DIGITALGOODS';
$payRequest->receiverList = new ReceiverList();
$payRequest->receiverList = array($receiver1);
//Then I make the call
$ap = new AdaptivePayments();
$response = $ap->Pay($payRequest);
if(strtoupper($ap->isSuccess) == 'FAILURE') {
log_message('error', "PAYMENT_FAIL : " . print_r($ap->getLastError(), true));
return false;
} else {
if($response->paymentExecStatus == "COMPLETED") {
header("Location: " . $this->config['success_url']);
exit;
} else {
$token = $response->payKey;
$payPalURL = $this->config['paypal_redirect_url'] . 'paykey='.$token;
header("Location: ".$payPalURL);
exit;
}
}
Este es el código tomado de su aplicación de la muestra, así que no es seguro ¿Qué está mal aquí? Otra información que pueda ser relevante
estoy usando los pagos de adaptación para asegurarse de que el emisor y el receptor realmente hizo la transacción
he puesto el tipo de pago como 'bienes digitales'
EDITAR
he incluido un ejemplo de URL con t él pagó clave adjunta
https://www.paypal.com/webapps/adaptivepayment/flow/pay?paykey=AP-0H388650F08226841
¿Se puede incluir un eco de $ payPalURL? – Robert
@Robert seguro, he actualizado la pregunta con esa información. – JohnP