经过一段时间跟paypal的死磕,现在算是能够实现最简单的支付流程,这期间很感谢paypal的客服跟技术支持,尤其是技术支持,很热情的帮我检查问题,我就想通过这个让跟我遇到相同问题的朋友们能够尽快绕过去,别在这里因为一些简单的问题浪费时间!

主要卡在登录支付的时候一直登录不成功,setbuyer 500错;
    
    一、首先是账号的注册,在官网www.paypal.com注册一个自己的卖家账号。申请成功之后,他会给你两个测试账号,一个卖家账号,一个买家账号,但是这个地方很坑,因为经过什么国家外汇监管规定,导致两个咱们国家的账号之间不能交易,这个也是paypal的工作人员告诉我的;

所以根据上面的要求我们就需要两个不同的国籍的账号,所以自己重新创建两个测试号;
      **在创建两个测试号的时候,需要注意的是当其中一个账号是中国的时候在credit cards的时候最好选择none别选visa其他的我没试过**
      之所以这样,是因为visa是国际信用卡(别人跟我解释的我也不懂)

账号创建完成之后,需要去给卖家账号做一些配置,首先是设置 回调 “即时付款通知”,

它就是一个方法,当支付状态发生变化的时候,paypal就会回调这个方法,也就是说它里面你可以写自己支付的一些逻辑,我的就是当发现成功的时候修改订单状态而已;

二、账号创建的问题解决了,接下来就是简单的表单demo

<form id="form_starPay" name="form_starPay" action="https://www.paypal.com/cgi-bin/webscr" method="post"> //测试www.sandbox.paypal.com,正式www.paypal.com<input type="hidden" name="cmd" value="_xclick"><input type="hidden" name="business" value="suomalihailiang@boomshakalaka.com"> //卖家邮箱 <input type="hidden" name="item_name" value="name"> //商品名称<input type="hidden" name="amount" value="1"> //商品价格<input type="hidden" name="currency_code" value="USD"> //交易货币<input type="hidden" name="return" value=""> //支付成功后返回到什么地方<input type="hidden" name="notify_url" value="">  //IPN回调地址<input style="" type="submit" src=" https://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif " border="0" name="submit" alt=" PayPal - The safer, easier way to pay online"></form>

当点击按钮之后
      

当支付成功的时候,就会需要到那个IPN的回调地址接下来是一些我的回调代码;

    /*** paypal的回调处理*/public function notify() {$order_model = new \app\index\model\Order();$param = $_POST;//获取订单号$order_number = $param['invoice'];$where['order_number'] = $order_number;//通过order_number找到相对应的订单,在线面判断的时候如果该信息为空就请求失败$order_info = $order_model->getOrderInfoByWhere($where);// 拼凑 post 请求数据$req = 'cmd=_notify-validate'; // 验证请求foreach ($param as $k => $v) {$v = urlencode(stripslashes($v));$req .= "&{$k}={$v}";}$ch = curl_init();curl_setopt($ch, CURLOPT_URL, PAYPAL_PAY_URL);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);if ($res && !empty($order_info)) {if (strcmp($res, 'VERIFIED') == 0) {if ($param['payment_status'] == 'Reversed') {//如果退款 就把付款状态给修改了$update_data = array();$update_data['status'] = 3;$update_data['update_at'] = date('Y-m-d H:i', time());$order_model->name('home_en_order')->where(array('order_id' => $order_info['order_id']))->update($update_data);} else if ($param['payment_status'] == 'Completed') {// 如果验证通过,则证明本次请求是合法的//如果付款成功,就记录用户信息同时修改付款状态$update_data = array();$update_data['status'] = 2;$update_data['user_email'] = $param['payer_email'];$update_data['currency_type'] = $param['mc_currency'];$update_data['user_name'] = $param['last_name'] . ' ' . $param['first_name'];$update_data['update_at'] = date('Y-m-d H:i', time());$order_model->name('home_en_order')->where(array('order_id' => $order_info['order_id']))->update($update_data);exit('success');} else {exit('fail');}} else {$order_model->name('home_en_order')->where(array('order_id' => 1))->update(array('user_name' => '修改失败'));exit('fail');}} else {$order_model->name('home_en_order')->where(array('order_id' => 1))->update(array('user_name' => '返回失败'));exit('fail');}}

需要注意的是,IPN验证的时候数据返回给paypal的时候必须要用https协议,不能是http,并且paypal支付最好使用的php版本在5.3以上;

paypal简单分享相关推荐

  1. android简单分享----文字加图片

    2019独角兽企业重金招聘Python工程师标准>>> 这是android的简单分享,如果想分享到微博这些的话,需要你的手机里安装相关的app,下面的这些代码是整理网上各种网友的代码 ...

  2. 简单分享一个轻量级自动化测试框架目录结构设计

    更多关于python selenium的文章,请关注我的专栏:Python Selenium自动化测试详解 很多人在做自动化测试的过程中会遇到一个瓶颈,就是能够写脚本,但是不知道怎么去组织代码,怎么搭 ...

  3. 转载:::::简单分享一个轻量级自动化测试框架目录结构设计

    很多人在做自动化测试的过程中会遇到一个瓶颈,就是能够写脚本,但是不知道怎么去组织代码,怎么搭建测试框架,今天博主就放点干货,分享一个轻量级的自动化测试框架的目录结构,如下图: 分层如下: config ...

  4. 超级简单分享:快乐数字

    天热超级简单分享:快乐数字 介绍 方法 算法设计 算法分析 介绍 快乐数字是指一个自然数n中的每一位数字的平方和为1或以每一位数字的平方和的结果为新的自然数继续计算平方和直到平方和为1.由于约束条件为 ...

  5. 台电tbook10s删除安卓系统_【吃灰了】简单分享一下台电Tbook10s使用体验

    [吃灰了]简单分享一下台电Tbook10s使用体验 2019-10-23 15:33:08 3点赞 2收藏 0评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查 ...

  6. iOS之友盟简单分享(第三方)及sso授权问题

    一.友盟分享简单集成步骤: 1.注册友盟账号,申请友盟Appkey 2.下载并安装SDK 注意: 1>由于苹果审核政策需求,建议大家对未安装客户端平台进行隐藏,在设置QQ.微信AppID之后调用 ...

  7. 电脑里的图片如何转成Word文档?拍照图片转文字简单分享

    我们以前做题的时候,过后会对照答案.后来手机方便了,可以扫一下就能获取答案.这个想说扫描文件是很容易的事,所以图片转文字这个事情也是很常见的.其实我们高中考试那种网上阅卷就是一个意思,机器扫描通过才能 ...

  8. 学习笔记——uni-app实现简单分享功能

    uni-app中有分享的API接口,但是需要现在QQ或者微信等开发者平台上注册账号,验证公司信息,而且只能分享图片或者文本等内容.分享API比较简单,但是总体使用起来比较麻烦,对初学者不太友好. 这里 ...

  9. 简单分享在微信公众号怎么制作砍价小程序

    砍价活动作为营销活动之一,已经是非常成熟了,现在我们要做砍价活动,就非常简单了,在互联网上也有非常多的平台提供砍价活动,但是考虑价格操作等因素,我们都会去对比几家,因为我们在使用很多电商产品或者电商小 ...

最新文章

  1. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...
  2. python制作工资计算器-Python制作个税计算器
  3. python实现简单的api接口-使用Python编写API接口和使用API接口
  4. JZOJ 5399. 【NOIP2017提高A组模拟10.7】Confess
  5. 算法训练 字符串的展开c语言
  6. 【转载】汇编速查手册
  7. mysql通过函数完成10的阶乘_请使用函数的递归调用编写求阶乘的函数,并计算1!+2!+3!+4!+5!...
  8. 服务器共享文件审计,内网安全管理系统-共享审计
  9. 不使用加减乘除实现加法
  10. Pytorch相关函数详解
  11. 消息队列MQ技术的介绍和原理
  12. 网工浓缩笔记以及考点(第七章 网络安全)
  13. oracle第二天笔记
  14. 单片机c语言多条件if函数的使用,3个条件的if函数怎么用
  15. 华为轮值CEO徐直军:应对快速变化的世界
  16. 方法重写的两同两小一大原则
  17. 微信聊天记录备份:当前网络状况复杂和连接失败的解决办法
  18. 兔子繁殖问题。假设有一对小兔子,一个月后成长为一对大兔子,从 第二个月开始,每对大兔子生一对小兔子。不考虑兔子的死亡,求第n个月的兔子总对数
  19. 如何对接淘宝开放平台API接口(超详细)
  20. ssm+mysql+基于微信平台的牙科就诊信息管理系统的设计与实现 毕业设计-附源码211157

热门文章

  1. DevExpress XtraReport报表开发相关知识点
  2. SpringBoot小程序推送信息
  3. 现在有100块钱,一只公鸡5块,一只母鸡3块,三个小鸡1块。现在让你用100块钱买到100只鸡(大小不限)运用循环,和if语句实现
  4. 计算机运行内存和显卡内存不足,Win10系统提示计算机显卡内存不足该怎么办?...
  5. 【C语言】扫雷游戏(递归实现展开一片)8000字详细教学
  6. ES6: 支持ES6的浏览器版本(汇总表)
  7. Java面试笔试考点精讲视频教程
  8. Android 真机连接本地PC服务器
  9. ODOO13 开发教程三 开始你的第一个模块
  10. 世界的本质是什么---辩证的唯物论