триггер webhook без оплаты выполнить? - PullRequest
0 голосов
/ 09 ноября 2019

Я создаю систему подписки PayPal и использую веб-хуки для уведомления системы о созданной, активной и т. Д. Подписке.

Однако требуется, чтобы пользователь возвращался к успешному URL и сайт выполнялся $agreement->execute($token, $apiContext));, чтобы заставить его работать.

Допустим, по какой-то причине пользователь никогда не вернется, чтобы вернуть URL, тогда вы никогда не будете выполнять платеж, и пользователь никогда не получит их подписку.

Я посмотрел вокругна PayPal документации и не может найти никакого решения.

Вот мой код:

Subscribe.php:

$agreement = new Agreement();
$agreement->setName('Basic Plan')
->setDescription('Some info')
->setStartDate($date);

$plan = new Plan();
$plan->setId('PLAN_ID');

$agreement->setPlan($plan);

// Add Payer
$payer = new Payer();
$payer->setPaymentMethod('paypal');
$agreement->setPayer($payer);

// Add Shipping Address
$shippingAddress = new ShippingAddress();
$shippingAddress->setLine1('111 First Street')
    ->setCity('Saratoga')
    ->setState('CA')
    ->setPostalCode('95070')
    ->setCountryCode('US');
$agreement->setShippingAddress($shippingAddress);

// ### Create Agreement
try {
    $agreement = $agreement->create($apiContext);
    $agreement->getApprovalLink()
    // method
    $approvalUrl = $agreement->getApprovalLink();
    redirect($approvalUrl);
} catch (Exception $ex) {
    print_r($ex->getData());
}

index.php

if (isset($_GET['status']) && $_GET['status'] == 'success') {
    $token = $_GET['token'];
    $agreement = new \PayPal\Api\Agreement();
    try {
        // ## Execute Agreement
        // Execute the agreement by passing in the token
        echo "<pre>";
        print_r($agreement->execute($token, $apiContext));
    } catch (Exception $ex) {

        exit(1);
    }
} else {
    echo "User Cancelled the Approval";
}
...