【问题标题】:Logic Issues with paypal SDKpaypal SDK 的逻辑问题
【发布时间】:2018-06-08 19:26:00
【问题描述】:

我已将 PayPal SDK 与沙盒帐户集成。它适用于我的网站,带有自定义包名称及其价格。比如基本包 79 美元、专业包 150 美元和专业包 400 美元。一旦用户点击继续按钮,它就会重定向到带有基本包和 79 美元价格的 PayPal。对于其他包我必须做什么逻辑?

我尝试将数组 ($basic, $pro, $professional) 插入到项目对象中,但 Setprice() 不接受数组。

我只是坚持在这里输入代码,即使我不知道如何提问非常抱歉。

这是我的 checkout.php

    if ($_POST) {

        $priceBasic= (is_numeric($_POST['b']) ? (int)$_POST['b'] : 89); 
        $pkgBasic = $_POST['basic'];

        $pricePro= (is_numeric($_POST['p']) ? (int)$_POST['p'] : 175);  
        $pkgPro = $_POST['pro'];

        $priceUltra= (is_numeric($_POST['u']) ? (int)$_POST['u'] : 449);    
        $pkgUltra = $_POST['ultra'];

        $shipping = 0.0;
        $total = $priceBasic + $shipping;

        //PAYER INSTANT
         $payer = new Payer();
         $payer->setPaymentMethod('paypal');

        // DEFINING ITEMS

        // $packages = [$pkgBasic, $pkgPro, $pkgUltra];
        // $price = [$priceBasic, $pricePro, $priceUltra];

        $item = new Item();
        $item->setName($packages)->setCurrency('USD')->setQuantity(1)-
        >setPrice($priceBasic);

        //PACKAGES LIST
        $itemList = new ItemList();
        $itemList->setItems([$item]);

         $details = new Details();
         $details->setShipping($shipping)
        ->setSubTotal($total);

        $amount = new Amount();
        $amount->setCurrency('USD')->setTotal($total)
        ->setDetails($details);
        $transaction = new Transaction();

        $transaction->setAmount($amount)->setItemList($itemList)-
        >setDescription('Hello Hash Thanks for first paypal')-
        >setInvoiceNumber(uniqid());

        $redirectUrls = new RedirectUrls();
        $redirectUrls->setReturnUrl(SITE_URL.'/pay.php?success=true')
        ->setCancelUrl(SITE_URL.'/pay.php?success=false');


        $payment = new Payment();
        $payment->setIntent('sale')->setPayer($payer)
       ->setRedirectUrls($redirectUrls)->setTransactions([$transaction]);


       try {
         $payment->create($paypal);
       } catch (Exception $e) {

       die($e);

     }

     $aprovalUrl = $payment->getApprovalLink();

     // echo $aprovalUrl;
     header("location:".$aprovalUrl);

  }

?>`

【问题讨论】:

    标签: php paypal


    【解决方案1】:

    您可以使用 switch case 在价格之间切换。希望这可以帮助。

    $package_type = $_POST['package_type'];
    
    switch($package_type) {
        case "basic":
            $price = 89;
        break;
        case "pro":
            $price = 175;
        break;
        case "ultra":
            $price = 449;
        break;
    }
    
    
    $shipping = 0.0;
    $total = $priceBasic + $shipping;
    
    //PAYER INSTANT
     $payer = new Payer();
     $payer->setPaymentMethod('paypal');
    
    // DEFINING ITEMS
    
    // $packages = [$pkgBasic, $pkgPro, $pkgUltra];
    // $price = [$priceBasic, $pricePro, $priceUltra];
    
    $item = new Item();
    $item->setName($packages)->setCurrency('USD')->setQuantity(1)-
    >setPrice($price);
    
    
    //PACKAGES LIST
    $itemList = new ItemList();
    $itemList->setItems([$item]);
    
     $details = new Details();
     $details->setShipping($shipping)
    ->setSubTotal($total);
    
    
    $amount = new Amount();
    $amount->setCurrency('USD')->setTotal($total)
    ->setDetails($details);
    $transaction = new Transaction();
    
     $transaction->setAmount($amount)->setItemList($itemList)-
     >setDescription('Hello Hash Thanks for first paypal')-
     >setInvoiceNumber(uniqid());
    
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl(SITE_URL.'/pay.php?success=true')
     ->setCancelUrl(SITE_URL.'/pay.php?success=false');
    
    
     $payment = new Payment();
     $payment->setIntent('sale')->setPayer($payer)
    ->setRedirectUrls($redirectUrls)->setTransactions([$transaction]);
    
    
    try {
    $payment->create($paypal);
    } catch (Exception $e) {
    
    die($e);
    
    }
    
      $aprovalUrl = $payment->getApprovalLink();
    
    // echo $aprovalUrl;
    header("location:".$aprovalUrl);
    
    ?>
    

    切换案例示例,检查此代码是否适合您。这就是您必须根据计划切换价格的方式。

    <?php
    $package_type = 'pro';
    $price = 0;
    
    switch($package_type) {
        case "basic":
            echo 'hai';
        break;
        case "pro":
            $price = 175;
        break;
        case "ultra":
            $price = 449;
        break;
    }
    echo $price;
    
    ?>
    

    【讨论】:

    • 谢谢,@Sundar 我通过 in_array 函数实现了它的工作,但我仍在使用它。我得到了这个错误400{"name":"MALFORMED_REQUEST","message":"Incoming JSON request does not map to API request","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST","debug_id":"913012b67b041"}
    • 感谢您的帮助我是初学者
    • 我已经厌倦了你的代码,但$price 在 switch 中没有得到任何价值,请帮助会很好
    • 哥们,我期待收到您的来信
    • 你现在有什么问题?它只是一个开关。只需阅读 php 中的 switch 即可
    猜你喜欢
    • 2023-03-31
    • 2015-04-10
    • 2013-12-15
    • 1970-01-01
    • 2023-04-04
    • 2016-04-17
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多