I was just curious how many other publishers here also sell their assets through FastSpring. For my own, I’ve built an MVC site that takes callback notifications from FastSpring and populates data in my own database. This allows me to auto-generate accounts so people can log in to my site and download the newest versions of my assets. I have quite a few things to add to it (such as subscription notifications when new versions are added). I was wondering if this is something others would be interested in. I was considering sharing the source for the site once it’s complete to allow publishers to setup their own interface with FastSpring. Here are the details:
Technology
ASP .NET MVC 4 (.NET 4.0)
MSSQL Server (or SQL Express) Backend
Entity Framework 5
Leverages WebAPI for the FastSpring callback endpoint
Currently Implemented
Accepts Callback Notifications from FastSpring
Auto-Generates user accounts and emails users
Users can edit profile, see their licenses, and download files
Files are stored securely and streamed only to authorized users
Immediate Roadmap
Administration for Uploading New Versions
— (this is currently a manual process. Files will always have to be manually updated on FastSpring)
Notification Subscriptions (Users will be able to receive notifications when new versions are uploaded)
CMS Style Support for managing product pages, documentation and version change history
Long Term Roadmap
FastSpring API integration (taking orders directly from your site - will require SSL)
Support for additional notification types from FastSpring (refunds, etc).
Convert entity data layer to a repository pattern
Tentative Future Roadmap
Provider support for additional Data Source
– Possibly leveraging MySQL, SqlLite, Mongo, XML or some combination thereof
I’ll be making the majority of these updates because I’m using it for myself, but was curious if anyone else would be interested in it as well.
I just found out about FastSpring through your post, and I am impressed. This would be interesting for Visual Actions.
I was referred by another user as well… The vast majority of my sales as still through the Unity Asset Store and I’ve been fairly happy with it. FastSpring takes a lot of work to get setup and running but it’s very powerful and I particularly like the HTTP Notifications it can post back to my server. Each system has its pros and cons and I definitely would continue using both.
The Asset Store of course at least somewhat tests assets to make sure they at least load in Unity. It also has direct integration into the IDE… but I’ve found the wait periods to be excruciating. It’s understandable when publishing a new asset, but just updating an asset to a new version seems painful. I’ve been waiting a week now and mine was still pending review last I checked. FastSpring lets you update instantly… takes a smaller cut… and lets you generate all kinds of discount coupons. Their interface is buggy and has some caching issues, but the service is very good.
I like both services and intend to stick with both. I thought that building a web backend and offering it up might be useful to other publishers. I’m not trying to sell it… I would provide it for free with full source… just wasn’t sure what interest others would have in it so I was curious to ask.
This sums it up:
With a release cycle of barely 15 days, with Visual Actions I simply cannot wait for updates to appear on the Unity Asset Store. I have resorted to requesting customers to “register” via their email so I can provide “beta” access before stuff appears on the Asset Store. Still, less than a third of my customers have registered via e-mail.
An alternative store also means I can provide my software at a lower price. At 30%, there is little room for price reductions unless you over price the software to begin with and perpetually maintain an “on-sale” state. Still, I intend to keep both stores as well, if nothing the Unity Store has more visibility.
In any event, you have a beta-tester in me. I would certainly be interested in playing around with this.
p.s: I was under the impression (from their site) that setting up FastSpring was really easy, but you make it sound otherwise. How so?
It’s actually very easy to setup but there’s a process. You create your account… then wait for them to activate your account. In my case this was less than 48 hours. Then you have to add your product, setup the details, create fulfillment steps (at least two are required, but email and download are perfect). Once it’s all setup you have to create a support ticket and ask them to Activate your store.
In my case, I got a reply in less than 12 hours… but they said my product name wasn’t descriptive enough and they wanted to reduce chargebacks. They suggested I change it from “JSON .NET For Unity Version 1.2.0” to “Dustin Horne JSON .NET For Unity Version 1.2.0”. I simply replied and asked them why the heck I’d want to use my name as part of the product name and that the product name was exactly what it said it was. Within 5 minutes I got another reply saying my store was activated.
There are several “modes” for things, “Design”, “Disabled”, “Deleted”, “Test” and “Active”. You need to make sure everything you want to use is in Active mode. You can still test it in Active mode and their testing tools are nice. They’ll even process notifications in test mode. Setting up some things like coupons are kind of a pain because you have to navigate several configuration screens to figure out how to setup things like maximum number of uses.
All of that said, once you figure it out, it’s a piece of cake. What was most powerful for me was the notification system. I just added a custom notification, chose Web / HTTP Notification. Set it as an “order notification”, entered my endpoint URL and selected the Text/XML type. You can also do Name/Value Pair (like a form post), plain text, or SOAP+XML if you’re using WCF. In my case I’m using MVC WebAPI so I chose XML. They don’t have json support currently and they said there is no immediate plan to implement it but that’s ok.
Documentation for the notification system is a little all over the place. But once I found what I needed, they have a series of variables that you can use. They give you a free form textbox and you enter your XSL so you can name the nodes whatever you want. This worked perfectly in my case because I could replicate exactly the object on my server side that I wanted to deserialize. In my case it looks something like this:
<FastSpringOrder xmlns:c="http://xml.fastspring.com/template/core">
<OrderDate>#{order.statusChange.format("yyyy-MM-dd'T'HH:mm:ssZ")}</OrderDate>
<Reference>#{order.id}</Reference>
<IsTestOrder>#{order.isTest}</IsTestOrder>
<Referrer>#{order.referrer}</Referrer>
<Currency>#{order.currency}</Currency>
<Tax>#{order.tax.textValue}</Tax>
<Total>#{order.total.textValue}</Total>
<SubTotal>#{order.subTotal.textValue}</SubTotal>
<Purchaser>
<FirstName>#{order.customer.firstName}</FirstName>
<LastName>#{order.customer.lastName}</LastName>
<Company>#{order.customer.companyName}</Company>
<Email>#{order.customer.email}</Email>
<Country>#{order.address.country}</Country>
<Region>#{order.address.region}</Region>
</Purchaser>
<LineItems>
<c:repeat var="item" value="#{order.allItems}">
<FastSpringOrderItem>
<ProductCode>#{item.productName}</ProductCode>
<Quantity>#{item.quantity}</Quantity>
<ItemTotal>#{item.priceTotal.textValue}</ItemTotal>
</FastSpringOrderItem>
</c:repeat>
</LineItems>
</FastSpringOrder>