Stripe Invoice strategy for multiple products - workflow

I'm wondering how I should (must ?) implement stripe invoice in case my customer buy multiple products.
Should I create an invoice for total amount ?
Should I create invoice items for each product and then create an invoice to charge all these products ?
Advantages of second solution would be I won't have to store which products have been bought.
I'm interesting knowing what are your workflows and what you think about it !

Related

Concurrent Invoice Numbers for a quickbook like invoicing app

I am building a cloud based ERP, where user can create invoices. The law in India requires gapless invoice numbers. I am using Postgres as database, so what are the best ways this can be implemented to allow multiple users to create invoices and ensure that invoice numbers generated do not have gap between them or are inconsistent (like two invoices having the same invoice number).

Magento 2.2.2 not showing ship option for some orders

In Magento 2.2.2 I have sent shipment mails for more than 10 orders, but for some orders there is no ship option showing on top right, how can I fix the issue?
It happens in case your product does not have any weight.
When I product does not have any weight assigned it becomes a virtual product and virtual products cannot be shipped.
In my case this happened when the shipping method in the orders table did not have the correct shipping method format. It should be
shippingcarriername_shippingmethod

Class and their responsibility analysis

Suppose i have a use case "Customer Deposits Money on Account". Where should the functionality "Deposit()" go ? Customer or Account?. What should be the design for this use case ?
When a deposit action is performed then this action records atleast the deposit_amount and deposit_date on which the action was done. So, placement of this action deposit depends upon the following four scenarios (or relation between customer and account):
[1] An account can belong to many customer. However, a customer can have a single account. That is, the relation is one-to-many from account to customer. In such a case, deposit (deposit_amount and deposit_date) action should be part of customer.
[2] A customer can hold many account. However, an account can belong to single customer. That is, the relation is one-to-many from customer to account. In such a case, deposit (deposit_amount and deposit_date) action should be part of account.
[3] Many account can belong to a single customer. Also, an account can be hold by many customer. That is, the relation is many-to-many from account to customer. In such a case, it will be better to have a separate class CDeposit{customer_id, account_id, deposit_amount, deposit_date}which will record this actiondeposit`.
[4] An account can belong to only one customer. Also a customer can hold only one account. That is, the relation is one-to-one from account to customer. In such a case, deposit (deposit_amount and deposit_date) action can be part of any of account or customer.

Is it possible to use Paypal Express Checkout without sending the whole order details?

I have experienced a problem similar to this question, while trying to make my discounts work with SetExpressCheckout.
I've resolved to use the method the accepted answer's author suggests: creating an additional product named "discount" with a negative value.
This is not too bad, but I'm getting fed up to have to accommodate Paypal with all the changes I make on my cart, and basically send the whole cart to Amazon when the customer has already had plenty of opportunities to check it while on my website and he now just wants to pay.
I would prefer to send the customer to a blank Paypal payment page, without the cart on the left.
Is this possible with Paypal Express Checkout? Any alternative?
If you go thru Paypal Express Checkout then it possible to give discount
(1) – Item name. The item name can identify this item to distinguish it from other line items in the order.
(2) – Item description. This field identifies which of several items the buyer is purchasing. For example, you may be offering an item in different sizes. Knowing the size helps the buyer decide whether the one they selected was appropriate. If the item is an eBay auction item, it is recommended that you provide the phrase "eBay item" in this field.
(3) – Item number. Each item can be further identified by an item number. If the item is an eBay auction item, it is recommended that you provide the eBay item number in this field.
(4) – Item unit price. This field specifies exactly how much one unit of the item costs. It can be a positive or negative value but not zero.
(5) – Item unit quantity. This field identifies the number of units the buyer is ordering. PayPal calculates the value in the Amount (6) column as the product of line-item unit price and line-item unit quantity. You can also show other detailed information about the order:
(7) – Item total and tax, which are the total of all items in the order and the tax, respectively.
(8) – Shipping and handling, which is the sum of the shipping and handling amounts.
Note: You must determine actual shipping and handling amounts.
(9) – Shipping discount. If the buyer is receiving a discount on shipping, the value appears as a credit in this field.
(10) – Insurance. This field shows the insurance fee when there is insurance on shipping.
(11) – Total. This is the total of the order, including shipping, handling, tax, and other price adjustment-related items.
visit the link ...to get more info https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECCustomizing/
NO, you can not send to the customer to a blank Paypal payment page, without the cart on the left. Because you can not say: I'm not selling anything and give me your money.
But alternative, you can do this way:
Change your coffee = $200 instead of $20 for total prize. And you don't need to list anything else after.

paypal checkout with mixed billing type products

I have, in my opinion, pretty complex order case to implement. Paypal was choosen as a solution, but I can't figure it out how to implement it properly using express checkout (or anything else, but I am not sure what is proper to use).
Final order that can consist of (most complex example here):
subscription A with 1 month free trial - 100$/year
subscription B without free trial - 200$/year
initial payment for entire order - 50$
Requirements:
start of the whole order can be postponed due to some factors (I can set PROFILESTARTDATE to the given date)
all subscriptions in the order can be either monthly or yearly, so case where subscription A is paid per year and subscription B per month IS NOT ALLOWED
whole order must be processed in one paypal redirect (paypal page with products listed where client can login to confirm the order)
My problem:
in that order subscription A starts 1 month later than B but I can only set one PROFILESTARTDATE
I could use TRIAL*** parameters (like TRIALBILLINGPERIOD) for subscription B but I can only set one such parameter per paypal request for express checkout, so same problem as above
What would be a best option for such case ?