Metaplex Auction House Buy Refund - metaplex

I run into a problem during Auction House Buy Process... since Phantom wallet expires the blockhash of transactions when users take more time to proceed with it. I wanted to find a way to return the funds at the time a bid was made but the execute process failed or wasn't completed before the blockhash expired. I would like to know if there's a way to solve this with or without using the CLI (due that on my side i will not have constant access to the auction house keypair).

Related

Cannot find resource on suspending subscription

I am not a developer. I am managing a team of developers and they are telling me this cant be done. However i am finding on here that it indeed can be done.
Our website that we are building is subscription based. I need a way to award free subscription time to an account.
For example:
User signs up on Jan 1 and pays the 7$ per month subscription.
Next billing date is Feb 1 but sometime in Jan we grant this user 1 free month.
We need to skip the Feb 1 bill date and resume billing on March 1 (with out back charging them for Feb)
Can anyone show me where on the paypal dev site i can find the info on this? I would greatly appreciate it! I have looked through the other posts but cant find a link.
Based on what I know, this can be done using PayPal API but it is not through recurring payment API. One way to do this is to use reference transaction API and charge the customer whenever your system indicates that it should. Links:
https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECReferenceTxns
https://developer.paypal.com/docs/classic/express-checkout/ht_ec-refTrans-SetEC-DoRefTrans-curl-etc/
This particular implementation requires your system to use scheduler of some sort such as cron jobs or daemon process to charge the customer when needed. So the flow looks something like this:
Customer goes to your website/system to subscribe
Your system runs Billing Agreement API to obtain billing agreement with the customer. Your system receives billing agreement ID and store it into database for future charges
Your system would determine when to charge the customer and when to skip.
When the time came to charge the customer, use the billing agreement ID and include it in Reference Transaction API.
I am outlining the above as general guide but I hope you got the gist of it.

Paypal recurring payment, how to update and charge outstanding balance in the middle of a cycle

I have the following scenario and I was wondering how to go about it:
A $10 monthly recurring payment is created, let's say starting today 11/19.
On 11/30 the user adds another module to the package that costs $5 more a month. All is well, I can update the recurring payment to $15 a month, so on 12/19 the user will get charged $15.
Since the user added this new module in the middle of a billing cycle, I would like to charge the profile the outstanding amount between 11/30 when the new package was added, and until 12/19 wen the new billing cycle kicks in (roughly that would amount to about $2.70 in this case).
I tried adding an outstanding balance when the profile is updated, however the API returns a failure message: the delinquent amount cannot be increased.
Other than cancelling the current profile and creating a new one is there any way to just update the existing one? Or if I cancel it, would the user have to reenter their credit card/ address again? I suppose I could always store this info in the paypal vault and retrieve it later.
Any help is appreciated,
Thanks!
Have you tried running BillOutstandingAmount first?

Do I need to execute my PayPal BillingAgreement one time only or every time the bill is due

I am trying to incorporate a member subscription on my website using the paypalrestsdk with python in a django application. I understand that I need to do the following:
Set up a BillingPlan for each type of subscription (ie. a monthly plan for $10 a month and a yearly plan for $100 a month)
Create a BillingAgreement, which (based on the user choice of billing plan) redirects the user to approve the agreement and which returns the agreement object which will give me the ability to access the plan information in order to update, suspend, reactivate the agreement.
Finally, in order to get started, I need to execute the BillingAgreement. This is the part that confuses me. Do I execute the agreement each month (for my users who have agreed to monthly subscription) or do I execute the agreement one time in order to tell PayPal to automatically process the monthly payment? If the latter case is the answer then how would I know if a payment failed for some reason? (Or do I need to check every time the user logs in by retrieving their BillingAgreement and searching for transactions within a particular date range for that agreement to make sure they are up to date and none of them failed?)
I have looked at the PayPal developer docs as well as GitHub samples. I have also successfully written code to create and execute one-time payments using the sandbox and all seems to be working just fine. I am just confused by how the recurring payments in the REST api work - specifically see #3 above.
You do not need to execute the billing agreement each month but only once to start the agreement i.e. tell PayPal to automatically process the monthly payment.
You can use the search for transactions feature to check that none of the payments of a user failed, but you might only need to do that at the start of every monthly payment cycle for a particular user. As opposed to everytime they log in. In the future, we will try to provide better notification mechanisms to inform the merchant that a payment on a billing agreement has failed/changed status.

Booking system to take a deposit and then final amount at a later date

This is more of a question regarding flow than code.
I'm currently working on a booking website for a holiday home. I've implemented a booking system which currently takes full payment at the time of booking. This uses PayPal REST API. It works fine no problems code-wise.
However my client would like the system to take a deposit when booking (20%) of the total. Then take the remaining amount later on (through the site). This seems strange to me and I've never used a website which does this so I'm not sure what the flow should be.
The only way I can think of achieving this is that the user has to come to the website at some point in the future to pay the remaining amount. I could send them email reminders but it seems a bit awkward to do that.
Has anyone done anything like this in the past?
In order to take the money later, you need to store the credit card data in your system, which is not quite legal unless you are authorized payment service provider (and I'm almost sure you're not).
We have the same case in our reservation system. Generally, you'd allow credit card payment only for deposit, and later final amount is paid via bank transfer or cash, for example, and has to be settled manually by an operator.
Your idea is not bad, however. You could inform the user about the final amount and due date in the booking confirmation email and later on send them reminders.
You can utilize reference transactions to handle this without storing/saving any billing information on your server.
Reference transactions can be used in Express Checkout as well as with Payments Pro.
Basically, the way it'll work is that you can process the original 20% and then you'll save that transaction ID in your database. Once you're ready to process the remaining amount you just make a call to DoReferenceTransaction and supply the original transaction ID along with the new amount to charge. PayPal will then charge this new amount using the billing information that they have saved on their server.

How to test on Live paypal site with dummy credit cards [duplicate]

I just wanted to ask among the gurus here if anyone has ever attempted to test a complete transaction from start to end on an ecommerce site using paypal or any other epayment gateway.
Please guys, I would appreciate any thoughts and comments. As it is a live site, I cant use the sandbox as that will negatively impact sales. However my firm is a startup and so can't afford the complete transaction and refund process that was suggested [here]:Accepting dummy credit cards on a live site with ActiveMerchant & PayPal.
Please help!
Previously I tested by buying low cost items from myself - that way you're only paying commission and you're getting most of the moneyback.
Admittedly you need 2 Paypal accounts, but that shouldn't be a problem, and you should only have to 'kick the tyres' in the live environment because all your testing will have been done in the dev environment.
We had a similar problem during startup and still use this process in the live site. We have specific "test" products that we purchase using a live credit card, then monitor the transactions: purchase, decline purchase, subscription (recurring billing), cancel, refund, etc.
Our test product is priced very low (5 cents). For subscriptions, the billing interval is 1 day, for a maximum of 3 intervals (with a free trial period of 1 day). This allows me to run a full test/validation, including recurring billing, in the live environment in less than a week.
We refund all charges following the test, which puts the money back on the credit card (or back in the PayPal account). Because of the refunding, our sales impact is zero (offsetting sale and refund). It does cost us a small non-refundable PayPal fee for each transaction, but that amounts to $1 or less.
These "test" products are not exposed to normal users. Also, we manually verify any "test" sales to make sure they are part of our internal testing.
"Sandbox" testing is the way to go during development, but a periodic test in the live environment is necessary to be verify that nothing is amiss.
Why not use a real credit card, then give yourself a refund? The commision fee is returned in that case.
All the time that I want to test our live sites we use a real credit card.
Thanks
I don't understand why you can't use the sandbox..?? How would using it negatively impact your sales? It's all fake.
Just setup your own sandbox.yourdomain.com version of your site and use that as your test server. Configure it to use PayPal's sandbox with sandbox API credentials, etc. This will allow you to go all the way through an order process and test everything from the UI stuff to payment processing, API requests/response processing, IPN, etc.
When everything is working you sync it up with your live server, which is hitting the live PayPal server, of course.
Again, I don't see how that would impact you in any way other than being a successful testing solution..??