简体   繁体   English

PayPal定期付款没有显示在我的买家或商人沙盒帐户中?

[英]PayPal recurring payments not showing in my buyer or merchant sandbox accounts?

I'm using the Paypal rest-api-sdk-php package and I can't seem to get recurring payments to show up in either my sandbox buyer or merchant/business account. 我正在使用Paypal rest-api-sdk-php软件包,但似乎无法获得经常性付款以显示在我的沙盒买家或商人/企业帐户中。

This is the code for my plan creation 这是我创建计划的代码

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);
}

This is the code for the agreement creation 这是协议创建的代码

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);
    }
}

This is the agreement URL that is created 这是创建的协议URL

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

After I click the above URL sign into my paypal buyer account and click agree and continue I get redirected back to my "success" page with a URL of 单击上面的URL后,登录我的Paypal买方帐户,然后单击同意并继续,我将重定向到URL为的“成功”页面

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

The paypal logging is set to FINE and displays the flowing for the event 贝宝日志记录设置为“ 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

What am I doing here that is causing this subscription not to show anywhere? 我在做什么导致该订阅在任何地方都不显示?

I was being an idiot and $agreement->execute($token, $this->apiContext); 我是个白痴,是$ agreement-> execute($ token,$ this-> apiContext); wasn't ever being executed lols. 从来没有被执行过大笑。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM