Как настроить страницу оформления заказа PayPal (PayPal-PHP-SDK)

#php #paypal

#php #paypal

Вопрос:

Я работаю с PayPal-PHP-SDK, как предложено в документах разработчика. В настоящее время я запускаю этот код:

http://paypal.github.io/PayPal-PHP-SDK/

Я просто хочу изменить название бренда и добавить логотип, но я не знаю, как этого добиться.

Комментарии:

1. Возможно, вам придется войти в учетную запись PayPal, чтобы настроить страницу, или лучше взять отпуск.

2. Я пошел дальше и удалил ответ из вашего вопроса и добавил его в качестве ответа сообщества wiki ниже. В будущем, вместо редактирования вопроса с ответом, просто добавьте ответ самостоятельно и примите его ниже.

Ответ №1:

Поскольку PayPal обновил свой дизайн, изменения, которые вы можете внести в настройки профиля, больше не будут работать.

Чтобы изменить дизайн, вам сначала нужно создать веб-профиль:

     // Create the WebProfile
    $presentation = new Presentation();
    $presentation->setLogoImage("http://www.yeowza.com/favico.ico")
        ->setBrandName("YeowZa! Paypal")
        ->setLocaleCode("US");
    $inputFields = new InputFields();
    $inputFields->setAllowNote(true)
        ->setNoShipping(1)
        ->setAddressOverride(0);
    $webProfile = new WebProfile();
    $webProfile->setName("YeowZa! T-Shirt Shop" . uniqid())
        ->setPresentation($presentation)
        ->setInputFields($inputFields);
    try {
        $createdProfile = $webProfile->create($paypal);
        $createdProfileID = json_decode($createdProfile);
        $profileid = $createdProfileID->id;
    } catch(PayPalExceptionPayPalConnectionException $pce) {
        echo '<pre>',print_r(json_decode($pce->getData())),"</pre>";
        exit;
    }
  

Идентификатор созданного профиля был сохранен в $profileid.Этот идентификатор необходимо установить через. Установите experienceprofileid($profileid) при создании платежа.

         // Create the Payment       
    $product = $_POST['product'];
    $price = 4;
    $shipping  = 2;
    $total = $price   $shipping;

    $payer = new Payer(); 
    $payer->setPaymentMethod("paypal");

    $item1 = new Item();
    $item1->setName('Ground Coffee 40 oz') ->setCurrency('EUR') ->setQuantity(1) ->setSku("123123")->setPrice(6.5); // Similar to `item_number` in Classic API 
    $item2 = new Item();
    $item2->setName('Granola bars') ->setCurrency('EUR') ->setQuantity(1) ->setSku("321321")->setPrice(1.5); // Similar to `item_number` in Classic API  
    $itemList = new ItemList(); 
    $itemList->setItems(array($item1, $item2));

    $details = new Details(); 
    $details->setShipping(1.2) ->setTax(1.3) ->setSubtotal(8);

    $amount = new Amount();
    $amount->setCurrency("EUR") ->setTotal(10.5) ->setDetails($details);

    $transaction = new Transaction();
    $transaction->setAmount($amount)->setItemList($itemList)->setDescription("Payment description")->setInvoiceNumber(uniqid());

    $baseUrl = "http://localhost/abiunity/test.php"; 
    $redirectUrls = new RedirectUrls(); 
    $redirectUrls->setReturnUrl($baseUrl."?success=true")->setCancelUrl($baseUrl."?success=false");

    $payment = new Payment(); 
    $payment->setExperienceProfileId($profileid)->setIntent("sale") ->setPayer($payer) ->setRedirectUrls($redirectUrls) ->setTransactions(array($transaction));
    //$request = clone $payment;

    try {
        $payment->create($paypal);
        $approvalUrl = $payment->getApprovalLink();
        header("Location:".$approvalUrl);
        exit;
    } catch(PayPalExceptionPayPalConnectionException $pce) {
        echo '<pre>',print_r(json_decode($pce->getData())),"</pre>";
        exit;
    }
  

Я надеюсь, что это кому-то поможет и сэкономит немного времени 🙂

Комментарии:

1. Примечание: Если вы привыкли к примеру кода с GitHub, $paypal в этом ответе то же самое, что и $apiContext в примере кода.