Rechnung verschicken mit dem PHP SDK

Kann ich mit Paypal Rechnungen verschicken?

Mit dem SDK von Paypal kannst du sehr viele Sachen machen, auch eine Rechnung verschicken, die der Empfänger dann zu zahlen hat. Diese kannst du auch programmatisch automatisiert mit der PayPal-PHP-SDK versenden. Hier der Code:


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="generator" content="CoffeeCup HTML Editor (www.coffeecup.com)">
    <meta name="dcterms.created" content="Sa, 01 Jun 2019 08:55:15 GMT">
    <meta name="description" content="">
    <meta name="keywords" content="">
    <title></title>
  </head>
  <body>
<?php
use PayPal\Api\Address;
use PayPal\Api\BillingInfo;
use PayPal\Api\Cost;
use PayPal\Api\Currency;
use PayPal\Api\Invoice;
use PayPal\Api\InvoiceAddress;
use PayPal\Api\InvoiceItem;
use PayPal\Api\MerchantInfo;
use PayPal\Api\PaymentTerm;
use PayPal\Api\Phone;
use PayPal\Api\ShippingInfo;


session_start();
error_reporting(E_ALL);
ini_set("display_errors", "on");
ini_set("display_startip_errors", "on");



require __DIR__  . '/PayPal-PHP-SDK/autoload.php';


$apiContext = new \PayPal\Rest\ApiContext(
        new \PayPal\Auth\OAuthTokenCredential(
            'hier_musst_du_deine_ClientID_einfügen',     // ClientID
            'hier_kommt_dein_Secret_rein'                // ClientSecret
        )
);




$invoice = new Invoice();

$invoice
    ->setMerchantInfo(new MerchantInfo())
    ->setBillingInfo(array(new BillingInfo()))
    ->setNote("Hier kannst du Anmerkungen einfügen, z.B. auf deinen Kleinunternehmerstatus hinweisen, wenn das der Fall ist.")
    ->setPaymentTerm(new PaymentTerm())
    ->setShippingInfo(new ShippingInfo());

$invoice->getMerchantInfo()
    ->setEmail("Karsten@primitivecode.com")
    ->setFirstName("Karsten")
    ->setLastName("Fink")
    ->setbusinessName("Primitivecode.com")
    ->setPhone(new Phone())
    ->setAddress(new Address());

$invoice->getMerchantInfo()->getPhone()
    ->setCountryCode("0049")
    ->setNationalNumber("22892996742");

$invoice->getMerchantInfo()->getAddress()
    ->setLine1("Brucknerstr. 9")
    ->setCity("Bonn")
    ->setState("NRW")
    ->setPostalCode("53115")
    ->setCountryCode("DE");

$billing = $invoice->getBillingInfo();
$billing[0]
    ->setEmail("John.Donn@outlook.com");

$billing[0]->setBusinessName("not applicable")
    ->setFirstName("Johannes")
    ->setLastName("Müller")
    ->setAdditionalInfo("This is the billing Info")
    ->setAddress(new InvoiceAddress());

$billing[0]->getAddress()
    ->setLine1("Sebastianstr. 19")
    ->setCity("Bonn")
    ->setState("NRW")
    ->setPostalCode("53115")
    ->setCountryCode("DE");

$items = array();
$items[0] = new InvoiceItem();
$items[0]
    ->setName("Gemahlener Kaffee")
    ->setQuantity(1)
    ->setUnitPrice(new Currency());

$items[0]->getUnitPrice()
    ->setCurrency("EUR")
    ->setValue(10,00);

$tax = new \PayPal\Api\Tax();
$tax->setPercent(19)->setName("Umsatzsteuer auf den Kaffee");
$items[0]->setTax($tax);


$items[1] = new InvoiceItem();


$item1discount = new Cost();
$item1discount->setPercent("3");
$items[1]
    ->setName("Welt der Märchen, Märchen von Hans Christian Andersen und der Gebrüder Grimm")
    ->setQuantity(1)
    ->setDiscount($item1discount)
    ->setUnitPrice(new Currency());

$items[1]->getUnitPrice()
    ->setCurrency("EUR")
    ->setValue(20,00);


$tax2 = new \PayPal\Api\Tax();
$tax2->setPercent(7)->setName("Ermäßigte Umsatzsteuer auf das Buch");
$items[1]->setTax($tax2);

$invoice->setItems($items);

$cost = new Cost();
$cost->setPercent("3");
$invoice->setDiscount($cost);

$invoice->getPaymentTerm()					  
    ->setTermType("NET_45");

$invoice->getShippingInfo()
    ->setFirstName("Johannes")
    ->setLastName("Müller")
    ->setBusinessName("Not applicable")
    ->setPhone(new Phone())
    ->setAddress(new InvoiceAddress());

$invoice->getShippingInfo()->getPhone()
    ->setCountryCode("0049")
    ->setNationalNumber("228674288");

$invoice->getShippingInfo()->getAddress()
    ->setLine1("Sebastianstr. 19")
    ->setCity("Bonn")
    ->setState("NRW")
    ->setPostalCode("53115")
    ->setCountryCode("DE");


$invoice->setLogoUrl('https://www.primitivecode.com/images/primitivecode.png');
//$invoice->setNumber('09'); // Du darfst nicht zweimal die gleiche 
							 //Rechnungsnummer nehmen.
							 // Wenn du die Rechnungsnummer nicht setzt, 
							 // wird die nächste Nummer genommen.
	echo ("Hallo:             ");
$request = clone $invoice;

try {

 $Rechnung =   $invoice->create($apiContext);
	echo ("<pre>");

	print_r($Rechnung);
	echo ("</pre>");
	
	echo ("Erstellt");
} catch (Exception $ex) {



    exit(1);
}











try {

//Send a legitimate invoice to the payer with a valid ApiContext (See bootstrap.php for more on ApiContext)

    $sendStatus = $invoice->send($apiContext);
	echo ("Status: ");
	echo ($sendStatus);
	echo (" und geschickt.");
} catch (Exception $ex) {


 
    exit(1);
}



try {
    $invoice = Invoice::get($invoice->getId(), $apiContext);
} catch (Exception $ex) {


exit(1);
}



return $invoice;

?>


  </body>
</html>


Und so sieht es dann aus:


Rechnung erstellt mit Paypal

Und so sieht die Ausgabe dann auf der Seite aus. Der Versandt wird bestätigt, und das Rechnungsobjekt wird ausgedruckt.



Hallo:
PayPal\Api\Invoice Object
(
    [_propMap:PayPal\Common\PayPalModel:private] => Array
        (
            [merchant_info] => PayPal\Api\MerchantInfo Object
                (
                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                        (
                            [email] => Karsten@primitivecode.com
                            [first_name] => Karsten
                            [last_name] => Fink
                            [business_name] => Primitivecode.com
                            [phone] => PayPal\Api\Phone Object
                                (
                                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                                        (
                                            [country_code] => 0049
                                            [national_number] => 22892996742
                                        )

                                )

                            [address] => PayPal\Api\InvoiceAddress Object
                                (
                                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                                        (
                                            [line1] => Brucknerstr. 9
                                            [city] => Bonn
                                            [state] => NRW
                                            [postal_code] => 53115
                                            [country_code] => DE
                                        )

                                )

                        )

                )

            [billing_info] => Array
                (
                    [0] => PayPal\Api\BillingInfo Object
                        (
                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                (
                                    [email] => John.Donn@outlook.com
                                    [first_name] => Johannes
                                    [last_name] => Müller
                                    [business_name] => not applicable
                                    [address] => PayPal\Api\InvoiceAddress Object
                                        (
                                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                (
                                                    [line1] => Sebastianstr. 19
                                                    [city] => Bonn
                                                    [state] => NRW
                                                    [postal_code] => 53115
                                                    [country_code] => DE
                                                )

                                        )

                                    [additional_info] => This is the billing Info
                                )

                        )

                )

            [note] => Hier kannst du Anmerkungen einfügen, z.B. auf deinen Kleinunternehmerstatus hinweisen, wenn das der Fall ist.
            [payment_term] => PayPal\Api\PaymentTerm Object
                (
                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                        (
                            [term_type] => NET_45
                            [due_date] => 2019-08-28 PDT
                        )

                )

            [shipping_info] => PayPal\Api\ShippingInfo Object
                (
                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                        (
                            [first_name] => Johannes
                            [last_name] => Müller
                            [business_name] => Not applicable
                            [phone] => PayPal\Api\Phone Object
                                (
                                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                                        (
                                            [country_code] => 0049
                                            [national_number] => 228674288
                                        )

                                )

                            [address] => PayPal\Api\InvoiceAddress Object
                                (
                                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                                        (
                                            [line1] => Sebastianstr. 19
                                            [city] => Bonn
                                            [state] => NRW
                                            [postal_code] => 53115
                                            [country_code] => DE
                                        )

                                )

                        )

                )

            [items] => Array
                (
                    [0] => PayPal\Api\InvoiceItem Object
                        (
                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                (
                                    [name] => Gemahlener Kaffee
                                    [quantity] => 1
                                    [unit_price] => PayPal\Api\Currency Object
                                        (
                                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                (
                                                    [currency] => EUR
                                                    [value] => 10.00
                                                )

                                        )

                                    [tax] => PayPal\Api\Tax Object
                                        (
                                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                (
                                                    [name] => Umsatzsteuer auf den Kaffee
                                                    [percent] => 19
                                                    [amount] => PayPal\Api\Currency Object
                                                        (
                                                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                                (
                                                                    [currency] => EUR
                                                                    [value] => 1.90
                                                                )

                                                        )

                                                )

                                        )

                                )

                        )

                    [1] => PayPal\Api\InvoiceItem Object
                        (
                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                (
                                    [name] => Welt der Märchen, Märchen von Hans Christian Andersen und der Gebrüder Grimm
                                    [quantity] => 1
                                    [unit_price] => PayPal\Api\Currency Object
                                        (
                                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                (
                                                    [currency] => EUR
                                                    [value] => 20.00
                                                )

                                        )

                                    [tax] => PayPal\Api\Tax Object
                                        (
                                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                (
                                                    [name] => Ermäßigte Umsatzsteuer auf das Buch
                                                    [percent] => 7
                                                    [amount] => PayPal\Api\Currency Object
                                                        (
                                                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                                (
                                                                    [currency] => EUR
                                                                    [value] => 1.40
                                                                )

                                                        )

                                                )

                                        )

                                    [discount] => PayPal\Api\Cost Object
                                        (
                                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                (
                                                    [percent] => 3.00
                                                    [amount] => PayPal\Api\Currency Object
                                                        (
                                                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                                (
                                                                    [currency] => EUR
                                                                    [value] => 0.60
                                                                )

                                                        )

                                                )

                                        )

                                )

                        )

                )

            [discount] => PayPal\Api\Cost Object
                (
                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                        (
                            [percent] => 3.00
                            [amount] => PayPal\Api\Currency Object
                                (
                                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                                        (
                                            [currency] => EUR
                                            [value] => 0.88
                                        )

                                )

                        )

                )

            [logo_url] => https://www.primitivecode.com/images/primitivecode.png
            [id] => INV2-RP4C-L4YY-YJRN-5P8D
            [number] => 17
            [template_id] => TEMP-92B44874A94783823
            [status] => DRAFT
            [invoice_date] => 2019-07-14 PDT
            [tax_calculated_after_discount] => 
            [tax_inclusive] => 
            [total_amount] => PayPal\Api\Currency Object
                (
                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                        (
                            [currency] => EUR
                            [value] => 31.82
                        )

                )

            [metadata] => PayPal\Api\Metadata Object
                (
                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                        (
                            [created_date] => 2019-07-14 03:36:26 PDT
                        )

                )

            [allow_tip] => 
            [links] => Array
                (
                    [0] => PayPal\Api\Links Object
                        (
                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                (
                                    [rel] => self
                                    [href] => https://api.sandbox.paypal.com/v1/invoicing/invoices/INV2-RP4C-L4YY-YJRN-5P8D
                                    [method] => GET
                                )

                        )

                    [1] => PayPal\Api\Links Object
                        (
                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                (
                                    [rel] => send
                                    [href] => https://api.sandbox.paypal.com/v1/invoicing/invoices/INV2-RP4C-L4YY-YJRN-5P8D/send
                                    [method] => POST
                                )

                        )

                    [2] => PayPal\Api\Links Object
                        (
                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                (
                                    [rel] => replace
                                    [href] => https://api.sandbox.paypal.com/v1/invoicing/invoices/INV2-RP4C-L4YY-YJRN-5P8D/update
                                    [method] => PUT
                                )

                        )

                    [3] => PayPal\Api\Links Object
                        (
                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                (
                                    [rel] => delete
                                    [href] => https://api.sandbox.paypal.com/v1/invoicing/invoices/INV2-RP4C-L4YY-YJRN-5P8D
                                    [method] => DELETE
                                )

                        )

                    [4] => PayPal\Api\Links Object
                        (
                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                (
                                    [rel] => record-payment
                                    [href] => https://api.sandbox.paypal.com/v1/invoicing/invoices/INV2-RP4C-L4YY-YJRN-5P8D/record-payment
                                    [method] => POST
                                )

                        )

                )

        )

)
ErstelltStatus: 1 und geschickt.


Die Rechnung kann auf viele Arten bezahlt werden, der blaue Button führt zu Paypal:


unbezahlte Rechnung

Jetzt kann man die Rechnung bezahlen.


Rechnung mit Paypal bezahlen

Schließlich ist die Rechnung bezahlt.


bezahlte Paypal Rechnung
Description: Wir erklären heute, wie man eine Rechnung mit Paypal verschickt. Wir arbeiten mit der PayPal-PHP-SDK.

Keywords: Paypal, Rechnung, ausstellen, verschicken
Geschrieben:
Sprache: de (Deutsch)

Primitivecode ist Grammatik pur. Aber Programmieren kommt auch nicht zu kurz, denn die Seite mache ich allein. Informationen zum Datenschutz findest du hier.