你进到这里就说明你也在关心这个问题,嘻嘻,能帮我解决最好,不能解决提点下也好,硬是不行顶下也好<form name="paypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="[email protected]">
<!--<!–这里填写你的paypal账户email–>-->
<input type="hidden" name="item_name" value="order information">
<!--<!–这里填写客户订单的一些相关信息,当客户连到paypal网站付款的时候将看到这些信息–>-->
<input type="hidden" name="amount" value="2.00">
<!--<!–订单的总金额信息–>-->
<input type="hidden" name="currency_code" value="USD">
<!--<!–订单总金额对应的货币类型 ,客户可以用其他币种来付款,比如这里订单币种是美元USD,客户可以用欧元EUR来付款,由paypal根据当前汇率自动实现币种之间的换算–>-->
<input type="hidden" name="on0" value="customerId">
<!--<!– 自定义的参数1 –>-->
<input type="hidden" name="os0" value="stephen">
<!--<!– 对应上面自定义参数1对应的值 –>-->
<input type="hidden" name="on1" value="address">
<!--<!– 自定义的参数2 –>-->
<input type="hidden" name="os1" value="shanghai china">
<!--<!– 对应上面自定义参数2对应的值 –>-->
<input type="hidden" name="notify_url" value="http://mail.163.com">
<input type="hidden" name="custom" value="muri-khao">
<input type="hidden" name="return" value="http://mail.163.com?id=123">
<input type="hidden" name="cancel_return" value="http://mail.126.com">
<input type="hidden" name="rm" value="1">
<!--<!–这里告诉paypal付款的通信url,即当客户付款后调用这个url通知系统–>-->
<div align="center">
<input name="Paypal" type="button" value="Go to Paypal" onclick="javaScript:this.form.submit();"></td>
</div>
</form>我怎么做后台数据库即时处理,notify_url链接到我后台action能处理吗?能给详细点的操作步骤吗?我试了很多方法但是解决不了...万事拜托了...
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="[email protected]">
<!--<!–这里填写你的paypal账户email–>-->
<input type="hidden" name="item_name" value="order information">
<!--<!–这里填写客户订单的一些相关信息,当客户连到paypal网站付款的时候将看到这些信息–>-->
<input type="hidden" name="amount" value="2.00">
<!--<!–订单的总金额信息–>-->
<input type="hidden" name="currency_code" value="USD">
<!--<!–订单总金额对应的货币类型 ,客户可以用其他币种来付款,比如这里订单币种是美元USD,客户可以用欧元EUR来付款,由paypal根据当前汇率自动实现币种之间的换算–>-->
<input type="hidden" name="on0" value="customerId">
<!--<!– 自定义的参数1 –>-->
<input type="hidden" name="os0" value="stephen">
<!--<!– 对应上面自定义参数1对应的值 –>-->
<input type="hidden" name="on1" value="address">
<!--<!– 自定义的参数2 –>-->
<input type="hidden" name="os1" value="shanghai china">
<!--<!– 对应上面自定义参数2对应的值 –>-->
<input type="hidden" name="notify_url" value="http://mail.163.com">
<input type="hidden" name="custom" value="muri-khao">
<input type="hidden" name="return" value="http://mail.163.com?id=123">
<input type="hidden" name="cancel_return" value="http://mail.126.com">
<input type="hidden" name="rm" value="1">
<!--<!–这里告诉paypal付款的通信url,即当客户付款后调用这个url通知系统–>-->
<div align="center">
<input name="Paypal" type="button" value="Go to Paypal" onclick="javaScript:this.form.submit();"></td>
</div>
</form>我怎么做后台数据库即时处理,notify_url链接到我后台action能处理吗?能给详细点的操作步骤吗?我试了很多方法但是解决不了...万事拜托了...
class paypal
{
/**
* 生成支付代码
* @param array $order 订单信息
* @param array $payment 支付方式信息
*/
function get_code($order, $payment)
{
global $_LANG, $ecs; $data_order_id = $order["order_sn"];
$data_amount = $order["order_amount"];
$data_return_url = "http://www.XXX.com/?p=trade";
$data_pay_account = $payment["paypal_account"];
$currency_code = $payment["paypal_currency"];
$data_notify_url = return_url(basename(__FILE__, '.php')); $def_url = "\n<form action='https://www.paypal.com/cgi-bin/webscr
' method='post' target='_blank'>" . // 不能省略
"<input type='hidden' name='cmd' value='_xclick'>\n" . // 不能省略
"<input type='hidden' name='business' value='$data_pay_account'>\n" . // 贝宝帐号
"<input type='hidden' name='return' value='$data_return_url'>\n" . // 付款后页面
"<input type='hidden' name='amount' value='$data_amount'>\n" . // 订单金额
"<input type='hidden' name='invoice' value='$data_order_id'>\n" . // 订单号
"<input type='hidden' name='charset' value='utf-8'>\n" . // 字符集
"<input type='hidden' name='no_shipping' value='1'>\n" . // 不要求客户提供收货地址
"<input type='hidden' name='no_note' value=''>\n" . // 付款说明
"<input type='hidden' name='currency_code' value='$currency_code'>\n" . // 货币
"<input type='hidden' name='notify_url' value='$data_notify_url'>\n" .
"<input type='hidden' name='item_name' value='$order[order_sn]'>\n" . // payment for
"<input type='submit' value='" . $_LANG['paypal_button'] . "'>" . // 按钮
"</form>\n"; return $def_url;
}
// 取得支付网关返回的数据中的对应本地系统的 netpayid
function get_respond_order_sn(){
return $order_sn = $_POST['invoice'];
}
/**
* 响应操作
*/
function respond()
{
global $DB, $_LANG; $payment = get_payment('paypal');
$merchant_id = $payment['paypal_account']; ///获取商户编号
$currency_code = $payment["paypal_currency"]; // read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value)
{
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
} // post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) ."\r\n\r\n";
$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30); // assign posted variables to local variables
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
$order_sn = $_POST['invoice'];
$action_note = $txn_id . '(' . $_LANG['paypal_txn_id'] . ')' . $_POST['memo']; if (!$fp)
{
fclose($fp);
return false;
}
else
{
fputs($fp, $header . $req);
// debug log
file_put_contents('/tmp/paypal-log', date('Y-m-d H:i:s') . $header . $req . "\n", FILE_APPEND);
while (!feof($fp))
{
$res = fgets($fp, 1024);
// debug log
file_put_contents('/tmp/paypal-log', date('Y-m-d H:i:s') . $res . "\n", FILE_APPEND);
if (strcmp($res, "VERIFIED") == 0)
{
// check the payment_status is Completed
if ($payment_status != "Completed")
{
fclose($fp);
return false;
} // check that txn_id has not been previously processed
/*$sql = "SELECT COUNT(*) FROM " . $ecs->table('order_action') . " WHERE action_note LIKE '" . $txn_id . "%'";
if ($db->getOne() > 0)
{
fclose($fp);
return false;
}*/ // check that receiver_email is your Primary PayPal email
if ($receiver_email != $merchant_id)
{
fclose($fp);
return false;
} // check that payment_amount/payment_currency are correct
$sql = "SELECT dollar FROM " . TABLE_NETPAY . " WHERE id = '$order_sn'";
if ($DB->result($sql) != $payment_amount)
{
fclose($fp);
return false;
}
if ($payment_currency != $currency_code)
{
fclose($fp);
return false;
} // process payment
order_paid($order_sn, PS_PAYED, $action_note);
fclose($fp);
return true;
}
elseif (strcmp($res, "INVALID") == 0)
{
// log for manual investigation
fclose($fp);
return false;
}
}
}
}
}?>
如果不是的话,使用Ajax post来获取返回值吧,自建iframe提交数据,然后Ajax获取iframe的内容。
如果是在同一个域里面的话,还是建议LZ多扎实一下基本功。