Paypal Биллинг соглашение, странный ответ

0

У меня проблема с 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

Еще раз спасибо за вашу помощь :)

Теги:
rest
paypal

1 ответ

0

В качестве даты вы можете использовать дату ('c', time() +210) согласно http://php.net/manual/en/function.date.php

Не могли бы вы ответить на эту информацию, как, каков был способ оплаты при создании Агента по выставлению счетов. Если вы использовали PayPal, вам нужно щелкнуть на официальном утверждении и завершить поток.

После этого вам необходимо выполнить платеж, а затем, когда вы достигнете соглашения, вы сможете увидеть состояние как активное.

Дайте мне знать, если это исправить.

  • 0
    Здравствуйте, спасибо за ответ, но это не помогло, я добавил больше информации об этом!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню