2016-09-09 15 views
1

Paypalデベロッパーサイトで提案されているコードを追加しました。.Net In-Context PopupウィンドウにPaypal画面が表示されない

<form id="myPaymentContainer" method="post"></form> 
<script type="text/javascript"> 
    window.paypalCheckoutReady = function() { 
     paypal.checkout.setup('XUM4RANUNKG4U', 
     { 
      environment: 'sandbox', 
      container: 'myPaymentContainer' 
     }); 
    }; 
</script> 
<script type="text/javascript" src="//www.paypalobjects.com/api/checkout.js" async></script> 

インコンテキストチェックアウトの概要は、ステップを説明します

はPayPalでチェックアウトするには、買い手は、PayPalがボタンをチェックしてくださいクリックします。ボタンのクリックに応じて

は、これらのアクションが発生します。

インコンテキストJavaScriptがポップアップウィンドウを開き、 フォームがエクスプレスチェックアウトの支払いを作成するために提出するのを待ちます。成功した作成 支払い呼び出しは、後続の手順で使用するHATEOASリンクを返します。 レスポンスのリダイレクトURLを使用して、購入者を PayPalのURLにリダイレクトします。 In-Context JavaScriptを正しく統合している場合は、ポップアップウィンドウがリダイレクトを管理します。私のOnLoadイベントのために

、私はこれをテストしています:

var config = ConfigManager.Instance.GetProperties(); 
    if (Page.IsPostBack) 
    { 
     var accessToken = new OAuthTokenCredential(config).GetAccessToken(); 
     var apiContext = new APIContext(accessToken); 



     var transaction = new Transaction() 
     { 
      amount = new Amount() 
      { 
       currency = "USD", 
       total = "20" 
      }, 
      description = "My product description", 
      item_list = new ItemList() 
      { 
       items = new List<Item>() 
       { 
        new Item() 
        { 
         name="The Product", 
         currency="USD", 
         price="20", 
         quantity = "1" 
        } 
       } 
      }, 
      invoice_number = "123" 
     }; 

     var payer = new Payer() 
     { 
      payment_method = "paypal" 
     }; 

     var payment = new Payment() 
     { 
      intent = "sale", 
      transactions = new List<Transaction>() { transaction }, 
      payer = payer, 
      redirect_urls = new RedirectUrls 
      { 
       cancel_url = "/Home.aspx", 
       return_url = "/Checkout.aspx", 
      } 
     }; 

     var createdPayment = payment.Create(apiContext); 
     var paypalLinks = createdPayment.links; 

     if (paypalLinks != null) 
     { 
      var redirectLink = paypalLinks.FirstOrDefault(lnk => lnk.method == "REDIRECT"); 
      if (redirectLink != null) 
      { 
       Response.Redirect(redirectLink.href); 
      } 
     } 
    } 

私は<form>にaction属性を追加すると、ポップアップウィンドウがアクションに移入されます。私は、ユーザーがログインできるように、ポップアップウィンドウにPaypal HTMLを入力することを期待していました。フォーム上のアクションを削除すると、ボタンをホストしている同じページがポップアップウィンドウに表示されます。

更新

私が正しく動作し、これを手に入れました。代わりに、フォームタグを使用する、私はDIVを使用した:

<div id="myPaymentContainer" /> 
<script type="text/javascript"> 
    window.paypalCheckoutReady = function() { 
     paypal.checkout.setup('XUM4RANUNKG4U', 
     { 
      environment: 'sandbox', 
      container: 'myPaymentContainer' 
     }); 
    }; 
</script> 
<script type="text/javascript" src="//www.paypalobjects.com/api/checkout.js" async></script> 

Iロジックを少し再構築、それはのResponse.Redirect(リンク)と基本的に同じコールを行います。お役に立てれば。

答えて

0

私はこれを投稿しており、質問に実際の回答があると考えている人のために私の答えとして設定しています。

私の質問が修正されました。

関連する問題