私はPayPal Adaptive Paymentを使用する電子商取引のWebサイトを持っています。アダプティブペイメントはPayPalから生成されるPayKeyを要求して請求書を作成します。データベースの値を待ってから続ける方法
await Task.Run<Task>(async() =>
{
var payResponse = await _payPalApplicationService.ProceedWithPayPal(currentEvent.Id, order.InvoiceId, order.TrackingId, owners.Single(), vModel.TotalPrice, vModel.DeliveryPriceTotal, orderToAdd.TotalTaxes, orderToAdd.SalesRate + orderToAdd.SalesRateTaxes, vModel.SKUViewModels, _payPalApplicationService.PayPalCore._serviceEndPointUrl);
order.PayKey = payResponse.payKey;
_orderService.Update(order);
await _unitOfWorkAsync.SaveChangesAsync();
});
問題I:PayKeyを取得するための遅延は、ユーザーが以下のコードを参照してください、PayPalにリダイレクトされる前に、他のいくつかの質問に答える一方で、私は、別のスレッドでコードを置く考えを持っていたように、十分な長さでありますPayPalにリダイレクトされる前にPayKeyが生成されていないように、いくつかのユーザーが十分に速く進むことができます。
ユーザーをPayPalにリダイレクトする前にPayKeyを取得していることを確認するために何かできることは知っていましたか?スレッドタスクは、リダイレクションとは異なるコントローラアクションで実行されます。
は、それは間違いなく、無国籍のMVCの原則に違反しますが、本当に簡単な解決策は、セッションに対してPayKey検索タスクを格納するだろう
デビッド
回答ありがとうございます。残念ながら、リダイレクトはタスクが完了したかどうかに関係なく行われます。私はpayPalTask.Wait()を試した。どちらもうまくいかなかった。 –
Hmmm。私は単純な 'Task.Delay'で非同期関数を模擬してテストしました。最初の関数でも 'await'をやっていないと確信していますか? –
答えにあなたのテストを書き留めますか?私は何かが恋しいと思う。 –