使用C#调用Dwolla场外网关/直接提交

使用C#调用Dwolla场外网关/直接提交,c#,dwolla,C#,Dwolla,我正试图通过“直接提交”工作流()将Dwolla的场外网关应用到我定制的基于ASPX/C的网站中 我已经能够使用它们提供的脚本成功地将Dwolla按钮添加到ASPX页面: <script src="https://www.dwolla.com/scripts/button.min.js" class="dwolla_button" type="text/javascript" data-key="ConsumerKeyObtainedFromDwolla" data

我正试图通过“直接提交”工作流()将Dwolla的场外网关应用到我定制的基于ASPX/C的网站中

我已经能够使用它们提供的脚本成功地将Dwolla按钮添加到ASPX页面:

<script
    src="https://www.dwolla.com/scripts/button.min.js" class="dwolla_button" type="text/javascript"
    data-key="ConsumerKeyObtainedFromDwolla"
    data-redirect="RedirectPage.aspx"
    data-label="Dwolla"
    data-name="MyNameGoesHere"
    data-description="MyDescriptionGoesHere"
    data-amount="123.45"
    data-shipping="0"
    data-tax="0"
    data-guest-checkout="true"
    data-type="freetype"
    >
</script>
这工作得很好,所以我希望对Dwolla使用的脚本也这样做(如上所述)。不幸的是,这种方法没有被证明是成功的。我尝试的第一个选项是基于Dwolla脚本中的数据字段模拟PayPal重定向:

string txtRedirectURL = "";
txtRedirectURL += "https://www.dwolla.com/payment/pay?";
txtRedirectURL += "key=ConsumerKeyObtainedFromDwolla";
txtRedirectURL += "&label=Dwolla";
txtRedirectURL += "&name=MyNameGoesHere";
txtRedirectURL += "&description=MyDescriptionGoesHere";
txtRedirectURL += "&amount=123.45";
txtRedirectURL += "&shipping=0.00";
txtRedirectURL += "&tax=0.00";
Response.Redirect(txtRedirectURL);
这确实尝试将我导航到德沃拉的页面,但它最终将我导航到德沃拉的404页面(哭泣的蓝色考拉熊)。我还添加了以下几行的不同版本,但没有获得更好的成功:

txtRedirectURL += "&signature=HMACSHA1Hash;
txtRedirectURL += "&test=true";
txtRedirectURL += "&destinationid=UserIDObtainedFromDwolla";
txtRedirectURL += "&orderid=999;
txtRedirectURL += "&timestamp=" + txtTimeStamp;
txtRedirectURL += "&allowFundingSources=true";
我的假设是:

  • 我的URL中的某些内容会出错,而Dwolla的错误处理会将我转到404页面,而不是显示错误(正如我在玩按钮时看到的)

  • button.min.js脚本正在做一些我需要在我的C#中重新创建的有趣的事情。我已经复习过了,但不能确定遗漏的步骤是什么

  • 我还尝试了一种更直接的方法,尝试从C#内部执行脚本:

    string dwollaScript=”
    ";
    System.Web.UI.ScriptManager.RegisterStartupScript(this,this.GetType(),“123”,dwollaScript.ToString(),false);
    
    当绑定到按钮单击时,它会成功触发,但它所做的只是在我的页面上显示一个Dwolla按钮,一旦它发回。它不像常规的Dwolla按钮那样引导我到Dwolla


    有什么想法吗?

    首先,一个重要的提示:

    更好的解决方案是使用请求而不是直接提交,因为它不允许用户修改任何请求的参数。您只需要发布到端点并接收一个签出ID,您可以使用该ID生成一个签出URL供用户遵循。不需要JS欺骗

    我想你会觉得这很有帮助。它支持网关请求和回调处理两种类型

    回答您的问题:

    看起来您正在尝试使用querystring变量中的签出参数,这不是请求签出会话的有效方法

    “直接提交”工作流要求您创建一个将发布到的表单。例如:

        <form accept-charset="UTF-8" action="https://www.dwolla.com/payment/pay" method="post">
        <input id="key" name="key" type="hidden" value="abcdefg" />
        <input id="signature" name="signature" type="hidden" value="abcd" />
        <input id="callback" name="callback" type="hidden" 
        value="http://www.mywebsite.com/callback.aspx" />
        <input id="redirect" name="redirect" type="hidden" 
        value="http://www.mywebsite.com/redirect.aspx" />
        <input id="test" name="test" type="hidden" value="true" />
        <input id="name" name="name" type="hidden" value="Purchase" />
        <input id="description" name="description" type="hidden" 
        value="Description" />
        <input id="destinationid" name="destinationid" type="hidden" 
        value="812-111-1111" />
        <input id="amount" name="amount" type="hidden" value="1.00" />
        <input id="shipping" name="shipping" type="hidden" value="0.00" />
        <input id="tax" name="tax" type="hidden" value="0.00" />
        <input id="orderid" name="orderid" type="hidden" value="188375" />
        <input id="timestamp" name="timestamp" type="hidden" 
        value="1323302400" />
    
        <button type="submit">Submit Order</button>
        </form>
    
    
    提交订单
    
    string dwollaScript = "<script
        src="https://www.dwolla.com/scripts/button.min.js" class="dwolla_button" type="text/javascript"
        data-key="ConsumerKeyObtainedFromDwolla"
        data-redirect="RedirectPage.aspx"
        data-label="Dwolla"
        data-name="MyNameGoesHere"
        data-description="MyDescriptionGoesHere"
        data-amount="123.45"
        data-shipping="0"
        data-tax="0"
        data-guest-checkout="true"
        data-type="freetype"
        >
    </script>";
    System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "123", dwollaScript.ToString(), false);
    
        <form accept-charset="UTF-8" action="https://www.dwolla.com/payment/pay" method="post">
        <input id="key" name="key" type="hidden" value="abcdefg" />
        <input id="signature" name="signature" type="hidden" value="abcd" />
        <input id="callback" name="callback" type="hidden" 
        value="http://www.mywebsite.com/callback.aspx" />
        <input id="redirect" name="redirect" type="hidden" 
        value="http://www.mywebsite.com/redirect.aspx" />
        <input id="test" name="test" type="hidden" value="true" />
        <input id="name" name="name" type="hidden" value="Purchase" />
        <input id="description" name="description" type="hidden" 
        value="Description" />
        <input id="destinationid" name="destinationid" type="hidden" 
        value="812-111-1111" />
        <input id="amount" name="amount" type="hidden" value="1.00" />
        <input id="shipping" name="shipping" type="hidden" value="0.00" />
        <input id="tax" name="tax" type="hidden" value="0.00" />
        <input id="orderid" name="orderid" type="hidden" value="188375" />
        <input id="timestamp" name="timestamp" type="hidden" 
        value="1323302400" />
    
        <button type="submit">Submit Order</button>
        </form>