我正在使用 PayPal Pay Now 按钮让用户为产品付款。单击该按钮时,我还想向我的服务器发送一些数据。因此,我通过 jQuery Ajax 将这些值发送到我的服务器。不幸的是,这有时会起作用,有时页面转到 PayPal 的速度太快,无法发送表单值,而且它们永远不会被保存。
jQuery 代码看起来像这样
//...
function sendUserDetailsByAjax(orderId){
var name = $("#name").val();
var email = $("#email").val();
var arrivalTime = $("#arrivalTime").val();
$.ajax({
type: "POST",
url: "/order/updateuser",
data: { 'orderId': orderId, 'name': name, 'email': email, 'arrivalTime': arrivalTime },
success: function(data){
}
});
$('#payWithPaypal').submit();
}
//...
这些是表单域:
<input id="arrivalTime" type="text" size="12" class="checkoutInput"/>
<input id="name" type="text" size="32" class="checkoutInput"/>
<input id="phone" type="text" size="32" class="checkoutInput"/>
这是 PayPal 表单(${something} 元素是应用程序的变量:
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" id="payWithPaypal">
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="${place.payPalEmail}" />
<input type="hidden" name="item_name" value="My Order" />
<input type="hidden" name="amount" value="${order.total}" />
<input type="hidden" name="currency_code" value="AUD" />
<input type="hidden" name="lc" value="AU" />
<input type="hidden" name="button_subtype" value="products" />
<input type="hidden" name="return" value="http://mysite.com/${order.id}"/>
<input type="hidden" name="cancel_return" value="http:/mysite.com/cancel/${order.id}" />
<input type="hidden" name="notify_url" value="http://mysite.com?oid=${order.id}" />
<input type="hidden" name="oid" value="${order.id}" />
<input type="image" onclick="javascript:sendUserDetailsByAjax('${order.id}');" src="https://www.paypal.com/en_US/i/btn/x-click-but5.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
</form>
您对我如何确保arrivalTime
,name
和email
在按钮将页面重定向到 PayPal 之前发送有任何想法吗?