6

私はpaypalアダプティブペイメントメソッドを実装し、ウェブフローを使用しています。 支払いをした後、明示的に戻るボタンをクリックすると、戻りURLは2回コールされますが、自動リダイレクトを待つと1回だけ呼び出されます。PaypalアダプティブペイメントリターンURLは2回呼びます

返信URLが2回呼び出されている理由を理解できません。

アドバイスをしてください。

私は以下のコードを使用しています。

public static ActionOutput MakeTransactionUsingPaypal(PaymentDetails payment, ShopCart shop_cart) 
{ 
    ReceiverList receiverList = new ReceiverList(); 
    receiverList.receiver = new List<Receiver>(); 
    string action_type = "PAY_PRIMARY"; 
    decimal amnt_to_admin = ((shop_cart.TotalAmountToBePaid * 10)/100); 

    /*Total Amount to Admin Account */ 
    Receiver rec1 = new Receiver(shop_cart.TotalAmountToBePaid); 
    rec1.email = Config.AdminPaypalBusinessAccount; 
    rec1.primary = true; 

    /*Amount after deducting to Admin Commision to Seller */ 
    Receiver rec2 = new Receiver(Math.Round((shop_cart.TotalAmountToBePaid - amnt_to_admin), 2, MidpointRounding.ToEven)); 
    rec2.email = payment.PaypalEmail; // "[email protected]"; 

    receiverList.receiver.Add(rec1); 
    receiverList.receiver.Add(rec2); 
    PayRequest req = new PayRequest(new RequestEnvelope("en_US"), action_type, Config.PaypalCancelURL, "USD", receiverList, Config.PaypalReturnURL); 

    // All set. Fire the request    
    AdaptivePaymentsService service = new AdaptivePaymentsService(); 

    PayResponse resp = null; 
    //TransactionDetail details = new TransactionDetail(); 

    resp = service.Pay(req); 
    String PayKey = resp.payKey; 
    String PaymentStatus = resp.paymentExecStatus; 
    ResponseEnvelope ResponseEnvelope = resp.responseEnvelope; 
    PayErrorList errorList = resp.payErrorList; 
    List<ErrorData> errorData = resp.error; 
    if (errorData.Count > 0) 
    { 
     return new ActionOutput 
     { 
      Status = ActionStatus.Error, 
      Message = errorData[0].message 
     }; 
    } 
    FundingPlan defaultFundingPlan = resp.defaultFundingPlan; 
    WarningDataList warningDataList = resp.warningDataList; 
    string redirectUrl = null; 
    if (!(resp.responseEnvelope.ack == AckCode.FAILURE) && 
     !(resp.responseEnvelope.ack == AckCode.FAILUREWITHWARNING)) 
    { 
     redirectUrl = ConfigurationManager.AppSettings["PAYPAL_REDIRECT_URL"] + "_ap-payment&paykey=" + resp.payKey; 

    } 
    return new ActionOutput 
    { 
     Status = ActionStatus.Successfull, 
     Message = "Redirecting to paypal...", 
     Results = new List<string> { redirectUrl, resp.payKey } 
    }; 
} 
+1

これを確認できます。私の特別な設定はRuby 1.9.3/Rails 3.2.13で、 'paypal-sdk-adaptivepayments' gemを使用しています。 –

+0

@Oshuma:解決策はありましたか、それともpaypalの終わりにバグですか? –

答えて

2

@jitendra、私はこれと同じ問題があったとPayPalは、しばらくして、戻りURLにユーザーをリダイレクトするサーバーサイドスクリプトを使用していることが分かったと、我々は明示的に戻るボタンをクリックし、その後、PayPalのサーバースクリプトは再び独自のリターンURLにヒットします。したがって、リターンURLに2つの応答/ヒットが得られます。

ペイパルで支払いが行われた後に私たちが受け取る返答の数を確認し/維持することで、これ以上のことができます。

私たちは、クライアント側のクッキーやセッションやそれ以外の何かを使ってサーバ上でクッキーを使ってこれを維持することができます。

これはうまくいくと思います。

関連する問題