paypal SDK的逻辑问题

时间:2017-12-28 08:36:52

标签: php paypal

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

我试图将一个数组($ basic,$ pro,$ professional)插入到item对象中,但是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);

  }

?>`

1 个答案:

答案 0 :(得分:0)

您可以使用开关案例在价格之间切换。希望这可以帮助。     

$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;

?>