<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>p u b l i c v o i d . d k</title>
    <link>http://www.publicvoid.dk/</link>
    <description>by Søren Spelling Lund</description>
    <language>en-us</language>
    <copyright>Søren Spelling Lund</copyright>
    <lastBuildDate>Wed, 07 Jul 2010 00:00:00 PDT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>public@publicvoid.dk</managingEditor>
    <webMaster>public@publicvoid.dk</webMaster>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/publicvoid" /><feedburner:info uri="publicvoid" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>56.18514381357207</geo:lat><geo:long>9.588189125061035</geo:long><image><link>http://www.publicvoid.dk</link><url>http://www.publicvoid.dk/MyFiles/publicvoid-logo.gif</url><title>p u b l i c v o i d . d k</title></image><item><title>Links for 2010-07-06 [del.icio.us]</title><link>http://feedproxy.google.com/~r/publicvoid/~3/3NjKG1uSDdU/mufoxe</link><pubDate>Wed, 07 Jul 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mufoxe#2010-07-06</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://grandperspectiv.sourceforge.net/"&gt;Grand Perspective&lt;/a&gt;&lt;br/&gt;
Disk space analysis&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/3NjKG1uSDdU" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mufoxe#2010-07-06</feedburner:origLink></item><item>
      <trackback:ping>http://www.publicvoid.dk/Trackback.aspx?guid=9c9bfdb2-a396-427e-8e55-160c9fb220d3</trackback:ping>
      <pingback:server>http://www.publicvoid.dk/pingback.aspx</pingback:server>
      <pingback:target>http://www.publicvoid.dk/PermaLink,guid,9c9bfdb2-a396-427e-8e55-160c9fb220d3.aspx</pingback:target>
      <dc:creator>S�ren Spelling Lund</dc:creator>
      <wfw:comment>http://www.publicvoid.dk/CommentView,guid,9c9bfdb2-a396-427e-8e55-160c9fb220d3.aspx</wfw:comment>
      <wfw:commentRss>http://www.publicvoid.dk/SyndicationService.asmx/GetEntryCommentsRss?guid=9c9bfdb2-a396-427e-8e55-160c9fb220d3</wfw:commentRss>
      
      <title>Querying Products by Custom Properties in uCommerce</title>
      <guid isPermaLink="false">http://www.publicvoid.dk/PermaLink,guid,9c9bfdb2-a396-427e-8e55-160c9fb220d3.aspx</guid>
      <link>http://feedproxy.google.com/~r/publicvoid/~3/9Po_0YIqZT4/QueryingProductsByCustomPropertiesInUCommerce.aspx</link>
      <pubDate>Fri, 28 May 2010 13:07:28 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
One of the questions I’ve come across a couple of times with &lt;a href="http://www.ucommerce.dk"&gt;uCommerce&lt;/a&gt; is&#xD;
using the LINQ API to query products by custom properties added to a product definition.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Here’s how:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;var q = &lt;span style="color: #0000ff"&gt;from&lt;/span&gt; product &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; Product.&lt;span style="color: #0000ff"&gt;All&lt;/span&gt;()&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;where&lt;/span&gt; product.ProductProperties.&lt;span style="color: #0000ff"&gt;Where&lt;/span&gt;(property&#xD;
=&amp;gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    (property.ProductDefinitionField.Name == "MyProperty" &amp;amp;&amp;amp; property.&lt;span style="color: #0000ff"&gt;Value&lt;/span&gt; ==&#xD;
"MyPropertyValue") &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    || (property.ProductDefinitionField.Name == "MyOtherProperty" &amp;amp;&amp;amp; property.&lt;span style="color: #0000ff"&gt;Value&lt;/span&gt; ==&#xD;
"MyotherPropertyValue")).&lt;span style="color: #0000ff"&gt;Count&lt;/span&gt;() == 2&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &amp;amp;&amp;amp; product.ParentProductId == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;select&lt;/span&gt; product;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.publicvoid.dk/aggbug.ashx?id=9c9bfdb2-a396-427e-8e55-160c9fb220d3"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=9Po_0YIqZT4:-65zJX1vm8Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=9Po_0YIqZT4:-65zJX1vm8Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=9Po_0YIqZT4:-65zJX1vm8Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?i=9Po_0YIqZT4:-65zJX1vm8Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=9Po_0YIqZT4:-65zJX1vm8Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/9Po_0YIqZT4" height="1" width="1"/&gt;</description>
      <comments>http://www.publicvoid.dk/CommentView,guid,9c9bfdb2-a396-427e-8e55-160c9fb220d3.aspx</comments>
      <category>uCommerce</category>
    <feedburner:origLink>http://www.publicvoid.dk/QueryingProductsByCustomPropertiesInUCommerce.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.publicvoid.dk/Trackback.aspx?guid=b2eba08f-87fd-46f8-8068-7d0d34f4f905</trackback:ping>
      <pingback:server>http://www.publicvoid.dk/pingback.aspx</pingback:server>
      <pingback:target>http://www.publicvoid.dk/PermaLink,guid,b2eba08f-87fd-46f8-8068-7d0d34f4f905.aspx</pingback:target>
      <dc:creator>S�ren Spelling Lund</dc:creator>
      <wfw:comment>http://www.publicvoid.dk/CommentView,guid,b2eba08f-87fd-46f8-8068-7d0d34f4f905.aspx</wfw:comment>
      <wfw:commentRss>http://www.publicvoid.dk/SyndicationService.asmx/GetEntryCommentsRss?guid=b2eba08f-87fd-46f8-8068-7d0d34f4f905</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>Deleting Purchase Orders and Baskets from the Database in uCommerce</title>
      <guid isPermaLink="false">http://www.publicvoid.dk/PermaLink,guid,b2eba08f-87fd-46f8-8068-7d0d34f4f905.aspx</guid>
      <link>http://feedproxy.google.com/~r/publicvoid/~3/v5d0B7-VWyo/DeletingPurchaseOrdersAndBasketsFromTheDatabaseInUCommerce.aspx</link>
      <pubDate>Tue, 25 May 2010 20:55:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
One thing you might want to do before putting a new &lt;a href="http://www.ucommerce.dk"&gt;uCommerce&lt;/a&gt; solution&#xD;
into a production environment is remove any test baskets and orders you might have&#xD;
placed during development. The schema gets a little complicated with the rich functionality&#xD;
found in the &lt;a href="http://www.ucommerce.dk/en/features.aspx"&gt;uCommerce Transaction&#xD;
Foundation&lt;/a&gt; requiring the objects to be removed in a certain order. &#xD;
&lt;/p&gt;&#xD;
        &lt;p align="center"&gt;&#xD;
          &lt;a href="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/DeletingPurchaseOrdersandBasketsfromtheD_14251/image_4.png"&gt;&#xD;
            &lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/DeletingPurchaseOrdersandBasketsfromtheD_14251/image_thumb_1.png" width="583" height="464"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Here’s how you go about deleting them.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font color="#ff0000"&gt;&#xD;
            &lt;strong&gt;*** WARNING! HERE BE DRAGONS! ***&lt;/strong&gt;&#xD;
          &lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Please be aware that running the following script will remove any baskets&#xD;
and orders found in the system with no way to get them back unless you have a database&#xD;
backup handy.&lt;/strong&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;--&lt;span style="color: #0000ff"&gt;DELETE&lt;/span&gt; PURCHASEORDERS &lt;span style="color: #0000ff"&gt;AND&lt;/span&gt; ASSOCIATED &lt;span style="color: #0000ff"&gt;DATA&lt;/span&gt;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;BEGIN&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;TRAN&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;UPDATE&lt;/span&gt; uCommerce_PurchaseOrder &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; BillingAddressId&#xD;
= &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;DELETE&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; uCommerce_Shipment&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;DELETE&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; uCommerce_OrderAddress&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;DELETE&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; uCommerce_OrderProperty&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;DELETE&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; uCommerce_OrderLine&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;DELETE&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; uCommerce_Payment&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;DELETE&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; uCommerce_OrderStatusAudit&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;DELETE&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; uCommerce_PurchaseOrder&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;DELETE&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; uCommerce_Address&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;DELETE&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; uCommerce_Customer&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;--&lt;span style="color: #0000ff"&gt;COMMIT&lt;/span&gt;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
As an added precaution I uncommented the commit statement in case you were wondering&#xD;
why the data isn’t being deleted :)&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This post was written for &lt;a href="http://www.ucommerce.dk/en/support/1031-release-notes.aspx"&gt;uCommerce&#xD;
1.0.3.1&lt;/a&gt; (schema version 14).&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.publicvoid.dk/aggbug.ashx?id=b2eba08f-87fd-46f8-8068-7d0d34f4f905"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=v5d0B7-VWyo:IhS6BgP9qtY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=v5d0B7-VWyo:IhS6BgP9qtY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=v5d0B7-VWyo:IhS6BgP9qtY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?i=v5d0B7-VWyo:IhS6BgP9qtY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=v5d0B7-VWyo:IhS6BgP9qtY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/v5d0B7-VWyo" height="1" width="1"/&gt;</description>
      <comments>http://www.publicvoid.dk/CommentView,guid,b2eba08f-87fd-46f8-8068-7d0d34f4f905.aspx</comments>
      <category>uCommerce</category>
    <feedburner:origLink>http://www.publicvoid.dk/DeletingPurchaseOrdersAndBasketsFromTheDatabaseInUCommerce.aspx</feedburner:origLink></item>
    <item><title>Links for 2010-05-19 [del.icio.us]</title><link>http://feedproxy.google.com/~r/publicvoid/~3/5DJlC4kPYZI/mufoxe</link><pubDate>Thu, 20 May 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mufoxe#2010-05-19</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.memoryc.com/storage/solidstatedisk/48gbfilematesolidgoexpresscardultra.html"&gt;48GB FileMate SolidGO ExpressCard&lt;/a&gt;&lt;br/&gt;
48GB FileMate SolidGO ExpressCard 34 mini USB Ultra Solid State Disk&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/5DJlC4kPYZI" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mufoxe#2010-05-19</feedburner:origLink></item><item>
      <trackback:ping>http://www.publicvoid.dk/Trackback.aspx?guid=1ffcab81-4105-4e53-920c-c9756b9ef886</trackback:ping>
      <pingback:server>http://www.publicvoid.dk/pingback.aspx</pingback:server>
      <pingback:target>http://www.publicvoid.dk/PermaLink,guid,1ffcab81-4105-4e53-920c-c9756b9ef886.aspx</pingback:target>
      <dc:creator>S�ren Spelling Lund</dc:creator>
      <wfw:comment>http://www.publicvoid.dk/CommentView,guid,1ffcab81-4105-4e53-920c-c9756b9ef886.aspx</wfw:comment>
      <wfw:commentRss>http://www.publicvoid.dk/SyndicationService.asmx/GetEntryCommentsRss?guid=1ffcab81-4105-4e53-920c-c9756b9ef886</wfw:commentRss>
      
      <title>Integrating uCommerce with a Payment Provider</title>
      <guid isPermaLink="false">http://www.publicvoid.dk/PermaLink,guid,1ffcab81-4105-4e53-920c-c9756b9ef886.aspx</guid>
      <link>http://feedproxy.google.com/~r/publicvoid/~3/9A4uHin8gbg/IntegratingUCommerceWithAPaymentProvider.aspx</link>
      <pubDate>Wed, 19 May 2010 10:52:18 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
You will learn how to create a Payment Method Service, which integrates &lt;a href="http://www.ucommerce.dk"&gt;uCommerce&lt;/a&gt; with&#xD;
an online payment processer such as Sage, DIBS, PayPal, Cyber Source, or another processor&#xD;
used during checkout. This information is based onuCommerce 1.0.3.x and 1.0.3.2.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036875"&gt;Create Visual Studio Project&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Create a new Visual Studio solution and choose Class Library for your project type.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Project structure - File Explorer" border="0" alt="Project structure - File Explorer" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/BuildingaPaymentMethodService_B2F3/Project%20structure%20-%20File%20Explorer_3.png" width="604" height="406"&gt;&lt;/img&gt;&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
  &#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036876"&gt;Add References to Your Project&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
uCommerce.dll &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
uCommerce.Infrastructure.dll &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Subsonic.Core.dll &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="VS add reference select UC assemblies" border="0" alt="VS add reference select UC assemblies" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/BuildingaPaymentMethodService_B2F3/VS%20add%20reference%20select%20UC%20assemblies_3.png" width="604" height="378"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036877"&gt;Import Namespaces&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Import the UCommerce.Transactions.Payment and UCommerce.Entities namespaces in you&#xD;
class file &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Import namespaces" border="0" alt="Import namespaces" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/BuildingaPaymentMethodService_B2F3/Import%20namespaces_3.png" width="604" height="378"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036878"&gt;Implement interface IPaymentMethodService on your class&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
The IPaymentMethodService interface gives you full control over the behavior of the&#xD;
service. Alternatively you can inherit from AbstractPaymentService, which gives a&#xD;
default implementation for ProcessPaymentRequest, which will give you a properly initialized&#xD;
Payment. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Implement interface" border="0" alt="Implement interface" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/BuildingaPaymentMethodService_B2F3/Implement%20interface_3.png" width="604" height="378"&gt;&lt;/img&gt; &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Implement interface 2" border="0" alt="Implement interface 2" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/BuildingaPaymentMethodService_B2F3/Implement%20interface%202_3.png" width="604" height="378"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036879"&gt;Implement Name property&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
The name property is used to uniquely identify your Payment Method Service. It is&#xD;
read from configuration and set on your service at runtime. &#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MyPaymentService&#xD;
: IPaymentMethodService&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Name&#xD;
{ get; set; } &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;b&gt;&#xD;
          &lt;/b&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036880"&gt;Implement RequestPayment(PaymentRequest)&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
RequestPayment can be used in one of two ways: 1) Either to redirect the customer&#xD;
to the remote server handling payment information there, e.g. credit card information,&#xD;
or 2) to simply send payment information received on your server directly to the provider. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
1) &#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Payment&#xD;
RequestPayment(PaymentRequest request) &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{ &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Package up information for the backend service, &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
in the form of a http request &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Redirect customer to backend service with &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
the needed information &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Payment would be set pending authorization status (the status will have to be added&#xD;
to the uCommerce_PaymentStatus table) &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
        &lt;p&gt;&#xD;
2) &#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Payment&#xD;
RequestPayment(PaymentRequest request)&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Processing is happening synchronously so we just&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
call the backend service with ProcessPaymentRequest&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ProcessPaymentRequest(request);&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a name="_Toc119036881"&gt;Implement ProcessPaymentRequest(PaymentRequest)&lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
ProcessPaymentRequest is used to handle any processing before or callbacks from the&#xD;
remote server in the case of a payment processing being handled exclusively by a remote&#xD;
party. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
1) In the case of a callback scenario you use ProcessPaymentRequest to handle the&#xD;
callback and do any needed processing like updating order status. To receive the callback&#xD;
an endpoint needs to be exposed to the remote party such an http handler or a module.&#xD;
The handler or module will call ProcessPaymentRequest to complete the payment.&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Payment&#xD;
ProcessPaymentRequest(PaymentRequest request)&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Update payment according to received status from remote &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
party, e.g. Accepted, Declined&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Grab any transaction ids and put them on the payment before &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
returning the Payment&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
2) For a synchronous scenario ProcessPaymentRequest would be used to perform the query&#xD;
to the backing system and create a new Payment according to the result received.&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Payment&#xD;
RequestPayment(PaymentRequest request) &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{ &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Package up information for the backend service, &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
in the form of a http request &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Redirect customer to backend service with &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
the needed information &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Payment would be set pending authorization status &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036882"&gt;Implement AcquirePayment(Payment)&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
For legal reason you sually can’t withdraw money from the customer until you actually&#xD;
ship their order. AcquirePayment is ment for this very scenario where you first authorize&#xD;
the payment and later withdraw from their account. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
AcquirePayment(Payment) is used for capturing the payment from the customer.&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Payment&#xD;
ProcessPaymentRequest(PaymentRequest request)&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Send request to remote party&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Update payment according to received status from remote &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
party, e.g. Accepted, Declined&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Grab any transaction ids and put them on the payment before &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
returning the Payment&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
        &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036883"&gt;Implement CancelPayment(Payment) &lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
If you wish to cancel af payment with your payment method service you need to implement&#xD;
CancelPayment, and have it reach out the remote payment processor. Typical scenarios&#xD;
for cancelling a payment includes a customer return, cancelled order and typically&#xD;
requires you to handle two scenarios: Payment authorized but not capture and payment&#xD;
authorized and captured. &#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Payment&#xD;
CancelPayment(Payment payment)&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Update payment according to received status from remote &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
party, e.g. Cancelled&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Grab any transaction ids and put them on the payment before &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
returning the Payment&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;h4&gt;Implement CalculatePaymentFee(PaymentRequest)&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
If applicable, used for calculating the fee associated with the payment method.&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt; Money&#xD;
CalculatePaymentFee(PaymentRequest request)&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    var order = request.PurchaseOrder;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    var paymentMethod = request.PaymentMethod;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    var fee = paymentMethod.GetFeeForCurrency(order.BillingCurrency);&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!order.SubTotal.HasValue)&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Money(0, &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CultureInfo(Globalization.CultureCode),&#xD;
order.BillingCurrency);&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Money(order.SubTotal.Value &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        * (paymentMethod.FeePercent / 100) &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        + fee.Fee, &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CultureInfo(Globalization.CultureCode),&#xD;
order.BillingCurrency);&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;h4&gt;Optionally Implement IPaymentFactory Interface on Your Provider&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
With uCommerce 1.0.3.2 the option for deferred payment requests was introduced meaning&#xD;
that you can create a payment placeholder for the choices made by a user and then&#xD;
later perform the actual payment request to the backend service.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you need this functionality your PaymentMethodService should implement the interface&#xD;
IPaymentFactory (new for version 1.0.3.2), which will be used for creating the new&#xD;
Payment.&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;///&#xD;
&amp;lt;summary&amp;gt;&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;///&#xD;
Creates a new payment fully initialized&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;///&#xD;
&amp;lt;/summary&amp;gt;&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;///&#xD;
&amp;lt;param name="request"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;///&#xD;
&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Payment&#xD;
CreatePayment(PaymentRequest request)&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    PurchaseOrder &lt;span style="color: #0000ff"&gt;order&lt;/span&gt; =&#xD;
request.PurchaseOrder;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    var payment = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Payment&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        TransactionId = Guid.NewGuid().ToString(),&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        OrderId = &lt;span style="color: #0000ff"&gt;order&lt;/span&gt;.OrderId,&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        PaymentMethodName = GetPaymentName(request.PaymentMethod),&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        Created = DateTime.Now,&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        PaymentMethodId = request.PaymentMethod.PaymentMethodId,&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        Fee = CalculatePaymentFee(request).&lt;span style="color: #0000ff"&gt;Value&lt;/span&gt;,&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        FeePercentage = request.PaymentMethod.FeePercent,&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        PaymentStatusId = 1, &lt;span style="color: #008000"&gt;//&#xD;
Status new&lt;/span&gt;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        Amount = request.Amount.&lt;span style="color: #0000ff"&gt;Value&lt;/span&gt;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    };&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; payment;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036884"&gt;Copy Your Assembly to Your Umbraco Site&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Copy MyUCommerceApp.Library.dll to the /bin folder of your Umbraco site. &#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036885"&gt;Add Your Payment Method Service to web.config&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Configure your new Payment Method Service in web.config of your Umbraco site. In the&#xD;
&amp;lt;paymentMethodServices&amp;gt; element of you web.config add the following xml: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
&amp;lt;add name="MyPaymentMethodService" type="MyUCommerceApp.Library.MyPaymentMethodService,&#xD;
MyUCommerceApp.Library" /&amp;gt; &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/BuildingaPaymentMethodService_B2F3/image_3.png" width="604" height="242"&gt;&lt;/img&gt;  &#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036886"&gt;Configure Payment Method to Use Your Service&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Configure Payment Method to use your new service in uCommerce Backoffice. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Configure Payment Method to use PaymentMethodService - 2" border="0" alt="Configure Payment Method to use PaymentMethodService - 2" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/BuildingaPaymentMethodService_B2F3/Configure%20Payment%20Method%20to%20use%20PaymentMethodService%20-%202_3.png" width="604" height="378"&gt;&lt;/img&gt;  &#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036887"&gt;Execute Your Payment Method Service from Commerce XSLT&#xD;
Library&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
You have two options when you need to carry out your payment request: Either create&#xD;
and request a payment in one go by or do a two step request whereby you create a payment,&#xD;
but defer the actual request of the payment to backend service to a later time.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Please note that the two-step request is only available with uCommerce 1.0.3.2 or&#xD;
newer.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Typically the two step approach is used when you’re dealing with a redirect scenario&#xD;
in which part of the payment authorization happens on a remote server.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
For a single step request, you'll use this XSLT extension:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;xsl:variable name=&lt;span style="color: #006080"&gt;"result"&lt;/span&gt; select=&lt;span style="color: #006080"&gt;"CommerceLibrary:CreatePayment($paymentMethodId,&#xD;
-1, true(), true())"&lt;/span&gt;&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
or the version with no amount argument, which will default to the SubTotal of the&#xD;
PurchaseOrder, i.e. use this if you only accept one payment per purchase order. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you need the two step version you’ll use a couple of extensions. First the one&#xD;
which creates a payment for you and second an extension, which performs the request.&#xD;
Please note that your PaymentMethodService must implemention IPaymentFactory for this&#xD;
to work.&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
-1 is a convenience which will tell uCommerce to grab the total of the order for the&#xD;
payment&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
The first bool parameter indicates whether to perform the payment request&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
The second bool parameter will overwrite existing payments if set to true (a way to&#xD;
avoid duplicates)&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;xsl:variable name=&lt;span style="color: #006080"&gt;"result"&lt;/span&gt; select=&lt;span style="color: #006080"&gt;"CommerceLibrary:CreatePayment($paymentMethodId,&#xD;
-1, false(), true())"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
The uCommerce Store executes CreatePayment in the macro called UpdatePayment[XSLT]. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
To perform the payment request you’ll execute:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Perform request payment for all payments associated with the basket&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;xsl:variable name=&lt;span style="color: #006080"&gt;"paymentResult"&lt;/span&gt; select=&lt;span style="color: #006080"&gt;"CommerceLibrary:RequestPayments()"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;- or -&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Perform request payment for a single payment&lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;xsl:variable name=&lt;span style="color: #006080"&gt;"paymentResult"&lt;/span&gt; select=&lt;span style="color: #006080"&gt;"CommerceLibrary:RequestPayment(paymentId)"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;h4&gt;&#xD;
          &lt;a name="_Toc119036888"&gt;Execute Your Payment Method Service from .NET&lt;/a&gt;&#xD;
        &lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
To execute your Payment Service directly from .NET code you use the following snippet:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&#xD;
          &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ExecutePaymentMethodService(PaymentMethod&#xD;
paymentMethod, &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    PurchaseOrder purchaseOrder, &lt;span style="color: #0000ff"&gt;decimal&lt;/span&gt; amount)&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    var cultureInfo = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CultureInfo(Globalization.CultureCode);&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #008000"&gt;//&#xD;
Create a new payment request to &lt;/span&gt;&#xD;
            &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    var paymentRequest = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PaymentRequest(&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                purchaseOrder,&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                paymentMethod,&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&#xD;
              &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Money(&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    amount,&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    cultureInfo,&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    purchaseOrder.BillingCurrency)&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                             );&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    Payment payment = paymentMethod&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    .GetPaymentMethodService()&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;                    .RequestPayment(paymentRequest);&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
            &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&#xD;
            &lt;!--CRLF--&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.publicvoid.dk/aggbug.ashx?id=1ffcab81-4105-4e53-920c-c9756b9ef886"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=9A4uHin8gbg:meoobOd9hPE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=9A4uHin8gbg:meoobOd9hPE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=9A4uHin8gbg:meoobOd9hPE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?i=9A4uHin8gbg:meoobOd9hPE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=9A4uHin8gbg:meoobOd9hPE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/9A4uHin8gbg" height="1" width="1"/&gt;</description>
      <comments>http://www.publicvoid.dk/CommentView,guid,1ffcab81-4105-4e53-920c-c9756b9ef886.aspx</comments>
      <category>uCommerce</category>
    <feedburner:origLink>http://www.publicvoid.dk/IntegratingUCommerceWithAPaymentProvider.aspx</feedburner:origLink></item>
    <item><title>Links for 2010-05-16 [del.icio.us]</title><link>http://feedproxy.google.com/~r/publicvoid/~3/63YNmA7gh10/mufoxe</link><pubDate>Mon, 17 May 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mufoxe#2010-05-16</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://burn-osx.sourceforge.net/"&gt;Burn&lt;/a&gt;&lt;br/&gt;
There are a lot of ways to approach burning discs. Burn keeps it simple, but still offers a lot of advanced options.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/63YNmA7gh10" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mufoxe#2010-05-16</feedburner:origLink></item><item><title>Links for 2010-04-06 [del.icio.us]</title><link>http://feedproxy.google.com/~r/publicvoid/~3/hQQLOKiYr9o/mufoxe</link><pubDate>Wed, 07 Apr 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mufoxe#2010-04-06</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://smtp4dev.codeplex.com/"&gt;smtp4dev&lt;/a&gt;&lt;br/&gt;
Dummy SMTP server that sits in the system tray and does not deliver the received messages. The received messages can be quickly viewed, saved and the source/structure inspected. Useful for testing/debugging software that generates email.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/hQQLOKiYr9o" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mufoxe#2010-04-06</feedburner:origLink></item><item><title>Links for 2010-04-02 [del.icio.us]</title><link>http://feedproxy.google.com/~r/publicvoid/~3/hFYEYWRmnc0/mufoxe</link><pubDate>Sat, 03 Apr 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mufoxe#2010-04-02</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.softstack.com/freesmtp.html"&gt;Free SMTP Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/hFYEYWRmnc0" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mufoxe#2010-04-02</feedburner:origLink></item><item><title>Links for 2010-03-18 [del.icio.us]</title><link>http://feedproxy.google.com/~r/publicvoid/~3/aYWNZtnThBo/mufoxe</link><pubDate>Fri, 19 Mar 2010 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/mufoxe#2010-03-18</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.v4d5.net/webshop/forum.php"&gt;Debatforum for e-k&amp;oslash;bm&amp;aelig;nd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://our.umbraco.org/projects/ucommerce/ucommerce-support"&gt;uCommerce Support - our.umbraco.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/aYWNZtnThBo" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mufoxe#2010-03-18</feedburner:origLink></item><item><title>Links for 2010-02-03 [del.icio.us]</title><link>http://feedproxy.google.com/~r/publicvoid/~3/6FF1jo4cgpU/mufoxe</link><pubDate>Thu, 04 Feb 2010 00:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/mufoxe#2010-02-03</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ayende.com/Blog/archive/2010/01/16/eagerly-loading-entity-associations-efficiently-with-nhibernate.aspx"&gt;Eagerly loading entity associations efficiently with NHibernate&lt;/a&gt;&lt;br/&gt;
Eager loading entities with multiple one-to-many associations efficiently.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/6FF1jo4cgpU" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/mufoxe#2010-02-03</feedburner:origLink></item><item>
      <trackback:ping>http://www.publicvoid.dk/Trackback.aspx?guid=fab69f53-2ca6-40ff-b14a-4323e3291c6e</trackback:ping>
      <pingback:server>http://www.publicvoid.dk/pingback.aspx</pingback:server>
      <pingback:target>http://www.publicvoid.dk/PermaLink,guid,fab69f53-2ca6-40ff-b14a-4323e3291c6e.aspx</pingback:target>
      <dc:creator>S�ren Spelling Lund</dc:creator>
      <wfw:comment>http://www.publicvoid.dk/CommentView,guid,fab69f53-2ca6-40ff-b14a-4323e3291c6e.aspx</wfw:comment>
      <wfw:commentRss>http://www.publicvoid.dk/SyndicationService.asmx/GetEntryCommentsRss?guid=fab69f53-2ca6-40ff-b14a-4323e3291c6e</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>Multi-Currency for Commerce Server 2009 Revisited</title>
      <guid isPermaLink="false">http://www.publicvoid.dk/PermaLink,guid,fab69f53-2ca6-40ff-b14a-4323e3291c6e.aspx</guid>
      <link>http://feedproxy.google.com/~r/publicvoid/~3/3vFRBPtHlkc/MultiCurrencyForCommerceServer2009Revisited.aspx</link>
      <pubDate>Wed, 03 Jun 2009 12:21:57 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 20px 20px; display: inline; border-top: 0px; border-right: 0px" title="Microsoft-Commerce-Server-Logo" border="0" alt="Microsoft-Commerce-Server-Logo" align="right" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/MultiCurrencyforCommerceServer2009Revisi_AF7F/Microsoft-Commerce-Server-Logo_bf153953-3a18-40ee-a26f-6c193da91abf.png" width="317" height="46"&gt;&lt;/img&gt;Back&#xD;
in 2007 I was faced with designing a multi-currency catalog solution for Commerce&#xD;
Server. I knew from previous experience that we would need a general purpose solution,&#xD;
which we could employ for many clients.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Back then Commerce Server 2007 was new thus performance characteristics were new territory&#xD;
as well. I ended up designing a solution based solely on virtual catalogs. Basically&#xD;
one catalog for each price group/currency. You can &lt;a href="http://www.publicvoid.dk/MultiLingualAndCurrencyWithCommerceServer2007.aspx"&gt;read&#xD;
the details on multi-currency/price groups&lt;/a&gt;, which we’ve employed successfully&#xD;
numerous times since then.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Since 2007 we’ve gotten a new version of Commerce Server though no significant new&#xD;
features were added in the catalog system, and we’ve gained valuable new knowledge&#xD;
on both the pricing scenarios and limitation of the Commerce Server catalog system.&#xD;
With that information in hand I’m going to try my hand at redesigning the original&#xD;
multi-currency catalog structure from 2007 to both address performance issues and&#xD;
increased flexibility.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Virtual Catalogs are Slow&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Virtual catalogs are slow and so they make a poor choice to expressing essentially&#xD;
a single piece of data. You might say that virtual catalogs perform perfectly well&#xD;
if you materialize them and you would be right. You gain in the order of 10x performance&#xD;
by materializing a virtual catalog but lose the ability to make any changes in them&#xD;
in the process.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Basing my original multi-currency solution on virtual catalogs seemed to make perfect&#xD;
sense, but with the added requirement of changing the category hierarchy two levels&#xD;
of modifiable virtual catalogs were needed, thus the ability to materialize was lost.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
To make matters worse we rarely deal with clients who are inclined to go with an Enterprise&#xD;
license for their Commerce Server solution, so we don’t see very many full fledged&#xD;
staged solutions, which would take care of the challenge handily.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Virtual Catalogs Two Levels Deep&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Virtual catalogs are by nature limited to two levels, i.e. you can have a total of&#xD;
three levels of catalogs, one with base catalogs and two with virtual catalogs. Are&#xD;
we to use one of these levels of virtual catalogs for pricing we lose it for other&#xD;
purposes, and gain very little other than the ability to store another price group&#xD;
per catalog.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Pricing is a Separate Issue&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
What I’ve come to realize over the years is that product pricing is a completely separate&#xD;
issue from the product itself. While the two might seem like one and the same; in&#xD;
reality they aren’t. Sure the customer needs to be told a certain price, but more&#xD;
often than not the price is determined by context surrounding the product, rather&#xD;
than the product itself.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
An example would be a seasonal business, which is highly dependant on calendar time,&#xD;
the product would probably sell for a higher rate at specific times of the year and&#xD;
lower rates the rest of the year, e.g. &lt;a href="mailto:ChrismasTreesssl@Online.com"&gt;ChristmasTreesOnline.com&lt;/a&gt;.&#xD;
The context in this particular instance is time.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now for business to business scenarios the context might be especially convoluted&#xD;
as you might go for pricing granularity, which allow organizations, groups within&#xD;
the organization, even individual people in the organization to have specific prices,&#xD;
e.g. memberships to the gym provided by your company or framework agreements made&#xD;
between supplier and customer. The context deciding the price is who you are in this&#xD;
case, not the product itself.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Pricing is a Service&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
To handle the separate issue of pricing we need something akin to &lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/08/21/services-in-domain-driven-design.aspx"&gt;a&#xD;
service in domain driven design parlance&lt;/a&gt;. The service is responsible for looking&#xD;
up the right price based on whichever context is present for a given customer request.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Of course we need some sort of structure to maintain the pricing for individual price&#xD;
groups, and catalogs come in handy to solve this as I’ll show you next.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;The Product Catalog&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Our product catalog would in the new scheme continue to exist as we know and love&#xD;
it with one minor exception. The list price of the product is either to be ignored&#xD;
or used only to get an idea of what the pricing is like. The list price will not be&#xD;
picked up from the product catalog, which contains the marketing data for a product.&#xD;
Please note that I define marketing data in this instance as data used to display&#xD;
to potential customers, but other than that serve no purpose to the system.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;The Pricing Catalog&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
In Commerce Server we have the notion of different types of catalogs, i.e. the product&#xD;
catalog and the inventory catalog. I’m going to introduce a third kind called the &lt;strong&gt;Pricing&#xD;
Catalog&lt;/strong&gt;. As you might imagine a pricing catalog concerns itself only with&#xD;
price and as such contains only the bare minimum of data to identify a product.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The pricing catalog will have metadata to indicate that it is in fact a pricing catalog.&#xD;
Each pricing catalog reflects a single price group such as “Internet Users”, “Gold&#xD;
Customers”, whatever makes sense for the particular scenario.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Having pricing split out like this means that we can price products based on the calendar&#xD;
time context as a standard Commerce Server catalog has dates associated with it to&#xD;
allow us to display it within only a given period of time. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
For a pricing catalog these fields are used to determine whether a price is valid&#xD;
or not, so you could have the seasonal pricing expressed as two different pricing&#xD;
catalogs for our ChristmasTreesOnline.com, one for holiday pricing and one for the&#xD;
rest of the year. The pricing service would then grab the pricing from the proper&#xD;
Pricing Catalog and display it to the customer.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Pricing Definitions&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Finally I propose a new kind of definition called the &lt;strong&gt;Pricing Definition&lt;/strong&gt;.&#xD;
What this is is a specialized Product Definition used for creating Pricing in the&#xD;
Pricing Catalogs for advanced scenarios, e.g. complex pricing matrices defined in&#xD;
external systems such as an ERP.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Products, i.e. Prices, created based on a Pricing Definition would contain at least&#xD;
the SKU, name, description, and of course the list price. These specialized products&#xD;
go into a Pricing Catalog as we discussed in the previous paragraph.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Tying it All Together&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Another context we discussed in a previous section is the organizational context,&#xD;
which might also influence product pricing. Fortunately Commerce Server comes with&#xD;
CatalogSets as a neat way of bundling catalog together. CatalogSets leveraged with&#xD;
our Product Catalogs and Pricing Catalogs would allow us to do multi-currency and,&#xD;
incidentally, a bunch of even more interesting scenarios.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Imagine if you will a scenario where our online retail outlet would like to give Internet&#xD;
customers access to only currencies, which make sense for their particular region,&#xD;
e.g. here in Denmark Euro and our national currency Kroner would make sense, while&#xD;
UK customers should be enabled to shop in either Pounds or Euro.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Simple! Create two catalog sets one called Denmark and one called UK. For the Denmark&#xD;
catalog set select our one product catalog containing all products or the one which&#xD;
reflects the range available in Denmark and select the two Pricing Catalogs Kroner&#xD;
and Euro. For the UK catalog set select Euro and Pounds Pricing Catalogs. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
By way of the metadata on the catalogs we’re now able to display the same range for&#xD;
both UK and Danish customers, but in three different currencies with Pound being available&#xD;
to the British and Kroner available only to the Danish customers.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.publicvoid.dk/aggbug.ashx?id=fab69f53-2ca6-40ff-b14a-4323e3291c6e"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=3vFRBPtHlkc:IevVzAB-oQ0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=3vFRBPtHlkc:IevVzAB-oQ0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=3vFRBPtHlkc:IevVzAB-oQ0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?i=3vFRBPtHlkc:IevVzAB-oQ0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=3vFRBPtHlkc:IevVzAB-oQ0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/3vFRBPtHlkc" height="1" width="1"/&gt;</description>
      <comments>http://www.publicvoid.dk/CommentView,guid,fab69f53-2ca6-40ff-b14a-4323e3291c6e.aspx</comments>
      <category>Commerce Server</category>
    <feedburner:origLink>http://www.publicvoid.dk/MultiCurrencyForCommerceServer2009Revisited.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.publicvoid.dk/Trackback.aspx?guid=9fe61c5e-e944-403d-b99f-6404ab4be191</trackback:ping>
      <pingback:server>http://www.publicvoid.dk/pingback.aspx</pingback:server>
      <pingback:target>http://www.publicvoid.dk/PermaLink,guid,9fe61c5e-e944-403d-b99f-6404ab4be191.aspx</pingback:target>
      <dc:creator>S�ren Spelling Lund</dc:creator>
      <wfw:comment>http://www.publicvoid.dk/CommentView,guid,9fe61c5e-e944-403d-b99f-6404ab4be191.aspx</wfw:comment>
      <wfw:commentRss>http://www.publicvoid.dk/SyndicationService.asmx/GetEntryCommentsRss?guid=9fe61c5e-e944-403d-b99f-6404ab4be191</wfw:commentRss>
      <title>Blogging on the Mac</title>
      <guid isPermaLink="false">http://www.publicvoid.dk/PermaLink,guid,9fe61c5e-e944-403d-b99f-6404ab4be191.aspx</guid>
      <link>http://feedproxy.google.com/~r/publicvoid/~3/73kNq4wGctE/BloggingOnTheMac.aspx</link>
      <pubDate>Mon, 30 Mar 2009 10:37:30 GMT</pubDate>
      <description>&lt;p style="clear: both"&gt;
So I've been migrating my life over to the Mac that I bought late last year and briefly
mentioned in my summary post of 2008. Mostly I'm there but one aspect keeps tripping
me up: Which blogging tool to use for posting to the couple of blogs I maintain?
&lt;/p&gt;
&lt;p style="clear: both"&gt;
On Windows I'm very happy with &lt;a href="http://windowslivewriter.spaces.live.com/default.aspx?wa=wsignin1.0&amp;sa=155268069"&gt;Windows
Live Writer&lt;/a&gt; and I figured that with all the creative writing people of the Mac
it wouldn't be an issue at all to find a nice comparable tool on the other side.
&lt;/p&gt;
&lt;p style="clear: both"&gt;
Boy was I ever wrong in assuming that. For some reason there isn't really a very good
tool which has feature parity with Live Writer on the Mac. The most prevalent tool
out there is MarsEdit, which to me doesn't fit the bill. It does everything right
in the technical department but lacks in one key area: The editor.
&lt;/p&gt;
&lt;p style="clear: both"&gt;
Over the years I've grown accustomed to having a couple of features which really help
out in the process of writing a new post:
&lt;/p&gt;
&lt;ul style="clear: both"&gt;
&lt;li&gt;
The tool must be desktop based. Web interfaces are handy but too cumbersome to work
with&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
WYSIWYG editor&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
Auto creation of image thumbnails with links to the original&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
Image formatting tools like alignment and custom margins&lt;/li&gt;
&lt;li&gt;
Support for &lt;a href="http://www.codeplex.com/blogengine"&gt;BlogEngine.NET&lt;/a&gt; and &lt;a href="http://www.codeplex.com/dasblog"&gt;DasBlog&lt;/a&gt; (categories,
upload images via MetaWeblog API)&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
Ideally rich image formatting features like drop shadow&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="clear: both"&gt;
&lt;strong&gt;MarsEdit 2&lt;/strong&gt;
&lt;br /&gt;
I don't know about you but I expect to be able to edit my posts in the WYSIWYG interface,
which might occasionally require me to drop into HTML view to do some of the more
tricky stuff (read: I've done this maybe four time in the five years I've kept a blog).
MarsEdit, however, is built on the notion that the writer should have complete control
of the HTML and thus provides nothing but raw HTML editing, even billing it as a feature,
not a bug. I'm sorry but in 2009 I expect so much more from a tool like that. A tool
which even requires me to spend $29,95.
&lt;/p&gt;
&lt;p style="clear: both"&gt;
I read a review which describes &lt;a href="http://www.red-sweater.com/marsedit/"&gt;MarsEdit&lt;/a&gt; as
being very windowy. I think you'll agree when you take a look at the screenshot below.
Basically you've got a window for displaying previous posts, a windows for the raw
HTML editor, and a preview window to display what your HTML looks like. Nastylicous!
&lt;/p&gt;
&lt;p style="clear: both"&gt;
&lt;a href="http://www.publicvoid.dk/content/binary/MarsEdit1.png" class="image-link"&gt;&lt;img class="linked-to-original" src="http://www.publicvoid.dk/content/binary/MarsEdit1-thumb.png" height="312" width="499" style=" text-align: center; display: block; margin: 0 auto 10px;" /&gt;&lt;/a&gt;&lt;strong&gt;Qumana&lt;/strong&gt;
&lt;br /&gt;
&lt;a href="http://www.qumana.com/download.htm"&gt;Qumana&lt;/a&gt; was my second attempt at reaching
a blogging solution on par with what I have on Windows. It was even free so I was
off to a great start. Qumana looks like Live Writer enough that I thought I was home
free and stopped looking any further. Qumana is a pretty good tool which gets the
job done. However, it lacks polish which turned me away from it in the end. No support
for picture thumbnails was a huge point for me.&lt;br /&gt;
&lt;br /&gt;
As far as windoyness it's far better than MarsEdit and it does provide a WYSIWYG editor,
which was sorely lacking from MarsEdit 2. To sum up Qumana comes close but lacks thumbnail
support.
&lt;/p&gt;
&lt;p style="clear: both"&gt;
&lt;a href="http://www.publicvoid.dk/content/binary/Qumana1.png" class="image-link"&gt;&lt;img class="linked-to-original" src="http://www.publicvoid.dk/content/binary/Qumana1-thumb.png" height="312" width="499" style=" text-align: center; display: block; margin: 0 auto 10px;" /&gt;&lt;/a&gt;&lt;strong&gt;Blogo&lt;/strong&gt;
&lt;br /&gt;
Now &lt;a href="http://www.drinkbrainjuice.com/blogo"&gt;Blogo&lt;/a&gt; is a relatively new tool
on the Mac as I understand it. I came across Blogo while listening to Leo Laporte's
excellent &lt;a href="http://www.twit.tv/mbw"&gt;Macbreak Weekly&lt;/a&gt; podcast in which he's
got a segment where the panel picks their favorite tool. Blogo was in there and I
decided to check it out.
&lt;/p&gt;
&lt;p style="clear: both"&gt;
My first encounter with Blogo was a nice one to a certain point when it failed one
of my requirements miserably. Read on to find out how.
&lt;/p&gt;
&lt;p style="clear: both"&gt;
Hopes were not exactly high when I started using the tool the first time around but
that quickly changed as I set out to create my first blog post. Sure image preview
was sort of a strange feature in the sense that you get a little standard placeholder
which shows you that an image is there. As for actual image preview you're out of
luck.
&lt;/p&gt;
&lt;p style="clear: both"&gt;
Unfortunately Blogo doesn't support &lt;a href="http://www.codeplex.com/blogengine"&gt;BlogEngine.NET&lt;/a&gt; 1.4.5
fully. It seems like it's almost there but posting doesn't happen when categories
are in the mix. Editing a post after it's posted to BlogEngine.NET also presents some
problems. Blogo "sees" the post but when it's pulled down no content is present inside
it. Too bad it's really the only piece of puzzle missing for me to start using Blogo
on the Mac instead of Live Writer inside my Fusion virtualized Windows 7 install.
&lt;/p&gt;
&lt;p style="clear: both"&gt;
A particularly nice feature of Blogo is its fullscreen editing, which basically allows
Blogo to take over the entire screen to focus your attention on the blog post and
nothing else. Love it!
&lt;/p&gt;
&lt;p style="clear: both"&gt;
&lt;a href="http://www.publicvoid.dk/content/binary/Blogo.png" class="image-link"&gt;&lt;img class="linked-to-original" src="http://www.publicvoid.dk/content/binary/Blogo-thumb.png" height="401" width="380" style=" text-align: center; display: block; margin: 0 auto 10px;" /&gt;&lt;/a&gt;All
in all I'm not quite there yet. I'm hoping for support for BlogEngine.NET in a future
release of Blogo, although I'm not holding my breath in that one. I already contacted
the good folks at &lt;a href="http://www.drinkbrainjuice.com"&gt;Drink Brain Juice&lt;/a&gt; (yeah
I know :)) but nothing has happened as of yet. Crossing fingers and toes as it would
see and end to that particular dilemma of my migration.
&lt;/p&gt;
&lt;br class='final-break' style='clear: both' /&gt;
&lt;img width="0" height="0" src="http://www.publicvoid.dk/aggbug.ashx?id=9fe61c5e-e944-403d-b99f-6404ab4be191" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=73kNq4wGctE:qgcL5NaT-ps:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=73kNq4wGctE:qgcL5NaT-ps:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=73kNq4wGctE:qgcL5NaT-ps:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?i=73kNq4wGctE:qgcL5NaT-ps:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=73kNq4wGctE:qgcL5NaT-ps:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/73kNq4wGctE" height="1" width="1"/&gt;</description>
      <comments>http://www.publicvoid.dk/CommentView,guid,9fe61c5e-e944-403d-b99f-6404ab4be191.aspx</comments>
      <category>Blogging</category>
    <feedburner:origLink>http://www.publicvoid.dk/BloggingOnTheMac.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.publicvoid.dk/Trackback.aspx?guid=4c184529-f659-44d9-96d4-a8901e10367e</trackback:ping>
      <pingback:server>http://www.publicvoid.dk/pingback.aspx</pingback:server>
      <pingback:target>http://www.publicvoid.dk/PermaLink,guid,4c184529-f659-44d9-96d4-a8901e10367e.aspx</pingback:target>
      <dc:creator>S�ren Spelling Lund</dc:creator>
      <wfw:comment>http://www.publicvoid.dk/CommentView,guid,4c184529-f659-44d9-96d4-a8901e10367e.aspx</wfw:comment>
      <wfw:commentRss>http://www.publicvoid.dk/SyndicationService.asmx/GetEntryCommentsRss?guid=4c184529-f659-44d9-96d4-a8901e10367e</wfw:commentRss>
      
      <title>FeedBurner Migration Broke My Feed</title>
      <guid isPermaLink="false">http://www.publicvoid.dk/PermaLink,guid,4c184529-f659-44d9-96d4-a8901e10367e.aspx</guid>
      <link>http://feedproxy.google.com/~r/publicvoid/~3/S1qXBvoN-Sk/FeedBurnerMigrationBrokeMyFeed.aspx</link>
      <pubDate>Wed, 28 Jan 2009 14:27:26 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.publicvoid.dk/SyndicationService.asmx/GetRss"&gt;&#xD;
            &lt;img title="feed-icon-96x96" style="border-right: 0px; border-top: 0px; display: inline; margin: 0px 0px 20px 20px; border-left: 0px; border-bottom: 0px" height="96" alt="feed-icon-96x96" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/FeedBurnerMigrationBrokeMyFeed_D93F/feed-icon-96x96_3.gif" width="96" align="right" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;In&#xD;
case you’re wondering why you’re not receiving any updates from my blog in your favorite&#xD;
feed reader, wonder no more. First a little background.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Google last year acquired FeedBurner without much fanfare and everything has pretty&#xD;
much been quiet since then with the minor exception that some paid feature became&#xD;
free.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This all changed recently when the great FeedBurner migration onto the Google platform&#xD;
started, which screwed people up in a number of interesting ways.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
My first attempts at migration were unsuccessful due to the fact that one of my feeds&#xD;
did get migrated in the first go, not completely, mind you, just a little bit, leaving&#xD;
me with my feed both at the old FeedBurner site &lt;em&gt;and&lt;/em&gt; at the new Google FeedBurner&#xD;
site. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Of course it’s gets quite tricky to determine automatically what to do when someone&#xD;
tries to migrate a feed onto a new platform where another feed with the same name&#xD;
exists. Luckily I figured out what was going on, and being in control of both ends&#xD;
of the equation I removed the duplicate feed and tried again…&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now for the reason why you’re not receiving anything from this blog in your feed reader.&#xD;
The second time around the migration &lt;em&gt;was &lt;/em&gt;successful, only Google for some&#xD;
reason can’t access my original feed URL at my ISP, which means that the FeedBurner&#xD;
URL gets a nice HTTP 502 error whenever you, dear reader, tries to access it.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Until this gets resolved between my ISP and Google (like in a million years) I’ve&#xD;
turned FeedBurner off for the site. Once it’s fixed you will automatically received&#xD;
the new feed. The down side is that you’ll have to update your reader to use the old&#xD;
feed URL in the meantime: &lt;a title="http://www.publicvoid.dk/SyndicationService.asmx/GetRss" href="http://www.publicvoid.dk/SyndicationService.asmx/GetRss"&gt;http://www.publicvoid.dk/SyndicationService.asmx/GetRss&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I think this illustrates nicely why you should be weary of the cloud computing trend.&#xD;
Indeed it’s a fine proposition; supposing that everything works as it should. It’s&#xD;
quite another matter when the cloud turns out to be filled with hot air and starts&#xD;
failing. All you can really do is sit back and wait for someone, somewhere to do something.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.publicvoid.dk/aggbug.ashx?id=4c184529-f659-44d9-96d4-a8901e10367e"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=S1qXBvoN-Sk:wtmiPBq4BbM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=S1qXBvoN-Sk:wtmiPBq4BbM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=S1qXBvoN-Sk:wtmiPBq4BbM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?i=S1qXBvoN-Sk:wtmiPBq4BbM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=S1qXBvoN-Sk:wtmiPBq4BbM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/S1qXBvoN-Sk" height="1" width="1"/&gt;</description>
      <comments>http://www.publicvoid.dk/CommentView,guid,4c184529-f659-44d9-96d4-a8901e10367e.aspx</comments>
      <category>Blogging</category>
    <feedburner:origLink>http://www.publicvoid.dk/FeedBurnerMigrationBrokeMyFeed.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.publicvoid.dk/Trackback.aspx?guid=e62c39e1-fa9b-4eff-965d-78cc496deb22</trackback:ping>
      <pingback:server>http://www.publicvoid.dk/pingback.aspx</pingback:server>
      <pingback:target>http://www.publicvoid.dk/PermaLink,guid,e62c39e1-fa9b-4eff-965d-78cc496deb22.aspx</pingback:target>
      <dc:creator>S�ren Spelling Lund</dc:creator>
      <wfw:comment>http://www.publicvoid.dk/CommentView,guid,e62c39e1-fa9b-4eff-965d-78cc496deb22.aspx</wfw:comment>
      <wfw:commentRss>http://www.publicvoid.dk/SyndicationService.asmx/GetEntryCommentsRss?guid=e62c39e1-fa9b-4eff-965d-78cc496deb22</wfw:commentRss>
      
      <title>O as in Open to Change Closed for Modification</title>
      <guid isPermaLink="false">http://www.publicvoid.dk/PermaLink,guid,e62c39e1-fa9b-4eff-965d-78cc496deb22.aspx</guid>
      <link>http://feedproxy.google.com/~r/publicvoid/~3/YqbmtX_XwMY/OAsInOpenToChangeClosedForModification.aspx</link>
      <pubDate>Tue, 27 Jan 2009 11:19:30 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-right: 0px; border-top: 0px; display: inline; margin: 0px 0px 20px 20px; border-left: 0px; border-bottom: 0px" height="183" alt="http://www.developer.com/img/2002/09/18/OOP01.gif" src="http://www.developer.com/img/2002/09/18/OOP01.gif" width="210" align="right" border="0"&gt;&lt;/img&gt;Today&#xD;
I read a &lt;a href="http://kodehoved.dk/?p=136"&gt;nice post by Brian Rasmussen in which&#xD;
he describes how to set up Visual Studio to generate class definitions which are sealed&#xD;
by default&lt;/a&gt;. I had to post my own point of view in the matter although it is going&#xD;
to be awkward. Not in the teenage, “define me”-sense but in my choice of language&#xD;
as I can’t really quote him effectively, so you’ll have to make do with me paraphrasing&#xD;
his post :) &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now I’d like to put myself in the I-could-not-disagree-more camp. The default choice&#xD;
in my humble opinion should be to leave classes open and have all members be virtual&#xD;
if you want to take it to the extreme. This would leave the system open for change&#xD;
just as the &lt;a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"&gt;SOLID&#xD;
principles&lt;/a&gt; state. Java got it right in my opinion. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
To be able to make the decision on whether a class should be open for inheritance&#xD;
you’d have to travel to the future to see what the class might be used for. If you’re&#xD;
anything like me you’re probably challenged in the time travelling department, and&#xD;
so I postulate that you can’t really make a good decision in the matter. More often&#xD;
than not closing the system for change will be the wrong choice as requirements and&#xD;
environments change. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I do agree with Brian’s statement that sealing a class would take away options thus&#xD;
creating a simpler API. I would, however, also like to state that there are better&#xD;
ways of achieving a simple API. How about not exposing the type all? Why not create&#xD;
a simple interface, which exposes only what is needed for the task at hand?&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Please don’t make the default choice for your classes sealed. Go with open classes&#xD;
and live a happy life with a system, which is open for change. Trust me I’ve seen&#xD;
systems, which adopted a closed stance and it wasn’t pretty. The team kept hitting&#xD;
the wall in the changes they wanted to make, simply due to the fact that the original&#xD;
developer had no time machine, which enabled him to foresee the changes, which future&#xD;
members of the team needed to implement.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.publicvoid.dk/aggbug.ashx?id=e62c39e1-fa9b-4eff-965d-78cc496deb22"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=YqbmtX_XwMY:Ad6rwhwCuJY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=YqbmtX_XwMY:Ad6rwhwCuJY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=YqbmtX_XwMY:Ad6rwhwCuJY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?i=YqbmtX_XwMY:Ad6rwhwCuJY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=YqbmtX_XwMY:Ad6rwhwCuJY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/YqbmtX_XwMY" height="1" width="1"/&gt;</description>
      <comments>http://www.publicvoid.dk/CommentView,guid,e62c39e1-fa9b-4eff-965d-78cc496deb22.aspx</comments>
      <category>Code</category>
    <feedburner:origLink>http://www.publicvoid.dk/OAsInOpenToChangeClosedForModification.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.publicvoid.dk/Trackback.aspx?guid=339bc332-34a4-463c-8a65-914719244bf9</trackback:ping>
      <pingback:server>http://www.publicvoid.dk/pingback.aspx</pingback:server>
      <pingback:target>http://www.publicvoid.dk/PermaLink,guid,339bc332-34a4-463c-8a65-914719244bf9.aspx</pingback:target>
      <dc:creator>S�ren Spelling Lund</dc:creator>
      <wfw:comment>http://www.publicvoid.dk/CommentView,guid,339bc332-34a4-463c-8a65-914719244bf9.aspx</wfw:comment>
      <wfw:commentRss>http://www.publicvoid.dk/SyndicationService.asmx/GetEntryCommentsRss?guid=339bc332-34a4-463c-8a65-914719244bf9</wfw:commentRss>
      
      <title>Twitter Inside Your Company</title>
      <guid isPermaLink="false">http://www.publicvoid.dk/PermaLink,guid,339bc332-34a4-463c-8a65-914719244bf9.aspx</guid>
      <link>http://feedproxy.google.com/~r/publicvoid/~3/1XE1n_6Ve2A/TwitterInsideYourCompany.aspx</link>
      <pubDate>Sun, 25 Jan 2009 06:00:00 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="https://www.yammer.com/"&gt;&#xD;
            &lt;img title="What are you working on?" style="border-right: 0px; border-top: 0px; display: inline; margin: 0px 0px 20px 20px; border-left: 0px; border-bottom: 0px" alt="logo" src="https://assets2.yammer.com/images/yammer_logo_small.gif?1232357914" align="right" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;This&#xD;
is going to be the last post in which I mention &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt;…&#xD;
seriously. In fact I’m going to start right now by not talking about Twitter but instead&#xD;
I’m going to focus on a side effect of Twitter: Corporate Tweeting. (You would in&#xD;
fact be correct if you assume that I just made that term up :))&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;The Vertical Niche&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Like Google Twitter has got the market for short public messages pretty much sewn&#xD;
up. Does that mean that there isn’t a market for short public messages anymore? As&#xD;
Google so clearly has shown sewing up the market does mean that others can’t compete&#xD;
in that same market. It’s all about the vertical niche, baby!&#xD;
&lt;/p&gt;&#xD;
        &lt;p align="center"&gt;&#xD;
          &lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="300" alt="http://www.geocities.com/glendalelandmark/IMG_3947.JPG" src="http://www.geocities.com/glendalelandmark/IMG_3947.JPG" width="400" border="0"&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;h3&gt;Yammer is the New Black&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
What &lt;a href="http://www.imdb.com"&gt;IMDB&lt;/a&gt; is for &lt;a href="http://www.google.com"&gt;Google&lt;/a&gt;. &lt;a href="http://www.yammer.com"&gt;Yammer&lt;/a&gt; is&#xD;
for &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt;. Before I dive into what Yammer is&#xD;
let me start out with a challenge we have at &lt;a href="http://www.vertica.dk"&gt;Vertica&lt;/a&gt;: &lt;a href="http://www.vertica.dk/vertica/nyheder/Pages/ViFlytter.aspx"&gt;As&#xD;
we spread to different geographical locations&lt;/a&gt; how do we keep the company spirit&#xD;
going strong? How do we make the departments one coherent company with the same values&#xD;
and a sense of collectiveness?&#xD;
&lt;/p&gt;&#xD;
        &lt;p align="center"&gt;&#xD;
          &lt;a href="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/TwitterinYourCompany_D2F0/image_4.png"&gt;&#xD;
            &lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; margin: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="image" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/TwitterinYourCompany_D2F0/image_thumb_1.png" width="147" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
We spent a couple of meetings debating that very issue and of course the good old&#xD;
ones like doing company outings, shared social events, wax eachother’s backs all came&#xD;
up but for me the most interesting one, aside from waxing eachother’s backs, was to&#xD;
try and use Twitter and also allow for the usual private chit chat which goes on inside&#xD;
a company. Some jokes are best kept inside the company… like you know that waxing&#xD;
one. You get my point right?&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Yammer&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/TwitterinYourCompany_D2F0/image_2.png"&gt;&#xD;
            &lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="344" alt="image" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/TwitterinYourCompany_D2F0/image_thumb.png" width="175" align="right" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
          &lt;a href="http://www.yammer.com"&gt;Yammer&lt;/a&gt; has&#xD;
set up shop with a Twitter clone which is ideally suited for running private Twitter-like&#xD;
networks. Bascailly all you need are e-mail addresses on the same domain and you’re&#xD;
golden. &lt;a href="https://www.yammer.com/"&gt;Sign up is stupid easy&lt;/a&gt;: Enter your e-mail&#xD;
and you’re good to go. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
From there is smooth sailed with a nice Adobe AIR client (surprise Adobe AIR is not&#xD;
just for Twitter clients!) which gives you the ease of posting new messages that you’re&#xD;
familiar with from that other netwokr which I won’t mention from here on in.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
At Vertica Yammer is quickly turning into a questions and answer service which translates&#xD;
directly into increased productivity because A) You don’t have to know who knows what,&#xD;
you just ask the question and someone will chime in, and B) You don’t interrupt people&#xD;
who don’t want to be interrupted because if they’re not looking they won’t answer.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now whether or not it will actually serve its original purpose remains to be seen.&#xD;
The new offices in Zealand is still under a month old and quite small so I guess we’ll&#xD;
just have to wait and see. What’s interesting though is that people at the first office&#xD;
were very quickly to adopt Yammer.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.publicvoid.dk/aggbug.ashx?id=339bc332-34a4-463c-8a65-914719244bf9"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=1XE1n_6Ve2A:sl6TWvtQWNw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=1XE1n_6Ve2A:sl6TWvtQWNw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=1XE1n_6Ve2A:sl6TWvtQWNw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?i=1XE1n_6Ve2A:sl6TWvtQWNw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=1XE1n_6Ve2A:sl6TWvtQWNw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/1XE1n_6Ve2A" height="1" width="1"/&gt;</description>
      <comments>http://www.publicvoid.dk/CommentView,guid,339bc332-34a4-463c-8a65-914719244bf9.aspx</comments>
      <category>Blogging</category>
      <category>Community</category>
    <feedburner:origLink>http://www.publicvoid.dk/TwitterInsideYourCompany.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.publicvoid.dk/Trackback.aspx?guid=6b4df832-924d-4a81-a8be-fb8622d27d12</trackback:ping>
      <pingback:server>http://www.publicvoid.dk/pingback.aspx</pingback:server>
      <pingback:target>http://www.publicvoid.dk/PermaLink,guid,6b4df832-924d-4a81-a8be-fb8622d27d12.aspx</pingback:target>
      <dc:creator>S�ren Spelling Lund</dc:creator>
      <wfw:comment>http://www.publicvoid.dk/CommentView,guid,6b4df832-924d-4a81-a8be-fb8622d27d12.aspx</wfw:comment>
      <wfw:commentRss>http://www.publicvoid.dk/SyndicationService.asmx/GetEntryCommentsRss?guid=6b4df832-924d-4a81-a8be-fb8622d27d12</wfw:commentRss>
      <slash:comments>3</slash:comments>
      
      <title>Tweet Me Right</title>
      <guid isPermaLink="false">http://www.publicvoid.dk/PermaLink,guid,6b4df832-924d-4a81-a8be-fb8622d27d12.aspx</guid>
      <link>http://feedproxy.google.com/~r/publicvoid/~3/XOTUfhkS_ks/TweetMeRight.aspx</link>
      <pubDate>Mon, 19 Jan 2009 10:58:14 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;h3&gt;&#xD;
          &lt;a href="http://twitter.com/home"&gt;&#xD;
            &lt;img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 20px 20px; border-right-width: 0px" height="41" alt="Twitter.com" src="http://assets1.twitter.com/images/twitter_logo_s.png" width="175" align="right" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
In a previous post &lt;a href="http://www.publicvoid.dk/CommunityBackChannel.aspx"&gt;I&#xD;
wrote about Twitter and what it means to the Danish developer community&lt;/a&gt;. The real&#xD;
value of &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt; however does not come by visiting&#xD;
the site from time to time. You have to participate actively to keep the conversation&#xD;
going and that’s where the Twitter clients come into the picure.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I’ve been through a bunch of them and ultimately decided which one I liked the best.&#xD;
I’ll try and spare you from doing the same all over.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Digsby&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 20px 20px; border-right-width: 0px" src="http://img.digsby.com/tmpl/social_2.png" align="right" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;a href="http://digsby.com"&gt;Digsby&lt;/a&gt; gets&#xD;
honorable mention becayse it was my first Twitter client and because this program&#xD;
how I got started with Twitter and in no small way the reason why I still use it.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Digsby is labelled a social network client which gives you access not only to Twitter,&#xD;
in fact that’s the least of it, but also to Messenger, LinkedIn, Facebook, Yahoo Chat,&#xD;
Google Talk, the list goes on and on but you get the point. Digsby speaks with most&#xD;
social networks out there.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
That was my reason for trying it out as I really didn’t feel that I needed a dedicated&#xD;
program to try out Twitter. I spent quite some time with Digsby and felt for a long&#xD;
time that it was the way to go. In fact the reason I dropped it was not so much Twitter&#xD;
related as it was Messenger related. It simply didn’t work as advertised, sending&#xD;
file for one was spotty.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
As a Twitter client it performed admirably and for me at least it was a low cost to&#xD;
pay for trying out Twitter as I used it primarily as a Messenger client with the added&#xD;
benefit of being able to send out my tweets as well.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Twitterrific&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/TweetMeRight_A3B8/image_4.png"&gt;&#xD;
            &lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 20px 20px; border-right-width: 0px" height="108" alt="image" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/TweetMeRight_A3B8/image_thumb_1.png" width="108" align="right" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
          &lt;a href="http://iconfactory.com/software/twitterrific"&gt;Twitterrific&lt;/a&gt; is&#xD;
an interesting one as it didn’t start out on the desktop for me. It actually started&#xD;
out on my iPhone and went I got a Mac late last year it was the natural choice for&#xD;
the desktop as well as the iPhone experience with this thing is flawless as far as&#xD;
I’m concerned.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now the application is pretty much the same on the Mac. Interestingly it turns out&#xD;
that the functionality doesn’t quite cut it on the desktop. Due to the nature of tweets&#xD;
messages need to be as compact as they can be. &#xD;
&lt;/p&gt;&#xD;
        &lt;p align="center"&gt;&#xD;
          &lt;img height="268" alt="http://www.dech.co.uk/wp-content/uploads/2008/07/photo.jpg" src="http://www.dech.co.uk/wp-content/uploads/2008/07/photo.jpg" width="179"&gt;&lt;/img&gt; &lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="270" alt="http://estwitter.com/wp-includes/images/twitteriffic.gif" src="http://estwitter.com/wp-includes/images/twitteriffic.gif" width="256" border="0"&gt;&lt;/img&gt;&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Imagine that you’re posting a link which can easily be 50 - 60 characters; at that&#xD;
point you really want to be able to shorten a link easily and post the short version&#xD;
insteand. Unfortunately Twitterrific doesn’t support this which is fine on the iPhone&#xD;
where cut and paste is not to be found so you tend not to post links. On the desktop&#xD;
though links are thrown left and right so not having the feature is a real pain point&#xD;
– at least for me.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Thus Twitterric was evicted from the Mac desktop but remain on the iPhone as one of&#xD;
the first apps I ever installed on that thing.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;twhirl&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/TweetMeRight_A3B8/image_2.png"&gt;&#xD;
            &lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="244" alt="image" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/TweetMeRight_A3B8/image_thumb.png" width="107" align="right" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt; Before&#xD;
I delve into &lt;a href="http://www.twhirl.org/"&gt;twhirl&lt;/a&gt; a word on &lt;a href="http://www.adobe.com/products/air/"&gt;Adobe&#xD;
AIR&lt;/a&gt;. Not so much because I find the platform interesting but because I find it&#xD;
interesting that as a platform a lot of the ecosystem is made up of … wait for it&#xD;
… &lt;a href="http://www.google.dk/search?q=adobe+air+twitter&amp;amp;sourceid=navclient-ff&amp;amp;ie=UTF-8&amp;amp;rlz=1B3GGGL_en___DK253&amp;amp;aq=t"&gt;Twitter&#xD;
clients&lt;/a&gt;. It’s interesting to me that a service like Twitter can drive a platform&#xD;
like AIR and not the other way around.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
twhirl is pretty much like Twitterrific only the name is quite a bit easier to spell&#xD;
and it supports the link shortening feature I mentioned above. It being an Adobe AIR&#xD;
app also means that it’s cross platform for those us running cross ethnic platforms&#xD;
out there. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
twhirl is like the girlfriend you can’t quite figure out if you want to spend your&#xD;
life with or leave for someone else. I left but ultimately came back so I guess it’s&#xD;
forever between us :)&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
And finally &lt;a href="http://twitter.com/publicvoid_dk"&gt;remember to follow me on Twitter&lt;/a&gt; once&#xD;
you get your favorite client up and running :)&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.publicvoid.dk/aggbug.ashx?id=6b4df832-924d-4a81-a8be-fb8622d27d12"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=XOTUfhkS_ks:TF6N2x9AD4I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=XOTUfhkS_ks:TF6N2x9AD4I:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=XOTUfhkS_ks:TF6N2x9AD4I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?i=XOTUfhkS_ks:TF6N2x9AD4I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=XOTUfhkS_ks:TF6N2x9AD4I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/XOTUfhkS_ks" height="1" width="1"/&gt;</description>
      <comments>http://www.publicvoid.dk/CommentView,guid,6b4df832-924d-4a81-a8be-fb8622d27d12.aspx</comments>
      <category>Blogging</category>
      <category>Community</category>
    <feedburner:origLink>http://www.publicvoid.dk/TweetMeRight.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.publicvoid.dk/Trackback.aspx?guid=20ecfded-6584-4bf6-b26d-43aebd868ef0</trackback:ping>
      <pingback:server>http://www.publicvoid.dk/pingback.aspx</pingback:server>
      <pingback:target>http://www.publicvoid.dk/PermaLink,guid,20ecfded-6584-4bf6-b26d-43aebd868ef0.aspx</pingback:target>
      <dc:creator>S�ren Spelling Lund</dc:creator>
      <wfw:comment>http://www.publicvoid.dk/CommentView,guid,20ecfded-6584-4bf6-b26d-43aebd868ef0.aspx</wfw:comment>
      <wfw:commentRss>http://www.publicvoid.dk/SyndicationService.asmx/GetEntryCommentsRss?guid=20ecfded-6584-4bf6-b26d-43aebd868ef0</wfw:commentRss>
      
      <title>Community Back Channel</title>
      <guid isPermaLink="false">http://www.publicvoid.dk/PermaLink,guid,20ecfded-6584-4bf6-b26d-43aebd868ef0.aspx</guid>
      <link>http://feedproxy.google.com/~r/publicvoid/~3/WGgS7Mh1R-w/CommunityBackChannel.aspx</link>
      <pubDate>Sun, 04 Jan 2009 12:41:19 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/CommunityBackChannel_AFA7/Community-People_2.png"&gt;&#xD;
            &lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 20px 20px; display: inline; border-top: 0px; border-right: 0px" title="Community-People" border="0" alt="Community-People" align="right" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/CommunityBackChannel_AFA7/Community-People_thumb.png" width="238" height="240"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt; Back&#xD;
in May 2008 &lt;a href="http://www.publicvoid.dk/Twittering.aspx"&gt;I wrote a short note&#xD;
about me trying out Twitter&lt;/a&gt;. At the time I just wanted to know more about what&#xD;
Twitter actually was as I heard about time and again on podcasts, blogs, everywhere&#xD;
really.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Interestingly whenever people talked about &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt; it&#xD;
was due to the service being down but still I felt compelled to take it out for a&#xD;
spin.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Twitter of course is the service which enables you to post little notices about what&#xD;
you’re currently doing which doesn’t sound all that useful until you actually sit&#xD;
down and think about it. In reality it turns out that there are numerous applications&#xD;
for a service like that. The notices are limited to only 140 characters which means&#xD;
that you have to be really short and sweet in the stuff you send to the service.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Fast forward to January 2009 with the experiment done and my conclusion is in: Twitter&#xD;
is indeed a service worth paying attention to. Read on to find out why.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now what prompted this post is a question I got from &lt;a href="http://www.kodehoved.dk"&gt;Brian&#xD;
Rasmussen&lt;/a&gt; when I suggested that he take a look at it. Basically he asked why he&#xD;
should use Twitter, a question I didn’t quite know how the answer with anything but,&#xD;
“it’s cool”. Since that time I’ve been wondering what makes Twitter worth my while&#xD;
and yours as well, dear reader.&#xD;
&lt;/p&gt;&#xD;
        &lt;p align="center"&gt;&#xD;
          &lt;a href="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/CommunityBackChannel_AFA7/Jesper-Blad-Jensen-Twitter_2.png"&gt;&#xD;
            &lt;img title="Jesper-Blad-Jensen-Twitter" border="0" alt="Jesper-Blad-Jensen-Twitter" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/CommunityBackChannel_AFA7/Jesper-Blad-Jensen-Twitter_thumb.png" width="526" height="75"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Twitter is a lot of things to a lot of people. The value to me and our little community&#xD;
in particular lies in tying together everybody in a more coherent way than what is&#xD;
possible today. To me at least Twitter is a place where I get to keep in touch with&#xD;
a number of the Danish .NET developers in a far more personal way than what is possible&#xD;
at &lt;a href="http://www.dotnetforum.dk"&gt;DotNetForum&lt;/a&gt;, &lt;a href="http://www.activedeveloper.dk"&gt;ActiveDeveloper&lt;/a&gt;,&#xD;
etc. because the service is geared for throwing stuff out there without thinking too&#xD;
much about it.&#xD;
&lt;/p&gt;&#xD;
        &lt;p align="center"&gt;&#xD;
 &lt;a href="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/CommunityBackChannel_AFA7/Morten-Jokumsen-Twitter_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Morten-Jokumsen-Twitter" border="0" alt="Morten-Jokumsen-Twitter" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/CommunityBackChannel_AFA7/Morten-Jokumsen-Twitter_thumb.png" width="529" height="68"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Why do I call it the back channel of our community? Due to the nature of the messages&#xD;
you stick on Twitter it quickly becomes just little notices about what’s going on&#xD;
right now. For example &lt;a href="http://blog.madskristensen.dk"&gt;Mads&lt;/a&gt; used it to&#xD;
get an idea of which IoC framework to go with, I recently got a Mac and had no clue&#xD;
where to start so I elicited suggestions for apps to use, &lt;a href="http://hartvig.com/"&gt;Niels&lt;/a&gt; uses&#xD;
it for communicating with the Umbraco team from time to time, recently &lt;a href="http://blogs.activedeveloper.dk/deldy/"&gt;Jesper&lt;/a&gt; wanted&#xD;
to know &lt;a href="http://onug.dk/post/2008/12/I-januar-star-menuen-pa-blandede-bolcher--Udvikling-i-MS-Dynamics-og-prc3a6sentation-af-ASPNET-MVC-frameworket.aspx"&gt;what&#xD;
to include in his ASP.NET MVC presentation coming up in ONUG in January&lt;/a&gt;, and &lt;a href="http://www.rasmuskl.dk/"&gt;Rasmus&lt;/a&gt; had&#xD;
a &lt;a href="http://www.rasmuskl.dk/post/A-WinDbg-Debugging-Journey-NHibernate-Memory-Leak.aspx"&gt;memory&#xD;
leak which he needed some input for fixing&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p align="center"&gt;&#xD;
          &lt;a href="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/CommunityBackChannel_AFA7/Mads-Kristensen-Twitter_2.png"&gt;&#xD;
            &lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Mads-Kristensen-Twitter" border="0" alt="Mads-Kristensen-Twitter" src="http://www.publicvoid.dk/content/binary/WindowsLiveWriter/CommunityBackChannel_AFA7/Mads-Kristensen-Twitter_thumb.png" width="515" height="63"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Basically what you get is an inside look in the process leading up to a blog post,&#xD;
presentation, the solution to a giving issue, or whatever; something you don’t really&#xD;
get from reading the final product and often times much more interesting.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I would encourage you to go create an account with Twitter and follow a bunch a people&#xD;
from the Danish .NET community. &lt;a href="http://dotnetforum.dk/blogs/guidmaster/"&gt;Morten&lt;/a&gt; from &lt;a href="http://www.dotnetforum.dk"&gt;DotNetForum&lt;/a&gt; was&#xD;
even kind enough to create a &lt;a href="http://dotnetforum.dk/wikis/community/twitter.aspx"&gt;wiki&#xD;
with the Twitter names of a bunch of the Danish .NET guys&lt;/a&gt; which you can use as&#xD;
a starting point. &lt;a href="http://twitter.com/publicvoid_dk"&gt;You can follow me using&#xD;
my Twitter name  publicvoid_dk&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Of course there are a number of people which I’d like to see get Twitter accounts&#xD;
like &lt;a href="http://www.kodehoved.dk"&gt;Brian Rasmussen&lt;/a&gt;, &lt;a href="http://skarpt.dk/blog"&gt;Søren&#xD;
Skovsbøll&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/ploeh/"&gt;Mark Seemann&lt;/a&gt;, &lt;a href="http://odensefjord.blogspot.com"&gt;Kasper&#xD;
Bo Larsen&lt;/a&gt;, and &lt;a href="http://www.unitofwork.dk"&gt;Martin Bakkegaard Olesen&lt;/a&gt;, &#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.publicvoid.dk/aggbug.ashx?id=20ecfded-6584-4bf6-b26d-43aebd868ef0"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=WGgS7Mh1R-w:TLDyzoDocxE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=WGgS7Mh1R-w:TLDyzoDocxE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=WGgS7Mh1R-w:TLDyzoDocxE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?i=WGgS7Mh1R-w:TLDyzoDocxE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/publicvoid?a=WGgS7Mh1R-w:TLDyzoDocxE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/publicvoid?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/publicvoid/~4/WGgS7Mh1R-w" height="1" width="1"/&gt;</description>
      <comments>http://www.publicvoid.dk/CommentView,guid,20ecfded-6584-4bf6-b26d-43aebd868ef0.aspx</comments>
      <category>Blogging</category>
      <category>Community</category>
    <feedburner:origLink>http://www.publicvoid.dk/CommunityBackChannel.aspx</feedburner:origLink></item>
  </channel>
</rss>
