2

ペイパルのサブスクライブボタンがあるasp.netMVC4アクションがあります。

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" id="payPalForm">
                <input type="hidden" name="item_number" value="@item.Id">
                <input type="hidden" name="item_name" value="@item.Name">
                <input type="hidden" name="src" value="1">@*Recurring until user cancels*@
                <input type="hidden" name="cmd" value="_xclick">
                <input type="hidden" name="p3" value="1"> @*Billing cycle amount*@
                <input type="hidden" name="t3" value="M"> @*billing cycle period - Month*@
                <input type="hidden" name="no_note" value="1">
                <input type="hidden" name="business" value="dude@dude.com">@*Hiva's paypal account*@
                <input type="hidden" name="currency_code" value="USD">
                <input type="hidden" name="return" value="@returnUrl">
                <input type="hidden" name="amount" id="amount" value="@item.Price">
                <input type="submit" name="Submit" value="Subscribe">
            </form>

返信URLで、フォームの詳細や支払いが完了したかどうかなどを確認したいというアクションが発生します。これは私が持っているものです:

        public ActionResult PaymentConfirm(FormCollection form)
    {
        //if successful, blah blah
        var user = User.Identity.Name;
        //Merchant merch = ctx.Merchants.Single(x => x.User.UserName == user);
        //merch.Plan = plan;

        return RedirectToAction("Index", "Merchant");
    }

どうすればこのデータを取得できますか?

4

2 に答える 2

2

コメントが述べたように、解決策はIPNです。基本的に、IPNは、販売ツールの下でマーチャントアカウントに設定するURLです。

  1. アクションを指すURLを作成する必要があります。(ローカルで行うには、サイトを公開するためにポート転送を行う必要があります)

  2. IPNには、必要なすべての情報が含まれています。支払いが行われるたびに電話がかかってきます。また、成功したか失敗したかにかかわらず、支払いステータスが表示されます。

参照できるコードサンプルへのリンクは次のとおりです。

https://www.x.com/developers/PayPal/documentation-tools/code-sample/216623

更新:IPNが舞台裏でどのように機能するかについての詳細は、次のリンクを参照してください。

https://www.paypal.com/cgi-bin/webscr?cmd=p/acc/ipn-info-outside

于 2012-12-05T00:02:07.080 に答える
0

PayPal REST APIを使用する場合は、次のことを実行できます。

        // You create the ProcessPayment() method
        string jsonResponse = ProcessPayment(model);

        var jss = new JavaScriptSerializer();
        Payment payment = jss.Deserialize<Payment>(jsonResponse); 

        APIContext apiContext = Configuration.GetAPIContext();
        Payment originalPayment = Payment.Get(apiContext, payment.id);
于 2013-12-23T04:54:50.293 に答える