贝宝分期付款的定期付款

时间:2019-08-30 17:32:57

标签: c# .net vb.net paypal

我想在.NET网站上发起一次捐赠运动,要求人们同意向我的组织捐赠200美元。由于有些人可能没有所有的预付款,所以我想让他们选择现在捐赠50美元或更多,然后将剩余的部分摊派到1-3个额外的每月付款中。

我是否需要针对每种可能的情况设置定期付款按钮,然后使用一些脚本来确定应将用户定向到哪个PayPal表单按钮?还是有一种更灵活的方法?

3 个答案:

答案 0 :(得分:6)

我认为您必须创建一个结算计划。以下摘录来自PayPal SDK。我根据您的需要对其做了一些修改,但是您仍然需要对其进行自定义。

var plan = new Plan
{
    name = "Donation Split Payment",
    description = "Monthly plan for the less fortunate.",
    type = "fixed",
    // Define the merchant preferences.
    // More Information: https://developer.paypal.com/webapps/developer/docs/api/#merchantpreferences-object
    merchant_preferences = new MerchantPreferences()
    {
        setup_fee = GetCurrency("0"),
        return_url = httpContext.Request.Url.ToString(),
        cancel_url = httpContext.Request.Url.ToString() + "?cancel",
        auto_bill_amount = "YES",
        initial_fail_amount_action = "CONTINUE",
        max_fail_attempts = "0"
    },
    payment_definitions = new List<PaymentDefinition>
    {
        // Define a trial plan that will only charge $50 for the first
        // month. After that, the standard plan will take over for the
        // remaining 4 months.
        new PaymentDefinition()
        {
            name = "First Payment",
            type = "REGULAR",
            frequency = "MONTH",
            frequency_interval = "1",
            amount = GetCurrency("50.00"),
            cycles = "1",
            charge_models = new List<ChargeModel>
            {
                new ChargeModel()
                {
                    type = "TAX",
                    amount = GetCurrency("9.99")
                }
            }
        },
        // Define the standard payment plan. It will represent a monthly
        // plan for $50 USD that charges once month for 3 months.
        new PaymentDefinition
        {
            name = "Other payment",
            type = "REGULAR",
            frequency = "MONTH",
            frequency_interval = "1",
            amount = GetCurrency("50.00"),
            // > NOTE: For `IFNINITE` type plans, `cycles` should be 0 for a `REGULAR` `PaymentDefinition` object.
            cycles = "3",
            charge_models = new List<ChargeModel>
            {
                new ChargeModel
                {
                    type = "TAX",
                    amount = GetCurrency("9.99")
                }
            }
        }
    }
};

答案 1 :(得分:0)

我不熟悉“ PayPal-Button”本身,但是我猜想,只是一些参数发生了变化。最有可能出现在URL本身中。 (获取请求)

因此,您可以在网站上放置带有选项的下拉菜单,而不是创建多个按钮,将付款分成n个相等的部分,然后使用此地址重定向到相应的PayPal-URL。

我不知道您的堆栈,但是使用MVC(Razor)和一些Javascript,似乎并不需要付出太多努力。

因此,要么在页面上使用JS单击按钮进行重定向,要么在服务器端进行评估后返回重定向。

如果PayPal使用POST,则可以使用表格,在该表格中,您可以更改表格中其他外部的其他INPUT事件的INPUT值。这将需要JavaScript。
因此,在Select-Click-Event上:设置输入元素的值,“ PayPal按钮”用于POST请求。类似于以下内容。

<script>
  function SetValue(){
    buttonValue.value = selector.value;
  }
</script>
<SELECT id="selector" onClick="SetValue()">
 ... options
</SELECT>
<Form ...>
 <input id="buttonValue" ... />
 <button...>Send</button>
</Form>

答案 2 :(得分:0)

检查此工作流程 https://developer.paypal.com/docs/subscriptions/

https://developer.paypal.com/docs/subscriptions/integrate/#4-create-a-subscription

我没有完整的代码,以前称为计费协议。 Paypal .net sdk已经两岁了。 https://github.com/paypal/PayPal-NET-SDK/blob/develop/Samples/Source/BillingAgreementCreateAndExecute.aspx.cs 在贝宝网站上提到了这一点。 结算协议API 弃用通知:/ v1 / billing-agreements端点已弃用。请改用/ v1 / billing / subscriptions端点。有关详细信息,请参阅订阅集成。