代码之家  ›  专栏  ›  技术社区  ›  MyDaftQuestions

如何将HTML表单转换为C PayPal用于PayPal订阅

  •  4
  • MyDaftQuestions  · 技术社区  · 6 年前

    我有下面的html,在我的测试环境中,它可以很好地用于订阅付款。

    <form action="paypalWebAddress" method="post" target="_top">
        <input type="hidden" name="cmd" value="_xclick-subscriptions"/>                        
        <input type="hidden" name="business" value="myPaypalAccountId"/>
        <input type="hidden" name="paymentaction" value="sale"/>
        <input type="hidden" name="item_name" value="Subscription For abc123"/>
        <input type="hidden" name="currency_code" value="GBP"/>
        <input type="hidden" name="no_note" value="1" />
        <input type="hidden" name="a3" value="50"/>
        <input type="hidden" name="p3" value="6"/>
        <input type="hidden" name="t3" value="M"/>
        <input type="hidden" name="src" value="1" />
        <input type="hidden" name="srt" value="0" /><!--needs to be never ending-->
        <input type="hidden" name="return" value="www."/>
        <input type="hidden" name="notify_url" value="www."/>
        <input type="hidden" name="cancel_url" value="www."/>
        <input type="hidden" name="custom" value="abc123"/>
        <input TYPE="hidden" name="charset" value="utf-8">
        <input type="hidden" name="bn" value="Me_Subscribe_WPS_UK" />
        <input type="submit" name="submit" value="Make Payment"/>
    </form>
    

    我马上就要上线了,担心有人很容易操纵dom,我突然发送虚假付款。我觉得从这些代码中发布这些值会更安全,所以用户不能篡改这些值,但是用户仍然需要在他们的浏览器中使用PayPal接口来登录和订阅。

    PayPal-NET-SDK 有一个快速的开始和显示如何开始。我已经完成了这个(复制粘贴并在调试模式下运行),它执行得很好。然而,这并不能覆盖订阅,可能是因为上面解释的原因(并且可能阻止他们在浏览器中访问PayPal GUI)。

    在Paypal仪表板区域,我可以通过按钮创建一个按钮和引用,但是,这对我来说是不起作用的,因为我需要能够设置 custom 字段每订阅一个用户可以订阅一个或多个服务,每个服务对该用户是唯一的。

    我不明白怎么做到这一点

    4 回复  |  直到 6 年前
        1
  •  1
  •   Sigge    6 年前

    如果我理解这一点,那么在您的情况下,每个订阅对于每个客户来说都是唯一的,而对于静态按钮来说,这是行不通的,因此api似乎是唯一可行的方法。

    PayPal API覆盖订阅,它们被称为订阅。 Billing Plans . 因为每个订阅都不同,所以可以为每个唯一的服务(或服务组合)创建新的计费计划。这可以在不使用任何中间sdk的情况下完成,直接将httpclient用于它们的api。

    或者,您提到的PayPal网络SDK也似乎涵盖计费计划。他们 Sample application 有很多关于如何创建、枚举和发布帐单计划的例子。一定要检查一下 billing_agreement_tokens 上的集合 Payment 班级。您可以在那里添加多个“服务”令牌。

    不管你离发布有多近,很多测试似乎仍在进行中。

        2
  •  0
  •   Varun Setia    5 年前

    你可以试着使用httpclient,这样会有帮助

        HttpContent content = new FormUrlEncodedContent(
                new List<KeyValuePair<string, string>> { 
                    new KeyValuePair<string, string>("key1", 
          "value1"),
                    new KeyValuePair<string,string>("key2","value2")
                });
            content.Headers.ContentType = new 
           MediaTypeHeaderValue("application/x-www-form- 
           urlencoded");
            content.Headers.ContentType.CharSet = "UTF-8";
            HttpResponseMessage resposne = await 
            client.PostAsync(new Uri("paypalWebAddress"), 
           content);
    
        3
  •  0
  •   Shubham Chopra    5 年前

    您不应该在表单中硬编码这些值,而应该在后端创建一个api,该api将返回相应的值,然后您可以根据api的响应动态创建表单。

    请确保在收到来自API的响应后创建此表单。您可以进行类似“响应是否为空”的检查,显示一些微调器。

    <form action="paypalWebAddress" method="post" target="_top">
        <input type="hidden" name="cmd" value="{response.cmd}"/>                        
        <input type="hidden" name="business" value={response.business}"/>
        <input type="hidden" name="paymentaction" value={response.action}/>
        <input type="hidden" name="item_name" value="{response.item}"/>
     <input type="submit" name="submit" value="Make Payment"/>
    </form>
    
        4
  •  0
  •   Mahesh Shahane    5 年前
    <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
      <input type="hidden" name="cmd" value="_xclick">
      <input type="hidden" name="business" value="business.test.com">
      <input type="hidden" name="item_name" value="Memory Stick">
      <input type="hidden" name="item_number" value="MEM32507725">
      <input type="hidden" name="amount" value="3">
      <input type="hidden" name="tax" value="1">
      <input type="hidden" name="quantity" value="1">
      <input type="hidden" name="currency_code" value="USD">
    
      <!-- Enable override of buyers's address stored with PayPal . -->
      <input type="hidden" name="address_override" value="1">
      <!-- Set variables that override the address stored with PayPal. -->
      <input type="hidden" name="first_name" value="John">
      <input type="hidden" name="last_name" value="Doe">
      <input type="hidden" name="address1" value="345 Lark Ave">
      <input type="hidden" name="city" value="San Jose">
      <input type="hidden" name="state" value="CA">
      <input type="hidden" name="zip" value="95121">
      <input type="hidden" name="country" value="US">
      <input type="image" name="submit"
        src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif"
        alt="PayPal - The safer, easier way to pay online">
    </form>
    

    点击立即购买:

    <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    
      <!-- Identify your business so that you can collect the payments. -->
      <input type="hidden" name="business" value="herschelgomez@xyzzyu.com">
    
      <!-- Specify a Buy Now button. -->
      <input type="hidden" name="cmd" value="_xclick">
    
      <!-- Specify details about the item that buyers will purchase. -->
      <input type="hidden" name="item_name" value="Premium Umbrella">
      <input type="hidden" name="amount" value="50.00">
      <input type="hidden" name="currency_code" value="USD">
    
      <!-- Prompt buyers to enter the quantities they want. -->
      <input type="hidden" name="undefined_quantity" value="1">
    
      <!-- Display the payment button. -->
      <input type="image" name="submit" border="0"
        src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif"
        alt="Buy Now">
      <img alt="" border="0" width="1" height="1"
        src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" >
    
    </form>