I've integrated the PayPal WPP Pro Payment Method into my Drupal 7 site and it's working ok. My invoices are starting at #1 however, and I'd like to change my invoice numbering system...anyone know how to change the default?
#Machavity is correct except that with CreateRecurringPaymentsProfile the parameter is actually called INVOICE.
It sounds like Drupal must be using that with its own record IDs. If that assumption is correct then you'll need to configure Drupal to set those IDs how you're wanting. Whatever value you send in that parameter to PayPal is what will get used.
When you send your DoDirectPayment (or however you're sending it) there's a parameter called INVNUM you can pass. This value is defined by you and passed back to you as you sent it, but unlike CUSTOM it is shown to both you and the customer (if you're doing it in Express Checkout)
Related
I am setting up my IPN for PayPal its been tested using a send box account and the site worked.
Now that I have gone live I am testing using real money and the ipn set up is
www.mysite.co.uk/XXXXXXXXX
However when I make the payment I notice in the url reply on my browser and when I check the IPN history on Paypal it says www.mysite.co.uk.co.uk. The.co.uk` appears twice. I assume this is the reason I am not getting the orders finalised on my backend.
There are two places you can specify the IPN listener URL:
your PayPal profile, or
with your transaction
It's very likely to be caused by mis-configuration in either of the two places.
If you specified it with your transaction, depending on the product you use, you may be able to find it in a parameter similar to "notify_url" or "PAYMENTREQUEST_0_NOTIFYURL". You'd need to refer to the documents of the product you are using.
Is there a way to return the buyers phone number in the notify url variables? I do not see it being returned at all. I am getting the address and all other profile information but not the phone number? Is there something I need to set prior or a hidden field I need to setup in the form prior to checkout?
While the IPN reference does list contact_phone as an IPN field, my experience is that it is not frequently returned. Many people do not have it in their PayPal account profile (a similar problem exists for Ebay customers). There is nothing you need to do on your end, except make sure you code can process that field. It will be included if it is present.
Is it possible to tell PayPal through the NVP to not send a response to the IPN handler? For instance I use the IPN for payments I receive through a store I have running FoxyCart. However the store Im setting up now doesnt use a 3rd party cart, Im just using the API response to handle handle everything. Because of this I dont want PayPal to send a response to the IPN.
Ive scoped out the notify_url param, but that appears to only change where the IPN response is sent to.
I would prefer for this store that no IPN response gets sent at all, while allowing the other store to continue using the IPN it has always been.
Thanks in advance.
It depends on your account settings.
There are two types of IPN's, one is set at account level, and it's triggered whenever money comes into your account, regardless of the source. If you disable this, you will not get ny IPN's from either store.
The other type of IPN, is based on the API call being made.
You need to check your magento payment module config to see if it's generating the second type, and disable it there. If it's already disabled, it means that you are only getting the first type of IPN. If this is the case, you would actually need to modify your OTHER shopping cart.
(A simpler option might be to open a child paypal account, rather than mess with all the carts)
I'm trying to using paypal as payment for my site.
My site only sell a virtual currency, like "Diamond" in Online game.
So after reading i starting to use Express Checkout for Digital Goods, Is that right ? or i must other payment method ?
Then my question is when using Express Checkout for Digital Goods, how to pass custom variable ?
Let say i want to pay user_id, diamond_id, and some other variable from my database to the paypal api. It seem like paypal don't support custom variable to pass on the api call. I want after user complete the payment, then Paypal notify my server that the payment is complete by user_id and some other variable that i pass, so easy for me to know the detail.
after searching i find some solution,
First solution is to store "TOKEN"(Generated from "SetExpressCheckout" Method) and my custom variable which is belong to the TOKEN in the database, Then after payment complete paypal will notify my server the same TOKEN saved before. So i will query based on the TOKEN.
Second Solution is using get style in RETURNURL variable http://www.mysite.com/successpayment.php?user_id=13&diamond_id=88 So i will easy to grab the GET variable.
Which solution is right ? Is there any solution ? and how to secure the payment confirmation, i mean if someone know and hack my returnurl.
Thanks in advance
There are two parts to be able to successfully identify your order in the whole process:
To identify your order when the user is redirected back via the success or cancel URL, just pass the order id via the query string of the URL.
To identify your order when Paypal sends notifications about the transaction and associated events (refunds, reversals, disputes etc.) via IPN: Paypal does support a pass-through variable, which allows you to associate IPNs to the order record in your DB.
For express checkout you set PAYMENTREQUEST_0_INVNUM in the SetExpressCheckout call
In case you are creating a recurring profile, the parameter is named PROFILEREFERENCE in the CreateRecurringPaymentsProfile call
When you receive an IPN the invoice is passed as 'invoice' or 'rp_invoice_id' respectively
(My general advice, though: use Paypal only if you really have to)
What is the benefit of calling PayPal API SetExpressCheckout method to get a payment link and forwarding a customer there instead of using payment buttons?
The PayPal buttons can be modified by the visitor's browser client. It is just basic HTML. All of the variables to place the order can be manipulated by the customer. For instance, it takes 3 seconds to change the order total from $900 to $1.
Using the API, you tell PayPal to create an incomplete transaction for a certain amount, with certain information, that can then be referenced/completed later and there is no way (short of expert hacking) to change the order. Instead of trusting the visitor's browser, PayPal trusts your server.