PayPal定期付款未显示在我的买方或商家沙箱帐户中?

时间:2018-03-15 17:23:34

标签: php paypal paypal-sandbox paypal-rest-sdk paypal-subscriptions

我使用的是Paypal rest-api-sdk-php软件包,而我似乎无法在我的沙盒买家或商家/商家帐户中显示定期付款。

这是我的计划创建的代码

public function payPalMakePlan()
{
    $plan = new Plan();
    $plan->setName('All Tools')->setDescription('test')->setType('INFINITE');

    $paymentDefinition = new PaymentDefinition();

    $paymentDefinition->setName('Regular Payments')
    ->setType('REGULAR')
    ->setFrequency('Month')
    ->setFrequencyInterval("1")
    ->setAmount(new Currency(array('value' => 49.99, 'currency' => 'USD')));

    $chargeModel = new ChargeModel();
    $chargeModel->setType('SHIPPING')->setAmount(new Currency(array('value' => 10, 'currency' => 'USD')));

    $paymentDefinition->setChargeModels(array($chargeModel));

    $merchantPreferences = new MerchantPreferences();
    $baseUrl = ResultPrinter::getBaseUrl();

    $merchantPreferences->setReturnUrl("$baseUrl/ExecuteAgreement.php?success=true")
    ->setCancelUrl("$baseUrl/ExecuteAgreement.php?success=false")
    ->setAutoBillAmount("yes")
    ->setInitialFailAmountAction("CONTINUE")
    ->setMaxFailAttempts("0")
    ->setSetupFee(new Currency(array('value' => 1, 'currency' => 'USD')));

    $plan->setPaymentDefinitions(array($paymentDefinition));
    $plan->setMerchantPreferences($merchantPreferences);

    $request = clone $plan;

    try {
        $output = $plan->create($this->apiContext);
    } catch (Exception $ex) {
        ResultPrinter::printError("Created Plan", "Plan", null, $request, $ex);
        exit(1);
    }

    ResultPrinter::printResult("Created Plan", "Plan", $output->getId(), $request, $output);

    try {
        $patch = new Patch();

        $value = new PayPalModel('{
               "state":"ACTIVE"
             }');

        $patch->setOp('replace')
            ->setPath('/')
            ->setValue($value);
        $patchRequest = new PatchRequest();
        $patchRequest->addPatch($patch);

        $plan->update($patchRequest, $this->apiContext);

        $plan = Plan::get($output->getId(), $this->apiContext);
                } catch (Exception $ex) {
                    ResultPrinter::printError("Updated the Plan to Active State", "Plan", null, $patchRequest, $ex);
            exit(1);
        }
        ResultPrinter::printResult("Updated the Plan to Active State", "Plan", $plan->getId(), $patchRequest, $plan);
}

这是协议创建的代码

public function payPalProcessPayment()
{
    //return $output;

    $agreement = new Agreement();

    $time = time() + 60;
    $startDate = date("Y-m-d",  $time) . 'T' . date("H:i:s",  $time) . 'Z';
    //'2018-03-22T09:13:49Z'
    $agreement->setName('Base Agreement')
    ->setDescription('Basic Agreement')
    ->setStartDate($startDate);

    $plan = new Plan();
    $plan->setId('P-5P607214NW3435943FGDG2OI');
    $agreement->setPlan($plan);

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

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

    $request = clone $agreement;

    try {
        $agreement = $agreement->create($this->apiContext);
        $approvalUrl = $agreement->getApprovalLink();
    } catch (Exception $ex) {
        ResultPrinter::printError("Created Billing Agreement.", "Agreement", null, $request, $ex);
        exit(1);
    }

    ResultPrinter::printResult("Created Billing Agreement. Please visit the URL to Approve.", "Agreement", "<a href='$approvalUrl' >$approvalUrl</a>", $request, $agreement);

    //return $agreement;

    if (isset($_GET['success']) && $_GET['success'] == 'true') 
    {
        $token      = $_GET['token'];
        $agreement  = new \PayPal\Api\Agreement();

        try 
        {
            $agreement->execute($token, $this->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);

        try 
        {
            $agreement = \PayPal\Api\Agreement::get($agreement->getId(), $this->apiContext);
        } 
        catch (Exception $ex) 
        {
            ResultPrinter::printError("Get Agreement", "Agreement", null, null, $ex);
            exit(1);
        }

        ResultPrinter::printResult("Get Agreement", "Agreement", $agreement->getId(), null, $agreement);
    } 
    else 
    {
        ResultPrinter::printResult("User Cancelled the Approval", null);
    }
}

这是创建的协议网址

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-20E88883UV349602M 

点击上面的网址登录我的paypal买家帐户并点击同意后继续我被重定向回我的&#34;成功&#34;网址为

的网页
https://www.mywebsite.com/ExecuteAgreement.php?success=true&token=EC-20E88883UV349602M 

paypal日志记录设置为FINE并显示事件的流动

[15-03-2018 17:17:06] PayPal\Core\PayPalHttpConnection : INFO: POST https://api.sandbox.paypal.com/v1/payments/billing-agreements/
[15-03-2018 17:17:12] PayPal\Core\PayPalHttpConnection : INFO: Response Status  : 201

我在这做什么导致此订阅不显示在任何地方?

1 个答案:

答案 0 :(得分:0)

我是一个白痴和$ agreement-&gt;执行($ token,$ this-&gt; apiContext);并没有被执行lols。

http://paypal.github.io/PayPal-PHP-SDK/sample/doc/billing/ExecuteAgreement.html