我有以下 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有一个快速入门并展示了如何开始。我已经完成了这个(复制并粘贴并在 Debug模式下运行)并且它执行得很好。然而,这不包括订阅,可能是出于上面解释的原因(并且可能会阻止他们在浏览器中访问 PayPal gui)。
我在 PayPal 仪表板区域获得了创建按钮并通过按钮引用的选项,但是,这对我不起作用,因为我需要能够为每个订阅设置 custom
字段因为用户可以订阅一项或多项服务,并且每项服务对于该用户来说都是独一无二的。
我不明白如何实现这一点
最佳答案
如果我没有理解错的话,在您的案例中,每个客户的每个订阅都是唯一的,并且不适用于静态按钮,因此 API 似乎是唯一的选择。
PayPal API 确实涵盖订阅,它们被称为 Billing Plans .由于每个订阅都是不同的,您可以为每个独特的服务(或服务组合)创建一个新的计费计划。这可以在没有任何中间 SDK 的情况下直接使用 HttpClient 到他们的 API 来完成。
或者,您提到的 PayPal-NET-SDK 似乎也涵盖计费计划。他们的Sample application关于如何创建、枚举和发布 Billing Plans 的例子相当多。确保检查 Payment
类中的 billing_agreement_tokens
集合。您可以在那里添加多个“服务” token 。
无论您离发布有多近,这里似乎仍需要进行大量测试。
关于asp.net-mvc - 如何将 HTML 表单转换为 C# 以用于 PayPal 订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54167897/