为什么paypal通知网址不同

时间:2017-03-08 18:57:59

标签: paypal joomla paypal-ipn

好的,我们有一个使用Joomla的成员站点,以及一个允许用户执行某些任务(创建团队)的组件。他们可以登录并创建一个团队,但他们无法向该团队添加成员,直到他们支付25美元的费用。

这通过Paypal IPN发生。下面基本上有这个表格......(删除了一些个人数据)。



	
	<input type="hidden" name="cmd" value="_xclick">
	<input type="hidden" name="item_name" value="<?php echo $item_name;?>">
	<input type="hidden" name="business" value="blah@blah.com">
	<input type="hidden" name="amount" value="25">
	<input type="hidden" name="quantity" value="1">
	<input type="hidden" name="no_note" value="1">

        <!--<input name="userId" value="<?php //echo $user->id;?>" type="hidden">-->
        <!--<input name="task" value="paypal_register" type="hidden">-->
	<input type="hidden" name="currency_code" value="USD">
	<!-- Enable override of buyers's address stored with PayPal . --> 
	<!-- Set variables that override the address stored with PayPal. -->
	<input type="hidden" name="return" value="<?php echo JURI::ROOT().'index.php?option=com_fastball&view=payment&task=paypal_register';?>">
	<input type="hidden" name="notify_url" value="<?php echo JURI::ROOT().'index.php?option=com_fastball&view=payment&task=paypal_register&userId='.$user->id.'&ipn=1';?>">
	<!--<input type="image" name="submit" border="0" src="https://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif" alt="PayPal - The safer, easier way to pay online">-->
</form>
&#13;
&#13;
&#13;

现在有时IPN重定向并且工作得很好。但其他时候它会从&#34; index.php?select = com_fastball&amp; view = payment&amp; task = paypal_register&amp; userId =&#34; to&#34; index.php?option = com_fastball&#34;,因此不会激活Joomla中包含通知时更新数据库的代码的视图。

似乎相当随机。有几种情况,1 - 新用户创建新团队。 2 - 老用户创建新团队。 3-老用户更新旧团队。

但无论如何,他们都点击此付款表单按钮,并将THESE通知URL作为隐藏输入。

所以我不确定PayPal在哪里A.)获取缩短的URL,或B.)由于某种原因,他们正在缩短它。它返回到缩短的URL,其中所有Paypal帖子信息显示在URL参数中(&amp; st =已完成&amp; amt = 25.00等来自paypals服务器)

这非常令人沮丧,我可能没有很好地解释,如果您有任何问题或想法,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:0)

对于网址路径,您应使用JURI::base()而不是JURI::ROOT。您可以在此处查看文档https://docs.joomla.org/Constants

答案 1 :(得分:0)

这似乎是最近的PayPal问题。所有网址(return,cancel_return和notify_url)PayPal正在删除第一个&#39;&#39;之后所有内容的网址。

另请注意,问题似乎是间歇性的;它可能取决于您连接到的PayPal服务器(QueryString values removed from the IPN endpoint by PayPal)。

我对自己的PayPal表单进行了一些修改,只替换了&#39;&amp;&#39;使用'&amp;'(编码版本),似乎有效。