Paypal接口详细代码(PHP版,非API接口)
浏览:18378次 出处信息
notify_url 响应代码:
以下是代码片段: <?php error_reporting(’7’); // 由于这个文件只有被Paypal的服务器访问,所以无需考虑做什么页面什么的,这个页面不是给人看的,是给机器看的 /** * 从数据库获取指定的订单信息 */ $order = $PDO->query("select * from order where order_out_id = ’{$_GET[’order_id’]}’")->fetch_all(); if(!empty($order)) { if(’FINISH’ == $order[’payment_status’]) { exit; } // 拼装验证信息 $req = ’cmd=_notify-validate’; foreach ($_POST as $k=>$v) { $v = urlencode(stripslashes($v)); $req .= "&{$k}={$v}"; } $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,’https://www.paypal.com/cgi-bin/webscr’); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$req); $res = curl_exec($ch); curl_close($ch); echo $res; if($res) { // 如果这次的请求是Paypal的服务器发送到我方服务器的则继续验证,否则退出 if(strcmp($res, ’VERIFIED’) == 0) { if ($_POST[’payment_status’] != ’Completed’ && $_POST[’payment_status’] != ’Pending’) { exit; } // 如果收款人不是我的账号 if(’你的paypal账号’ != $_POST[’mc_email’]) { exit; } // 如果价格不符 if($_POST[’mc_gross’] != $order[’payment_price’]) { exit; } // 如果货币类型不对 if(’USD’ != $_POST[’mc_currency’]) { exit; } } elseif(strcmp($res,’INVALID’) === 0) { echo ’fail’; } } } else { echo ’fail’; } |
提交到paypal进行支付代码:
以下是代码片段: <?php // 生成订单号 $order_id = uniqid(); // 组织表单数据 $form_data = array( ’cmd’ => ’_xclick’, // 网站拥有自己的购物车系统 ’business’ => ’**********’, //商家的贝宝账号 ’item_name’=> $order_id, //订单号 ’amount’ => 100, //商品总价 ’currency_code’ => ’USD’, //使用哪种货币 USD-美元 ’return’ => ’http://www.xxx.com/response.php?order_id=’.$order_id,// 当用户支付完成后,浏览器会跳转到这个页面,一般情况下无需做复杂操作,直接告诉用户付款成功即可,无需其他逻辑,真正的付款成功与否的通知在notify_url ’invoice’ => $order_id, ’charset’ => ’UTF-8’, //网站使用的编码 ’no_shipping’ => ’1’, ’no_note’ => ’0’, ’image_url’ => ’https://www.paypal.com/en_US/i/logo/paypal_logo.gif’, ’cancel_return’ => ’http://www.xxx.com/goods.php?good_id=12123’,// 如果用户跳转到paypal支付接口后不想继续购买,点击取消付款后会跳转到这个页面 ’notify_url’ => ’http://www.xxx.com/notify.php?order_id=’.$order_id,// PAYPAL的服务器会把用户时候付款,付款成功与否的信息发送到这里,用户不感觉得到,这完全是Paypal的服务器向你的服务器发送的数据 ’rm’ => ’2’, ); // 生成提交表单 ?> https://www.sandbox.paypal.com/cgi-bin/webscr <form action="https://www.paypal.com/cgi-bin/webscr" target="_blank" method="post"> <?php foreach($form_data as $key=>$name): ?> <input type="hidden" name="<?php echo $key; ?>" value="<?php echo $name; ?>" /> <?php endforeach; ?> <input type="submit" value="Use Paypal" /> </form> |
建议继续学习:
- 面向“接口”编程和面向“实现”编程 (阅读:12580)
- PHP连贯接口 (阅读:6384)
- 存储基础知识之——硬盘接口简述 (阅读:6157)
- JavaScript Interface 接口的实现 (阅读:5835)
- 干嘛不去掉“I”和“Impl”? (阅读:5692)
- 使用Mitmproxy分析接口 (阅读:5384)
- 接口设计规则一:让你的接口会说话 (阅读:3537)
- 以用户为中心的 API 异常设计 (阅读:2413)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
文章信息
- 作者:cevin 来源: 司徒楠,一个PHP程序员
- 标签: Paypal 接口
- 发布时间:2010-07-19 22:42:37
建议继续学习
近3天十大热文
- [55] Oracle MTS模式下 进程地址与会话信
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [54] 如何拿下简短的域名
- [53] android 开发入门
- [52] Go Reflect 性能
- [52] 图书馆的世界纪录
- [49] 【社会化设计】自我(self)部分――欢迎区
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [38] 程序员技术练级攻略
- [32] 视觉调整-设计师 vs. 逻辑