对于paypal支付比较简单 先看下文档 我这里就讲下我们公司开发的流程
 
1 开发前准备 ,去注册2个账号一个是商户 一个是购买者 这样方便测试
 
 2 第一步是关于网站付款标准版的集成,主要就是一个 form 表单,文档附录有所有参数的列表。详情请参照: https://www.paypal-biz.com/development/documentation/PayPal_WPS_Guide_CN_V2.0.pdf <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 
 
    3  <form  id='payparform' name='payparform' action=" https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value=" zhangwu@95195.com">
<input type="hidden" name="item_name" value="真心豆100颗">
<input type="hidden" name="amount" id="amount" value="20">
<input type="hidden" name="custom" id='custom' value="{$uid}">
<input type="hidden" name="charset" value="utf-8">
<input type="hidden" name="currency_code" id='currency_code' value="USD">
<input type="hidden" name="return" value=" http://www.95195.com/admin/index/account/">
<input type="hidden" name="notify_url " value=" http://pay.95195.com/paycenter/paypal/notification">
<p class="tcenter"><input type="button"  id='paypar' name='paypar' order_id()" alt="下一步" class="mefb" value="下一步" /></p>
</form>
这里最重要的就是在提交之前要在我们平台产生订单号  所以在点击下一步之前要用ajax生成订单并赋值给custom 这样就一起上传到paypar支付服务器那里了
 
3 服务端代码
public function notificationAction() {
  $req = 'cmd=' . urlencode('_notify-validate');
  foreach ($_POST as $key => $value) {
   $value = urlencode(stripslashes($value));
   $req .= "&$key=$value";
  }
  $pay =new PayAction();
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'https://www.paypal.com/cgi-bin/webscr');//'https://www.paypal.com/cgi-bin/webscr'
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host:www.paypal.com'));
  $res = curl_exec($ch);
  curl_close($ch);

  // 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'];
  $business = urldecode($_POST['business']);
  $payer_email = $_POST['payer_email'];
  $rid = $_POST['custom'];
  if (strcmp ($res, "VERIFIED") == 0) {
   //检查付款状态
   //检查 txn_id 是否已经处理过
   //检查 receiver_email 是否是您的 PayPal 账户中的 EMAIL 地址
   //检查付款金额和货币单位是否正确
   //处理这次付款,包括写数据库
   if( 'zhangwu@95195.com'==$business){
    $pay->updateRechargeStatus($rid,'34','paypar支付'.$payment_amount.$payment_currency);
    $s=1;
   }
   else if (strcmp ($res, "INVALID") == 0) {
    // log for manual investigation
   }
   $pay->insertPayQQ($payment_amount,0,$req.'rid='.$uid.$rid.$res.$business.'SOS:'.$s);
  }
 }
 
附带ajax代码
function order_id() {
 var data = {};
 var money = '';
 var str = $.param(data);
 var id = $("input[name=moneytype]:checked").val();
 if (id == 'USD') {
  money = 20;
 }
 if (id == 'HKD') {
  money = 150
 }
 if (id == 'TWD') {
  money = 600
 }
 if (id == 'CAD') {
  money = 20
 }
 if (id == 'EUR') {
  money = 15
 }
 if (id == 'GBP') {
  money = 12
 }
 if (id == 'JPY') {
  money = 1600
 }
 if (id == 'SGD') {
  money = 25
 }
 var type = '';
 var form = $('#payparform');
 $.post("/admin/index/getorderid/", str, function(data) {
  var resArr = data.split('|');
  if (resArr[0] == 'false') {
  } else {
   $('#custom').attr('value', resArr[1]);
   $('#currency_code').attr('value', id);
   $('#amount').attr('value', money);
  }
  tj();
  return false;
 });
}
function tj() {
 var form = $('#payparform');
 form.submit();
};
希望对大家有所帮助