2017-03-07 7 views
2

で支払いを処理するためにストライプのフォームを使用しています。自分のサイトで支払いを処理するためにストライプを使用しています。これを実装するには、checkoutと呼ばれるStripeの埋め込み支払いフォームを使用したいと思います。これまで私が手助けしてくれるドキュメントや最新のサンプルが不足しています。ポストを処理するためにASP .NET MVC

<div class="row"> 
<div class="container col-md-2 col-md-offset-5"> 
    <h5>Upgrade your account</h5> 
    <form action="/Premium/Charge" method="POST"> 
     <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
       data-key="MYKEY" 
       data-amount="1000" 
       data-name="My Project Name" 
       data-description="Premium Account (€10)" 
       data-image="https://stripe.com/img/documentation/checkout/marketplace.png" 
       data-locale="auto" 
       data-zip-code="true" 
       data-currency="eur"> 
     </script> 
    </form> 
</div> 

そして、私のコントローラのアクション:

解決しよう
[HttpPost] 
    [Authorize] 
    public ActionResult Charge(string stripeToken, string stripeEmail) 
    { 
     string apiKey = "MYKEY"; 
     var client = new Stripe.StripeCustomerCreateOptions(); 

     // our customer 
     client.Email = stripeEmail; 
     client.SourceToken = stripeToken; 

     // creating our charge 
     var charge = new Stripe.StripeChargeCreateOptions(); 
     charge.Amount = 1000; 
     charge.Description = "Premium member charge"; 
     charge.Currency = "EUR"; 
     charge.SourceTokenOrExistingSourceId = stripeToken; 

     // calling stripe to make the charge, then update users profile 
     var chargeService = new Stripe.StripeChargeService(); 
     Stripe.StripeCharge stripeCharge = new Stripe.StripeCharge(); 

     // Error arises here 
     dynamic response = chargeService.Create(charge); 

     if (response.Paid) 
     { 
      // successful payment 
      ViewBag.Status = "success"; 
      return View("Result"); 
     } 

     ViewBag.Status = "unsuccesful"; 
     return View("Result"); 
    } 

私はそうのようなフォームが埋め込まれているビューで

+1

はあなたが合格しているすべての引数を収集することができています彼らは実際に要求と一緒に渡されていることを確認するために、フォームには?むしろそれらを使用しようとするよりも? – korben

+1

私はあなたのビューとアクションメソッドのシグネチャにある正確なコードを使ってテストし、すべて正常に動作します。メソッドに[HttpPost]デコレータがないのですか? –

+2

私はそれを実際にコードスニペットに含めるのを忘れました。それはそれを超えています。そのコントローラーから応答が成功したかどうかを確認する方法はありますか? –

答えて

2

I "メートルテストするには、このコードを使用して、それが問題なく動作します。

public class CreditCardController : Controller 
{ 
    public ActionResult Charge() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Charge(string stripeToken, string stripeEmail) 
    { 
     var myCharge = new StripeChargeCreateOptions(); 

     // always set these properties 
     myCharge.Amount = 1000; 
     myCharge.Currency = "eur"; 

     myCharge.ReceiptEmail = stripeEmail; 
     myCharge.Description = "Test Charge"; 
     myCharge.SourceTokenOrExistingSourceId = stripeToken; 
     myCharge.Capture = true; 

     var chargeService = new StripeChargeService(); 
     StripeCharge stripeCharge = chargeService.Create(myCharge); 

     return View(); 
    } 
} 

ビューコードキーはストライプのドキュメントからデモキーである私が使用しているテストのクレジットカード番号は4242424242424242です。

<div class="row"> 
    <div class="container col-md-2 col-md-offset-5"> 
     <h5>Upgrade your account</h5> 
     <form action="/CreditCard/Charge" method="POST"> 
      <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
        data-key="pk_test_6pRNASCoBOKtIshFeQd4XMUh" 
        data-amount="1000" 
        data-name="My Project Name" 
        data-description="Premium Account (€10)" 
        data-image="https://stripe.com/img/documentation/checkout/marketplace.png" 
        data-locale="auto" 
        data-zip-code="true" 
        data-currency="eur"> 
      </script> 
     </form> 
    </div> 
</div> 
+0

を参照します。私も同じことを試みていますが、ここで私は1つのアセンブリ関連の問題をラインで取得しています StripeCharge stripeCharge = chargeService.Create(myCharge); ファイルまたはアセンブリ 'Newtonsoft.Json、Version = 9.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)。 この問題を教えてもらえますか? – Madhav

0

あなたが正常に動作する必要があります動的応答を行う前に、行を削除します。あなたはストライプサーバーに2つの要求を作っていた。