cancel
Showing results for 
Search instead for 
Did you mean: 

How to create a "pending" order in authorize.net?

'm a web developer looking to move a lot of clients to use authorize.net for their CC processing. I have used authorize.net once in PHP doing SIM integration for a simple site.

Now the problem is, some of our clients have established processes that takes the CC info from our site, and it goes through a fulfillment process outside the control of our site. In at least one case, the client uses the CC info to bill for shipping after it's packaged, long after it leaves our website, because of international rates.

The main reason of using authorize.net is security. We want to be PCI compliant so the idea is that the CC never even goes through our web server. It is entered on authorize.net and never leaves there. So I need to figure out the API to conduct this process.

So my question is, without ever handling the CC info, how do I create a "pending" transaction that takes the user's cc info at one point, and then has the cost updated at another point? I am picturing I will have to tell the client to log back into our site (or authorize.net) to update the cost of the order.

All I have found is this FAQ, my question is the same as the top, but it isn't clear if I have to keep the CC info to do this process, which I simply cannot do.

6 REPLIES 6

We have many successful orders on our site using Authorize.net, but once in a while an order is put in pending status even though authorize.net accepted the order. I found an error on the exception log that MAY be the culprit:

 

 

DeloresScott
Member

If all consumers of the credit card information are using authorize.net APIs and the same merchant account, you can use CIM to create a profile with the credit card information at the start of the process, and then use that CIM profile as a payment source later on to put a hold amount on a card or charge the card.

https://developer.authorize.net/api/reference/features/customer_profiles.html#Using_the_Accept_Custo...

https://developer.authorize.net/api/reference/features/customer_profiles.html#Charging_Customer_Prof...

Instead of passing/storing credit card info, you would pass the payment profile id (credit card) and the customer profile id (customer) to everyone who has access to the merchant account.

The customer doesn't have to be involved once they've entered their credit card information (created a payment profile).

While we don't use hold amounts, I'm pretty sure you can also pass the charge transaction itself (or pull it from the API, but that'd be more tricky) to finalize the transaction with the shipping costs

https://developer.authorize.net/api/reference/index.html#payment-transactions-authorize-a-credit-car...

https://developer.authorize.net/api/reference/index.html#payment-transactions-capture-a-previously-a...

I suspect you can change the amount between the two but since I don't use it, I can't be sure.   Worse case, you can void/refund the initial authorization, and then create a new charge with the updated amount.

-Mike

mkienenb
Contributor

@DevinPomsilina, @mkienenb has provided you with the solution. Another route is to calculate shipping on your website. The carrier should have an API where you can get rates. All major carriers do. You seem to have an awkward situation where the customer doesn’t know what they are paying until after the purchase. It would seem to me that this would create issues.
Renaissance
All Star

In re “update the cost of the order”, the solution provided above (and all other solutions, I think) would involve creating a separate transaction, not updating the amount of the first transaction. I don’t think there is a way to change the amount of a transaction after it has been initiated. What you could possibly do is charge for shipping up front. You could have a figure for the maximum that would be charged, charge that maximum, and then issue a partial refund for the difference, after the transaction has been canceled.

If this were me though, I’d be looking at calculating the shipping at the time of the transaction. I have done this before. I had a client that shipped with UPS and USPS and I built some tables that were used to calculate the rates. Then I programmed a bin packing algorithm that packed the boxes to be priced. It would be much easier with the API. If I do another site, I’m using UPS/USPS API. I’m currently disabled and can’t work much at all.

This works really well for us, thank you! My Fortiva Account


@Renaissance wrote:
In re “update the cost of the order”, the solution provided above (and all other solutions, I think) would involve creating a separate transaction, not updating the amount of the first transaction. I don’t think there is a way to change the amount of a transaction after it has been initiated. What you could possibly do is charge for shipping up front. You could have a figure for the maximum that would be charged, charge that maximum, and then issue a partial refund for the difference, after the transaction has been canceled.

If this were me though, I’d be looking at calculating the shipping at the time of the transaction. I have done this before. I had a client that shipped with UPS and USPS and I built some tables that were used to calculate the rates. Then I programmed a bin packing algorithm that packed the boxes to be priced. It would be much easier with the API. If I do another site, I’m using UPS/USPS API. I’m currently disabled and can’t work much at all. RealcompOnline Sign In

You could have a figure for the maximum that would be charged, charge that maximum, and then issue a partial refund for the difference,

 

Thanks in advance !!