そう..... どうやら Paypal 開発者は 2013 年に新しいウェブサイトのすべてを変更することを決定したようで、ここ数日間、私の人生は惨めなものになっています。Paypalをウェブサイトに統合するのはまったく初めてであることに注意してください。このチュートリアルに従おうとしましたが、2009 年のものです: http://www.codeproject.com/Articles/42894/Introduction-to-PayPal-for-C-ASP-NET-developers
Paypal API を使用していません。すべきかどうかわかりませんか?
これが私がしたことです:
1) https://developer.paypal.com/にアクセスし、自分のペイパル アカウントでログインしました。
2) これは難しい部分の 1 つです。私が確認したチュートリアルでは、「事前構成済みのテスト アカウント」を作成するオプションがありましたが、もう利用できません。そこで、新しい [アカウントの作成] ボタンを使用して 2 つのテスト アカウント (またはそう思う) を作成しました。1 つの個人 (買い手) と 1 つのビジネス (売り手)。これらのテスト アカウントのメール アドレスが存在する必要があるかどうか、またはそれらが架空のものである可能性があるかどうかについては、チュートリアルは言及されていません。
3) テスト販売者アカウントで、CallbackUrl を使用して AutoReturn を有効にし、支払いデータ転送 (PDT) を有効にして、web.config にトークンを配置しました。
4) もう一度チュートリアルに従って、.Net Visual Studio プロジェクトを作成しました。Default.aspx、Callback.aspx、および Cancelled.aspx という非常に単純なものです。トランザクションが成功したかどうかを確認するためのコールバックと、ユーザーがトランザクションをキャンセルしたかどうかを確認するための Canceled。
5) Default.aspx のコード/Paypal 隠しフィールド変数は次のとおりです。本当に空想的なものは何もありません:
<form id="form1" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" runat="server">
<div>
<!-- Type: Buy Now/Simple Payment -->
<input type="hidden" name="cmd" value="_xclick" />
<!-- PayPal ID or an email address associated with your PayPal account -->
<input type="hidden" name="business" value="THE-SELLER-MAIL-ADRESS" />
<!-- Name of service selected -->
<input type="hidden" name="item_name" value="Forfait Regulier" />
<!-- Currency -->
<input type="hidden" name="currency_code" value="CAD" />
<!-- Return method: 2 – the buyer’s browser is redirected to the return URL by using the POST method, and all payment variables are included -->
<input type="hidden" name="rm" value="2" />
<!-- Button text -->
<input type="hidden" name="cbt" value="Retourner sur Bloc D'Affaires" />
<!-- Cancel callback url -->
<input type="hidden" name="cancel_return" value="http://dev.triarts.ca/Pages/Cancelled.aspx" />
<!-- Amount -->
<input type="hidden" name="amount" value="10.00" />
<!-- Don't show Shipping adress form -->
<input type="hidden" name="no_shipping" value="1" />
<!-- Don't show seller note box -->
<input type="hidden" name="no_note" value="1" />
<!-- Button -->
<input type="submit" value="Payer" />
</div>
</form>
6) Callback.aspx のコード ビハインド。上記の 2009 年のチュートリアルから引用および改変されています。
protected void Page_Load(object sender, EventArgs e)
{
string authToken = WebConfigurationManager.AppSettings["PDTToken"];
//read in tx token from querystring
string txToken = Request.QueryString.Get("tx");
string query = string.Format("cmd=_notify-synch&tx={0}&at={1}",
txToken, authToken);
// Create the request back
string url = WebConfigurationManager.AppSettings["PayPalSubmitUrl"];
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
// Set values for the request back
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = query.Length;
// Write the request back IPN strings
StreamWriter stOut = new StreamWriter(req.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(query);
stOut.Close();
// Do the request to PayPal and get the response
StreamReader stIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = stIn.ReadToEnd();
stIn.Close();
// If response was SUCCESS, parse response string and output details
if (strResponse.StartsWith("SUCCESS"))
{
Label1.Text = "Success";
}
else
{
Label1.Text = "Oooops, something went wrong...";
}
}
7) そこまでは、それほど複雑ではありません。その後、まず Paypal 開発者アカウントにログインします。プロジェクトを開始してテストします。今すぐ購入ボタンを押すと、予想どおり Paypal Sandbox Test Store にリダイレクトされます。購入者テスト アカウントでログインし、[今すぐ支払う] をクリックします。プロセス。取引成功。期待どおり、ページから Callback.aspx にリダイレクトされ、成功メッセージが表示されます。それほどぼろぼろではありません。
8) しかし、ここにもう 1 つのトリッキーな部分があります。Paypal 開発者サイトで、支払いが送信/受信されたことを示す買い手/売り手の通知が表示されます。サンドボックスでテスト購入者としてログインし、最近のアクティビティを確認します。エントリには、支払いが完了し、完了 (ステータス) が示されています。テスト販売者としてログインし、最近のアクティビティを確認しましたが、トランザクション エントリが表示されませんが、Paypal の残高が増えています。これは、支払いが追加されたことを意味します?!? ...
わかりません…こんなことになるのでしょうか?私は何か間違ったことをしましたか?これらの設定でライブに移行すると、すべてがうまくいかなくなりますか?
あまり役に立たなかったビデオ チュートリアルでは、売り手のテスト アカウントにトランザクション エントリがはっきりと表示されていました。なぜ私のものや、これまでに行った膨大な数のテスト トランザクションが表示されなかったのですか?
誰でもプロセスが合法であることを確認できますか? それは私を大いに安心させます。これについて本当によくわからないとき、私はお金をいじることに不快感を覚えます. このコードは、データベースを更新して支払いが完了またはキャンセルされたことを示すなど、支払い後のロジックを作成するのに十分でしょうか? もっと簡単な方法があれば、遠慮なく教えてください。
事前にありがとうございました。壮大な小説で申し訳ありません。