У меня проблема с PayPal-PHP-SDK,
Моя проблема в том, что я создаю план и соглашение, все работает нормально,
Я ставлю 30 € в качестве платы в соглашении и плане:
$amont = 30 ; // Prix
$merchantPreferences->setReturnUrl("$baseUrl/paiement-accept.php")
->setCancelUrl("$baseUrl/paiement-cancel.php")
->setAutoBillAmount("yes")
->setInitialFailAmountAction("CONTINUE")
->setMaxFailAttempts("0")
->setSetupFee(new Currency(array('value' => $amont, 'currency' => $currency)));
Дата, которую я использую, чтобы создать ее:
$date = date('Y-m-d\TH:i:s', time()+210) ."Z";'
$agreement->setName($name)
->setDescription($description)
->setStartDate($date);
Я пытался со временем() +210 и использовал только теперь метку времени.
Я выполняю соглашение, и есть ответ:
{
"id": "I-VD24XJ8MG14N",
"state": "Pending",
"description": "Abonnement Mensuel - 30\u20ac/mois",
"plan": {
"payment_definitions": [
{
"type": "REGULAR",
"frequency": "Month",
"amount": {
"currency": "EUR",
"value": "30.00"
},
"cycles": "0",
"charge_models": [
{
"type": "TAX",
"amount": {
"currency": "EUR",
"value": "0.00"
}
},
{
"type": "SHIPPING",
"amount": {
"currency": "EUR",
"value": "0.00"
}
}
],
"frequency_interval": "1"
}
],
"merchant_preferences": {
"setup_fee": {
"currency": "EUR",
"value": "0.00"
},
"max_fail_attempts": "0",
"auto_bill_amount": "YES"
}
},
"links": [
{
"href": "https://api.sandbox.paypal.com/v1/payments/billing-agreements/I-VD24XJ8MG14N/suspend",
"rel": "suspend",
"method": "POST"
},
{
"href": "https://api.sandbox.paypal.com/v1/payments/billing-agreements/I-VD24XJ8MG14N/re-activate",
"rel": "re_activate",
"method": "POST"
},
{
"href": "https://api.sandbox.paypal.com/v1/payments/billing-agreements/I-VD24XJ8MG14N/cancel",
"rel": "cancel",
"method": "POST"
},
{
"href": "https://api.sandbox.paypal.com/v1/payments/billing-agreements/I-VD24XJ8MG14N/bill-balance",
"rel": "self",
"method": "POST"
},
{
"href": "https://api.sandbox.paypal.com/v1/payments/billing-agreements/I-VD24XJ8MG14N/set-balance",
"rel": "self",
"method": "POST"
}
],
"start_date": "2014-11-21T23:00:00Z",
"agreement-details": {
"outstanding_balance": {
"currency": "EUR",
"value": "0.00"
},
"cycles_remaining": "0",
"cycles_completed": "0",
"final_payment_date": "1970-01-01T00:00:00Z",
"failed_payment_count": "0"
}
}
Я не знаю, почему setup_fees на 00
Почему начинается дата на "2014-11-21T23: 00: 00Z"?
И почему это находится в состоянии ожидания.
Можете ли вы помочь мне, как заставить его работать? :(
Если вам нужна дополнительная информация (больше кода), чтобы узнать, где проблема, спросите меня, и я отвечу с дополнительной информацией.
Большое спасибо !
Xusifob
/************************************************* **************************************************
РЕДАКТИРОВАТЬ:
************************************************** **************************************************/
Спасибо, что нашли время ответить мне.
На дату, когда я изменил ее,
Способ оплаты для создания биллинга - это учетная запись PayPal:
// Add Payer
$payer = new Payer();
$payer->setPaymentMethod('paypal');
$agreement->setPayer($payer);
Я уже выполнил все тезисы, кликнул на URL утверждения, подключился к моей тестовой учетной записи PayPal и принял транзакцию.
На моей странице возврата я на этой странице:
МойВебСайт /Paiement-accept.php? лексема = EC-4VW6406102605853H
Я видел в api Paypal api, что страница ExecuteAgreement ожидает значения успеха в URL-адресе ($ _GET ['success'] = true)
Но я никогда не получил это значение в своем URL-адресе, и ответ сказал мне, что Пользователь отменил одобрение.
Я изменил код, чтобы больше не иметь эту ошибку, и это дает мне ответ, который я поставил выше.
Это мой код:
$createdAgreement = require '../vendor/paypal/rest-api-sdk-php/sample/billing/ExecuteAgreement.php';
require '../vendor/paypal/rest-api-sdk-php/sample/billing/GetBillingAgreement.php';
И для ExecuteAgreement:
if (isset($_GET['token'])) {
$token = $_GET['token'];
$agreement = new \PayPal\Api\Agreement();
try {
$agreement->execute($token, $apiContext);
} catch (Exception $ex) {
ResultPrinter::printError("Executed an Agreement", "Agreement", $agreement->getId(), $_GET['token'], $ex);
exit(1);
}
ResultPrinter::printResult("Executed an Agreement", "Agreement", $agreement->getId(), $_GET['token'], $agreement);
} else {
ResultPrinter::printResult("User Cancelled the Approval", null);
}
return $agreement;
Изменение даты не решило проблему с ответом на вопрос start_date
Еще раз спасибо за вашу помощь :)
В качестве даты вы можете использовать дату ('c', time() +210) согласно http://php.net/manual/en/function.date.php
Не могли бы вы ответить на эту информацию, как, каков был способ оплаты при создании Агента по выставлению счетов. Если вы использовали PayPal, вам нужно щелкнуть на официальном утверждении и завершить поток.
После этого вам необходимо выполнить платеж, а затем, когда вы достигнете соглашения, вы сможете увидеть состояние как активное.
Дайте мне знать, если это исправить.