palpay支付集成代码


HTML部分

<meta charset="utf-8">
<?php
$HOST = "java-er.com";
?>
<form id='form_starPay' method='post' name='form_starPay' action='https://www.sandbox.paypal.com/cgi-bin/webscr'>
 
	<input type="hidden" name="cmd" value="_xclick">  // "_xclick" 立即购买
<input type="hidden" name="business" value="chrasge-facilitator@163.com">  
//PayPal账户上的电子邮件地址
<input type="hidden" name="item_name" value="shoes">
//物品名称(或购物车名称)
<input type="hidden" name="currency_code" value="USD"> 
//定义币种以标示货币变量 值可以为 "USD"、"EUR"、"GBP"、"CAD"、"JPY"。
<input type="hidden" name="amount" value="0.01"> 
//物品的价格(购物车中所有物品的总价格,因为是_Xclick模式)
 
 
<input type='hidden' name='invoice'> //自定义订单号   paypal原样返回
<input type='hidden' name='custom'> // 自定义变量  paypal原样返回
 
 
<input value='http://<?php echo $HOST;?>/paypal/sucess.php' type='hidden' name='return'> //支付成功后网页跳转地址
<input value='http://<?php echo $HOST;?>/paypal/ipn.php' type='hidden' name='notify_url'> //支付成功后paypal后台发送订单通知地址
<input value='US' type='hidden' name='lc'> //支付页面语言设置
 
<input type="image" src="http://www.paypal.com/zh_XC/i/btn/x-click-but01.
gif" name="submit" alt="请使用PayPal付款!">

ipn部分,回调地址,验证是否是合法的paypal支付,而不是冒牌的

<?php
require_once("class.php");
 
writeover("a.txt","pass me\r\n","a+");
 
//$url = 'https://www.paypal.com/cgi-bin/webscr';
$url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
$postdata = '';
foreach($_POST as $i => $v) {
$postdata .= $i.'='.rawurlencode($v).'&';
}
$postdata .= 'cmd=_notify-validate';//cmd=_notify-validate
 
$web = parse_url($url);
if ($web['scheme'] == 'https') {
$web['port'] = 443;
$ssl = 'ssl://';
} else {
$web['port'] = 80;
$ssl = '';
}
$fp = @fsockopen($ssl.$web['host'], $web['port'], $errnum, $errstr, 30);
 
if (!$fp) {
echo $errnum.': '.$errstr;
} else {
fputs($fp, "POST ".$web['path']." HTTP/1.1\r\n");
fputs($fp, "Host: ".$web['host']."\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ".strlen($postdata)."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $postdata . "\r\n\r\n");
 
while(!feof($fp)) {
$info[] = @fgets($fp, 1024);
}
fclose($fp);
$info = implode(',', $info);
 
writeover("a.txt",$postdata."-----".$info."\r\n","a+");
 
exit;
if (strstr('VERIFIED', $info)) {
		writeover("a.txt","YES\r\n","a+");
// yes valid, f.e. change pay;ment status
} else {
 
	writeover("a.txt","NO\r\n","a+");
// invalid, log error or something
}
}
?>

如果正确返回的字符

HTTP/1.1 200 OK ,Date: Tue, 01 Nov 2016 06:50:17 GMT ,Server: Apache ,X-Frame-Options: SAMEORIGIN ,Set-Cookie: c9MWDuvPtT9GIMyPc3jwol1VSlO=HaxVMeL7cFfG8_x4cSnt-dIcQvLnxLKIFks2vawbgKQuOm5t8zrmGkYJ5RGgQfdFMm2Ndo9eIiCGvPrEAlG2oet7MPOm9MMJyDWNimo3siqOgpbg-oGVDv_W1_YnBPfzaghvBlj7qflLi1HxXrY4glbyn2VkSVKROoge40fS5kUIE5RuinIEa_iPzm4lClpe5UCP5h-CpMNl2BoWPsB-VsyKtv5_LLVjYnuAPvhQoaRVBaifDjlvPKrDAVl_DSeO1_Gd1cD2Gw-C1a-Ub5bHrF1C1fnY0hyBfzP9DKSguCL_j9x5xc0C8yDxfTgqMIl_iieUx9Qj-ychZsCG5E8jEMdc91TFU2esw9dROw2-YbeydfBQi43DKRnIwZCVbeGXzmn-ixayobpHg-mL5WiM-kJhVV8RuH2LuhpJp0; domain=.paypal.com; path=/; Secure; HttpOnly ,Set-Cookie: cookie_check=yes; expires=Fri, 30-Oct-2026 06:50:18 GMT; domain=.paypal.com; path=/; Secure; HttpOnly ,Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/; Secure; HttpOnly ,Set-Cookie: navlns=0.0; expires=Thu, 01-Nov-2018 06:50:18 GMT; domain=.paypal.com; path=/; Secure; HttpOnly ,Set-Cookie: Apache=10.72.108.11.1477983018000098; path=/; expires=Thu, 25-Oct-46 06:50:17 GMT ,Vary: Accept-Encoding,User-Agent ,Connection: close ,HTTP_X_PP_AZ_LOCATOR: sandbox.slc ,Paypal-Debug-Id: e4d72a48eed18 ,Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.WEB.1%26silo_version%3D1880%26app%3Dappdispatcher%26TIME%3D691738712%26HTTP_X_PP_AZ_LOCATOR%3Dsandbox.slc; Expires=Tue, 01 Nov 2016 07:20:18 GMT; domain=.paypal.com; path=/; Secure; HttpOnly ,Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT ,Strict-Transport-Security: max-age=14400 ,Transfer-Encoding: chunked ,Content-Type: text/html; charset=UTF-8 , ,8 ,VERIFIED ,0 , OK

VERIFIED,看到这个就对了。

class.php里的函数

/*
‘r’ 只读方式打开,将文件指针指向文件头。
‘r+’ 读写方式打开,将文件指针指向文件头。
‘w’ 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘w+’ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
‘a’ 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
‘a+’ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
*/
function writeover($filename,$data,$method="rb+",$iflock=1) 
{ 
    @touch($filename);/*文件不存在则创建之.可以采用file_exists验证并其他创建文件函数代替.测试结果效率相当*/ 
    $handle=@fopen($filename,$method); 
    if($iflock){ 
        flock($handle,LOCK_EX); 
    } 
    fwrite($handle,$data); 
    if($method=="rb+") ftruncate($handle,strlen($data)); 
    fclose($handle); 
}

多商品提交html到paypal

<form id='form_starPay' method='post' name='form_starPay' action='https://www.sandbox.paypal.com/cgi-bin/webscr'>
<input value='_cart' type='hidden' name='cmd'> //告诉paypal该表单是立即购买
<input value='sell@oliver.com' type='hidden' name='business'> //卖家帐号  也就是收钱的帐号
<input type="hidden" name="upload">
 
<input value='shopping1' type='hidden' name='item_name_1'> //商品名称
<input value='2' type='hidden' name='quantity_1'> //数量
<input value='2' type='hidden' name='amount_1'> //价格
 
 
<input value='shopping2' type='hidden' name='item_name_2'> //商品名称
<input value='4' type='hidden' name='quantity_2'> //数量
<input value='4' type='hidden' name='amount_2'> //价格
 
<input value='USD' type='hidden' name='currency_code'> //币种
<input value='http://127.0.0.3/paypal/index.php' type='hidden' name='return'> //支付成功后网页跳转地址
<input value='http://127.0.0.3/paypal/index.php' type='hidden' name='notify_url'> //支付成功后paypal后台发送订单通知地址
<input type='hidden' name='invoice'> //自定义订单号   paypal原样返回
<input type='hidden' name='custom'> // 自定义变量  paypal原样返回
<input value='US' type='hidden' name='lc'> //支付页面语言设置
<input alt=" PayPal - The safer, easier way to pay online"  type='submit' name='submit'>//支付按钮

paypal支付时候的可用变量

business 您的PayPal账户上的电子邮件地址

quantity 物品数量。大于 1 时,会与金额相乘

item_name 物品名称(或购物车名称)。必须是字母数字字符,最多为 127 个字符

item_number 用于跟踪付款的可选传递变量。必须是字母数字字符,最多为 127 个字符

amount 物品的价格(购物车中所有物品的总价格)

shipping 该物品的运送成本

shipping2 每增加一件物品所需的运送成本

handling 手续费

tax 基于交易的税额。如果使用该变量,传递值将覆盖所有用户信息税收设置(不管买家所在位置)。

no_shipping 送货地址。如果设为 “1″,则不会要求您的客户提供送货地址。该变量为可选项;如果省略或设为 “0″,将提示您的客户输入送货地址

cn 可选标签,会在提示栏上显示(最多 40 个字符)

no_note 为付款加入提示。如果设为 “1″,则不会提示您的客户输入提示。该变量为可选项;如果省略或设为 “0″,将提示您的客户输入提示。

on0 第一选项栏名称。最多 64 个字符

os0 第一组选项值。最多 200 个字符。”on0″ 必须定义,以便识别 “os0″。

on1 第二选项栏名称。最多 64 个字符

os1 第二组选项值。最多 200 个字符。”on1″ 必须定义,以便识别 “os1″。

custom 决不会向您的客户显示的可选转递变量。可用于跟踪存货

invoice 决不会向您的客户显示的可选转递变量。可用于跟踪账单号

notify_url 仅与 IPN 一起使用。发送 IPN Form Post 的互联网 URL

return 您的客户完成付款后将返回的互联网 URL

cancel_return 您的客户取消付款后将返回的互联网 URL

image_url 您要用作图标的图片的互联网 URL,图片大小为 150 X 50 像素

cs 设置您的付款页面的背景色。如果设为 “1″,背景色将为黑色。该变量为可选项;如果省略或设为 “0″,背景色将为白色

扩展变量

PayPal 允许您粘贴扩展变量,条件是将改变以下 “cmd” 值:

到:

通过上述 “cmd” 值修改,您还可使用以下变量:

扩展变量

email 客户的电子邮件地址

first_name 客户的名。必须是字母数字字符,最多为 32 个字符

last_name 客户的姓。必须是字母数字字符,最多为 64 个字符

address1 客户地址所在国家或地区。必须是字母数字字符,最多为 100 个字符

address2 客户地址第二行。必须是字母数字字符,最多为 100 个字符

city 客户地址所在城市。必须是字母数字字符,最多为 100 个字符

state 客户地址所在州。必须是正式的 2 个字母缩写

zip 客户地址的邮政编码

night_phone_a 客户夜间联系电话号码的区号

night_phone_b 客户夜间联系电话号码前三位

day_phone_a 客户白天联系电话号码的区号

day_phone_b 客户白天联系电话号码前三位

提示:若要更改”用户信息”中的默认运费和手续费设置,请转至您的用户信息,编辑您的运费计算,然后点击”允许采用基于交易的运费”复选框。

将单个物品传递给PayPal

如果您的第三方购物车可设置成向PayPal传递单个物品,有关物品的信息将加入买家和卖家的记录日志和系统通知中。要加入该物品的信息,您需要将 HTML 格式元素粘贴至PayPal购物车流程的新版本。该过程与 #1 节”将总购物车数量传递给PayPal”描述的非常相似,不同之处在于:

将 “cmd” 变量设置到 “_cart”

更换必要的 HTML 行

添加称为 “upload” 的新变量

在 <表格> 和 标签之间新增以下行:

定义物品明细

对于以下各特定物品参数,定义与通过您的合作商购物车购买的各物品对应的一组新值。将 “_x” 附加到变量名称,其中 x 是物品号码,从 1 开始,每加入一物品增加一。

item_name_x (物品 #x 需要)购物车中物品 #x 的名称。必须是字母数字字符,最多为 127 个字符

item_number_x 与购物车中物品 #x 关联的可选传递变量。必须是字母数字字符,最多为 127 个字符

amount_x (物品 #x 需要)物品 #x 的价格

shipping_x 运送物品 #x 的第一件(数量 1)的成本

shipping2_x 每增加一件运送物品 #x(数量 2 或更多)所需的运送成本

handling_x 物品 #x 的处理成本

on0_x 物品 #x 的第一选项栏名称。最多 64 个字符

os0_x 物品 #x 的第一组选项值。最多 200 个字符。”on0_x” 必须定义,以便识别 “os0_x”。

on1_x 物品 #x 的第二选项栏名称。最多 64 个字符

os1_x 物品 #x 的第二组选项值。最多 200 个字符。”on1_x” 必须定义,以便识别 “os1_x”。

为购物车中每件物品重复此设定

为您的买家购物车中的各物品加入以上表格中的一组必需的变量和任何选项变量。购物车中的第一物品必须用以 “_1″ 结束的参数定义,如 “item_name_1″、”amount_1″ 等。同样,第二物品应用变量 “item_name_2″、”amount_2″ 等命名。提示:”_x” 值必须以一为单位按序递增,以便识别。如果从 item #1 跳到 item #3 而不定义 item #2,则第三个物品会被忽略。

要指定币种:所有货币变量(金额、运费、运费 2、手续费、税款)将以粘贴在付款上的 “currency_code” 变量指定的币种显示。因为其不是随物品不同的,无需向变量名称附加 “_x”。如果没有粘贴 “currency_code” 变量,我们将假定所有货币变量值为美元。

如果你是一名技术人员可加我QQ 2651-0442-02,如果你是java技术人还可以加入QQ群 1784-9136-0
你将得到的不仅仅是技术的交流,还有职业机会,人生解惑.
首发地址:月小升博客https://java-er.com/blog/palpay-in-web-notify_url/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
此条目发表在 PHP 分类目录,贴了 , 标签。将固定链接加入收藏夹。
既然来了,就评论一下,不会怀孕的

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">