現在のプロジェクト:私はthis exampleを使用していますペイパル処理 - TransactionIdの、CorrelationIdををつかむ必要があり、タイムスタンプ
- ASP.NET 4.5.2
- MVC 5
- ペイパルAPI
私がタイトルに3つの値を返す他の方法を知らないので、自分自身でPayPalトランザクションを構築してください(そして、私のコードは事実上同じです)。
私の主な問題は、私が利用している例が、はるかに古いWebフォームアプリケーションで使用していたものよりはるかに簡潔でコンパクトであることです。そのため、どこで、どのように私が必要とする3つの値。
私の最初の考えは右のACKの後にそうすることで、確かに私はCorrelationIdをだけでなく、タイムスタンプを取得することができたが、これはPayPalのサイトにオフcartedされているユーザに前だったので(でサンドボックスこのケース - if
に含まれているreturn new PayPalRedirect
を参照)、TransactionIdは空白です。この例では、PayPalは最初にPayPalにユーザーを送ったアクションに戻ることなく、ユーザーをSuccessページに明示的にリダイレクトします。Token
とPayerId
以外のGET値はURLに表示されません、TransactionIdを私に提供できるものはずっと少なくなっています。
提案?
私はまた、次の例を見てきました:
- For ASP.NET Coreは、特にによる
appsettings.json
に私の現在のプロジェクトに適応する方法がわからないでしたが、それは非常によくやったに見えました。値がどのようにリストに集計されたかは本当に気に入っていました。 - For MVC 4しかし、私は
ACK
がsuccess
またはsuccesswithwarning
を特定するために使用されていたので見つけることができませんでした。
私はまた、PayPalのコンテンツがフル回転での消火ホースから飲むしようとしているようであることが判明している - だけでなく、コンテンツが(FTW、Webフォームのコード!)絶望的に時代遅れだったが、また非常に多くありましたどの例が最も適しているかを判断するのに数日を要した別の例があります。
ご協力いただければ幸いです。
編集:リンクされたコードを修正することで私の最初の試みは、この部分があります:using()
含む
values = Submit(values);
var ack = values["ACK"].ToLower();
if(ack == "success" || ack == "successwithwarning") {
using(_db = new ApplicationDbContext()) {
var updateOrder = await _db.Orders.FirstOrDefaultAsync(x => x.OrderId == order.OrderId);
if(updateOrder != null) {
updateOrder.OrderProcessed = false;
updateOrder.PayPalCorrelationId = values["CORRELATIONID"];
updateOrder.PayPalTransactionId = values["TRANSACTIONID"];
updateOrder.PayPalTimeStamp = values["TIMESTAMP"];
updateOrder.IPAddress = HttpContext.Current.Request.UserHostAddress;
_db.Entry(updateOrder).State = EntityState.Modified;
await _db.SaveChangesAsync();
}
}
return new PayPalRedirect {
Token = values["TOKEN"],
Url = $"https://{PayPalSettings.CgiDomain}/cgi-bin/webscr?cmd=_express-checkout&token={values["TOKEN"]}"
};
}
内のすべてとは私の追加されたコンテンツです。私が言及したように、CorrelationId
とTimeStamp
はうまくいきますが、私はまだTransactionId
を手に入れました。
編集2:
多くの問題 - サンドボックスのサイトから「成功」しているトランザクションが(にreturnurlが呼び出さなっている)でも、私のファシリテーターと買い手のアカウントに適切に反映されていません私は買い手のPayPal口座から直接支払いを行います(クレジットカードを使用しない)。私は、Devアカウント全体(アカウント - >プロフィール - >残高またはアカウント - >通知)またはサンドボックスフロントエンドの購入者アカウントを介して、買い手のアカウントでトランザクションを見るはずです。それでも、私をReturnUrlパスに戻す複数のトランザクションはありますが、どちらのトランザクションもありません。
編集3:
さて、これは本当に、本当に奇妙です。私は細かい歯のついた櫛ですべての設定を行って、意図的に何かはがすべきであることを確認するためにエラーを導入しました。私の通知には何も表示されず、別のアカウント(ファシリテーターとバイヤー)間で金額が移動しないということを除いて、プロセス全体がスムーズに進行していることが判明しました。すべての取引が/dev/null
になっているようですが、プロセスは成功しています。
編集4:ヒント!
買い手が取引を承認するサンドボックスでは、「完了する前に取引を確認できます」などの小さなメモがあります。追加のページが表示されないことを示唆していますユーザーは不注意に成功ページに戻されています。なぜ成功のページ?全く分からない。しかし、それは起こっている。
ええ、週末にはそれも分かりました。 PayPalを行う方法は非常に多様ですので、あまり例がありません。私はそれを二乗してしまいましたが、実際に答えを取ったときのあなたの答えを正しいものとしてマークし、頭に問題を釘付けにします。私は、(同じ位置に他の貧しい魂のための)完全なソリューションを投稿し、それにリンクします。 –