paypal checkout with mixed billing type products - paypal

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 ?

Related

PayPal express checkout add tax info

So i was integrating my app with paypal for express checkout and could not figure out how to add in my gst/hst number for Canada to the receipt.
it is mandatory if i am to charge taxes in Canadian shipment, that the gst/hst number be visible in the receipt, but cant seem to figure this out.
any help would be appreciated!
below is an example of my receipt but i want to add some additional content for the gst/hst number. where would i be able to and how.
references:
https://developer.paypal.com/docs/api/orders/v2
https://turbotax.intuit.ca/tips/self-employed-business-win-creating-cra-compliant-invoice-8827#:~:text=It%20is%20very%20important%20that,you%20cannot%20charge%20GST%2FHST.
ANSWER:
so this is just a trick around it since i couldnt find a proper solution, but i just add in another item with the GST/HST Number. i leave the cost of it to 0 so it does not affect the total price but the buyer is still able to get the gst/hst number on their receipt.
The amount key can include a breakdown key, which is an object of type amount_breakdown documented here: https://developer.paypal.com/docs/api/orders/v2/#definition-amount_breakdown
tax_total is the key name of one of the objects you can include in the breakdown.
The breakdown's subtotals must add up to the actual amount value.

PayPal - DoExpressCheckoutPayment - Validation issue

For Every PaypPal interaction we Do:
1.SetExpressCheckoutReq
2.GetExpressCheckoutDetailsReq
3.DoExpressCheckOutPaymentReq
I do create a billing agreement first and only on scheduled/subsequent orders we use this billing agreement for reference transaction.
Our Issue is:
With a new PayPal account (testpaypal#abc.com) DoExpressCheckoutPaymentReq failed for CITY = SuttonsBay, with the address validation error “10736” (Shipping Address Invalid City State Postal Code) for a user (USER A). And this was corrected in the subsequent request as Suttons bay.
But the same PayPal account(testpaypal#abc.com ) used for the second time with a different user (USER B) on the site, DoExpressCheckoutPaymentReq call succeeds for the wrong CITY = SuttonsBay and allows us to complete the order.
It is to be noted that on all scheduled order of the user, we use the DoReferenceTransactionReq, which has strict validation and this fails every time, esp. for the second scenario described above.
I would like to know why there are inconsistencies in Shipping address validation for DoExpressCheckoutPayment. It is because of this difference that our scheduled orders fails (as described in scenario 2 that allows incorrect address)
Do we any way to have strict Validation in DoExpressChecOutPayment - which solves our purpose?

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.

balanceDate of an account vs postedDate of transactions in AggCat

I noticed that for an account A, the lastTransactionDate is the date such that all transactions happen before that are available through getAccountTransactions. It's NOT the date such that ONLY all transactions happen before that are taken into account when calculating the balance of account A because some transactions happen after lastTransactionDate have to be taken into account to yield the correct balance. Can someone confirm my observation?
Another thing is that some transactions that happen on the same date as balanceDate with the exact time being AFTER the time of balanceDate are taken into account as well to yield the account's balance. For example, balanceAmount = 7682.16, balanceDate = 2013-08-06 12:53:21 - 07:00 but the transaction with postedDate = 2013-08-06 16:49:41 - 07:00 is included. Does this mean we should only care about the date portion of balanceDate? and that balanceDate of 2013-08-06 12:53:21 - 07:00 includes all transactions posted on 2013-08-06?
The LastTransactionsDate is the date of the last captured transaction in our system. The balance of the account is what we captured from the FI's website so we perform no calculation of the transactions to come up with that number. If there are pending transactions and the FI provides their balance in that fashion we will provide that value.
The BalanceDate field refers to when our system captured the balance of the account from the website. So that balance would include all the transactions posted on the website at that time and if the account is including the pending transactions you would need to include those as well to match the balance appropriately.

MIGS Virtual Payment Client - Transaction declined

I am testing MIGS Virtual Payment Client on a test account. When I select payment, I am directed to the Payment Server page where I can choose between Visa and MasterCard. I have been given the following test data in the MIGS manual:
I use 123 as CSC value. However, the transaction always fail with
vpc_VerStatus=E
vpc_TxnResponseCode=2
vpc_Message=Declined //for Visa
vpc_Message=The+card+holder+was+not+authorised.+This+is+used+in+3-D+Secure+Authentication. //for MasterCard
By the way, if I select MasterCard, I am prompted "Please enter your OSID or the last 5 digits of your NAB ID" and a Credit Limit. I use OSID with value 123456 and Credit Limit 10000 respectively. (These are values I entered by myself as I was not given information what to input there).
I had a look at this Commonwealth bank and MIGS Virtual Payment Client error code but it does not solve my problem.
Any help why the transaction is being declined?
Okay, there's a handful of things here you need to understand/check out.
1. Ensure the transaction value ends in $xyz.00 or it will always decline
MIGS behaves differently in TEST and PROD. In TEST, MIGS uses the "cents" portion of your test transactions to determine what response code to return, NOT whether you have correctly provided the necessary data for the transaction. These cents values are as follows:
$ XXX.00 returns "0 Transaction approved"
$ XXX.10 returns "1 Transaction could not be processed"
$ XXX.05 returns "2 Transaction declined - contact issuing bank"
$ XXX.68 returns "3 No reply from Processing Host"
$ XXX.33 returns "4 Card has expired"
$ XXX.51 returns "5 Insufficient credit"
2. Disable 3-D Secure
It looks like you're also getting caught by 3DSECURE, also known as "Verified by Visa" and "Mastercard SecureCode". Call your acquirer/bank and ask them to disable this in TEST and Prod. Why? Invariably when this goes live, your customers will see a screen they are not expecting that asks for more information and then either pick up the phone and ask you to "fix it" or (even worse) leave your store thinking it's fraud.
Because 3-D secure has such low takeup, even most bank support staff don't know about it. Just today I had one of my clients call me about this "issue". One of their customers had called their card issuer to enquire as to what this "Verified by Visa" screen was. The bank (a major Australian bank) helpfully told them it was probably fraud and to not buy anything from that site.
3-D secure has such low penetration in Australia I'd suggest the only outcome of having it enabled is to reduce sales. Don't use it.