Я пытаюсь использовать API адаптивных платежей Paypal, и мне трудно переключиться на производство. В режиме песочницы все работает, как и ожидалось, и я получаю правильный ответ, но когда я переключаюсь на свой живой идентификатор приложения, он не работает.
Это значения конфигурации, которые я использую для песочницы
PayPal URL : https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?paykey=[TOKEN_HERE]
Application ID : APP-80W284485P519543T
Эти значения работают для меня в режиме песочницы. Но когда я переключаюсь на приведенные ниже производственные значения, он перестает работать
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.
This transaction has already been approved. Please visit your PayPal Account Overview to see the details
Конечный URL, который заканчивается на-https://ic.paypal.com/webapps/adaptivepayment/flow/payinit?execution=e6s1
Скриншот-http://screencast.com/t/28qJZ9CIk
Там также есть кнопка «Возврат», и когда я нажимаю на нее, я каждый раз попадаю на другой сайт (Похоже, меня отправляют на случайный failUrls)
Я включил код, который использую ниже
$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;
}
}
Это код, взятый из их примера реализации, поэтому не совсем уверен, что здесь происходит не так. Другая информация, которая может иметь значение
Я использую адаптивные платежи, чтобы убедиться, что отправитель и получатель действительно совершил транзакцию
Я установил тип оплаты «ЦИФРОВЫЕ ТОВАРЫ»
. РЕДАКТИРОВАТЬ
Я включил образец URL с прикрепленным платежным ключом
https://www.paypal.com/webapps/adaptivepayment/flow/pay?paykey=AP-0H388650F08226841