簡體   English   中英

PayPal定期付款沒有顯示在我的買家或商人沙盒帳戶中?

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

我正在使用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);
    }
}

這是創建的協議URL

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

單擊上面的URL后,登錄我的Paypal買方帳戶,然后單擊同意並繼續,我將重定向到URL為的“成功”頁面

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

貝寶日志記錄設置為“ 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

我在做什么導致該訂閱在任何地方都不顯示?

我是個白痴,是$ agreement-> execute($ token,$ this-> apiContext); 從來沒有被執行過大笑。

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