【发布时间】:2021-02-22 17:34:41
【问题描述】:
我实现了一个 Paypal HTML 按钮(支付和订阅)来引导客户到 Paypal 网站进行支付。另外,我将发票 # 作为参数传递。根据以下文件,invoice是一个传递变量。
https://developer.paypal.com/docs/paypal-payments-standard/integration-guide/Appx-websitestandard-htmlvariables/# https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/archive/PP_subscriptions.pdf
事实上,在我的沙盒帐户上进行测试时,我确实会以 POST 调用的形式收到所有参数(包括发票)。但是,当我测试实时付款(非沙盒帐户)时,未收到发票。但是,我会收到其他付款信息,例如 item_number、custom、transaction id 等。此外,对于实时付款,这些信息是通过 GET 调用而不是 POST 调用传递的。
总而言之,为什么我会收到来自沙盒付款的发票参数,而不是实时付款。
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" class="message">
<input type="hidden" name="return" value="<%= (request.isSecure() ? "https" : "http") + "://" + request.getServerName() + "/upgradepayment" %>">
<input type="hidden" name="rm" value="2">
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<input type="hidden" name="hosted_button_id" value="...">
<input type="hidden" name="business" value="...">
<input type="hidden" name="item_name" value="...">
<input type="hidden" name="notify_url" value="..."
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="a3" value="...">
<input type="hidden" name="p3" value="1">
<input type="hidden" name="t3" value="M">
<input type="hidden" name="src" value="1">
<input type="hidden" name="sra" value="1">
<input type="hidden" name="invoice" value="...">
<input type="hidden" name="custom" value="...">
<input type="hidden" name="item_number" value="...">
<input id="ok" type="submit" name="submit" value="Pay and Subscribe with PayPal" alt="PayPal - The safer, easier way to pay online" title="PayPal - The safer, easier way to pay online">
</form>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" class="message">
<input type="hidden" value="<%= (request.isSecure() ? "https" : "http") + "://" + request.getServerName() + "/upgradepayment" %>" name="return">
<input type="hidden" name="rm" value="2">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="...">
<input type="hidden" name="item_name" value="...">
<input type="hidden" name="amount" value="...">
<input type="hidden" name="no_shipping" value="0">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="lc" value="CA">
<input type="hidden" name="bn" value="PP-BuyNowBF">
<input type="hidden" name="invoice" value="...">
<input type="hidden" name="custom" value="...">
<input type="hidden" name="item_number" value="...">
<input id="ok" type="submit" name="submit" value="Pay with PayPal" alt="PayPal - The safer, easier way to pay online" title="PayPal - The safer, easier way to pay online">
</form>
编辑:我通过即时付款通知 (IPN) 收到有关订阅的信息
【问题讨论】:
-
“我实现了一个 PayPal HTML 按钮”——如果您需要帮助,请展示您的工作。您如何“接收”信息?这是关于非常古老的支付数据传输 (PDT) 的问题吗?如果是的话,你为什么要集成 2000 年初的这些东西?
-
感谢您的评论!我将代码添加到我的订阅按钮,并从 IPN 接收信息。
-
"invoice" 因为你传递它应该可以工作。但是,如果有一个 hosts_button_id 并且正在使用它,则可能会因此而忽略值。您的其余代码看起来像一个未托管的按钮,所以我不确定您为什么要包含它
-
感谢您的建议。我已经尝试删除该行 hosts_button_id 但发票参数仍未通过。我还添加了上述非订阅付款的代码以供参考。非订阅按钮代码不包含hosted_button_id,并且从未传递过“invoice”参数。
-
嗯,嗯,这是唯一的问题,“发票”是使用正确的参数。上面的按钮值为“...”,并且您没有包含收到的 IPN 消息的相应文本,不能说更多
标签: paypal paypal-sandbox paypal-subscriptions