1

「直接送信」ワークフロー ( https://developers.dwolla.com/dev/pages/gateway#submit-directly ) を介して、カスタム ASPX/C# ベースの Web サイトに Dwolla のオフサイト ゲートウェイを利用しようとしています。

彼らが提供するスクリプトを使用して、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>

ただし、同じページに PayPal ボタンも含める必要があり、スクリプト入力タグが競合することは望ましくありません。また、変数 (コンシューマー キー、タイムスタンプ、注文 ID の HMAC-SHA1 16 進数ハッシュなど) を簡単に入力し、javascript を使用せずにいくつかの計算を実行したいと考えています。したがって、私の目標は、ページの C# コード ビハインドでこれをすべて行うことです。

最初のステップは、単純に PayPal スクリプトからフォーム タグを削除し、PayPal の PostBackURL を持つ ASP ボタンを追加することでした。これでうまくいったので、さらに ASPX から PayPal セクションを完全にリファクタリングし、C# コードを実装して、PayPal スクリプトの内容に基づいてリダイレクト URL を作成しました。

string txtRedirectURL = "";
txtRedirectURL += "https://www.paypal.com/cgi-bin/webscr?&cmd=_xclick";
txtRedirectURL += "&business=A1B2C3D4";
txtRedirectURL += "&lc=US";
...
txtRedirectURL += "&item_name=abcdefg";
txtRedirectURL += "&amount=123.45";
txtRedirectURL += "&currency_code=USD";
Response.Redirect(txtRedirectURL);

これはうまく機能したので、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);

これは確かに Dwolla のhttps://www.dwolla.com/payment/payページに誘導しようとしますが、最終的には Dwolla の 404 ページ (泣いている青いコアラ) に誘導されます。また、次の行のさまざまなバージョンを追加しましたが、うまくいきませんでした。

txtRedirectURL += "&signature=HMACSHA1Hash;
txtRedirectURL += "&test=true";
txtRedirectURL += "&destinationid=UserIDObtainedFromDwolla";
txtRedirectURL += "&orderid=999;
txtRedirectURL += "&timestamp=" + txtTimeStamp;
txtRedirectURL += "&allowFundingSources=true";

私の仮定は、次のいずれかです。

  1. URL の何かが問題を引き起こし、Dwolla のエラー処理によって、エラーが表示される代わりに 404 ページが表示されます (ボタンをいじったときに見たように)

  2. button.min.js スクリプトは、C# で再作成する必要がある奇妙なことを行っています。私はそれをレビューしましたが、その欠けているステップが何であるかについて頭も尻尾も作ることができません.

また、C# 内からスクリプトを実行するための、より直接的なアプローチも試みました。

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);

ボタンのクリックにバインドすると、これは正常に起動しますが、ポストバックすると、ページに Dwolla ボタンが表示されるだけです。通常の Dwolla ボタンのように Dwolla に移動しません。

何かご意見は?

4

1 に答える 1

0

まず、重要な注意事項:

より良い解決策は、直接送信する代わりにサーバーからサーバーへのチェックアウト要求を使用することです。これは、ユーザーが要求のパラメーターを変更することを許可しないためです。エンドポイントに POST し、チェックアウト ID を受け取るだけで済みます。この ID を使用して、ユーザーがたどるチェックアウト URL を生成できます。JS の策略は必要ありません。

このDwolla C# ラッパーが役立つと思います。ゲートウェイ リクエストとコールバック処理の両方のタイプをサポートします。

あなたの質問に答えるには:

クエリ文字列変数のチェックアウト パラメータを使用してhttps://www.dwolla.com/payment/payを取得しようとしているようですが、これはチェックアウト セッションを要求する有効な方法ではありません。

直接送信ワークフローでは、 https: //www.dwolla.com/payment/pay に POST するフォームを作成する必要があります。例えば:

    <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>
于 2013-08-06T22:01:34.497 に答える