[ic] custom payment module

Dan Bergan dan at berganconsulting.com
Mon Sep 12 16:08:37 UTC 2011


On Mon, Sep 12, 2011 at 7:26 AM, Lyn St George <lyn at zolotek.net> wrote:
> On Sunday 11 September 2011 20:48:40 Dan Bergan wrote:
>> I am creating a custom payment module (using Lyn's PayPal Express and
>> WorldPay modules as starting points.)  I'm having a strange problem
>> and I can't figure out what I'm doing wrong.
>>
>> A user is sent to the payment provider's web site to enter their
>> billing address and payment info. After the credit card is processed,
>> the payment site posts data back to interchange (which I save to the
>> database), then redirects the user back to my ic site where I submit
>> the order, the payment module grabs the previously saved information
>> (billing address, payment result) and saves that information to the
>> user's Values space.
>>
>> All this seems to work just fine -- log_transaction saves the order
>> just fine, and the customer information in the Values space (that I
>> retrieved in the payment module) are available, but in the receipt
>> page, email receipt and my order report, those values are not present.
>>
>> Is that expected behavior, or I am making a mistake somewhere?
>>
>> Thanks -
>> Dan Bergan
>
> The most likely scenario is that you're dropping the session at the point
> where you change to send the emails and display the receipt. Check this first
> by displaying the session id on the page at various points.
>

Values that were set before the payment module and Scratch values that
were set inside the payment module are available at every step, so I
think the session is being maintained.

I did some digging into the code, and I found that in route_order in
Order.pm, and I see near the beginning:
my $value_save = { %{$::Values} };

And then near the end of the function:
$Vend::Interpolate::Values = $::Values = $value_save;

So, am I right in thinking that saving data to the values space in an
order route won't work for me?  I assume that I will have to put my
payment processing outside of the order route:
[charge route="mypaymentroute"]
and then submit the order after that.

Dan



More information about the interchange-users mailing list