thinkphp框架中引入ping++支付server SDK

ping++支付平台整合了支付宝,微信支付,百度钱包,银联支付等主流支付方式。而且其开发文档,也很容易理解和上手,所以想写篇博客,记录下来(thinkphp)服务器端使用其SDK的步骤【test模式下】。

开始之前 最好先看一看官方文档对于支付过程的解释:

第一步:去www.pingxx.com新注册一个账号。注册完成进入个人中心后,你将会得到一些参数:

①Test Secret Key:(该参数在server端配置,用于和客户端的Test Publishable Key配合使用)

②ping++公钥:(支付完成后,平台往server端返回webhooks,此参数用于验证交易安全性)

③Test Publishable Key:(该参数用于客户端,与上面server端的的Test Serect Key配合使用)

④商户公钥:(用于server端和平台交易时,RSA签名的验证),至于如何产生商户公钥对,根据图中蓝色字的引导,很容易就完成了,此处不再赘述。产生了公钥对之后,把公钥填写在下图中的textarea中,私钥留着先,后面有用。

第二步:下载官方的server端SDK,PHP的下载链接是https://github.com/PingPlusPlus/pingpp-php

下载好了之后,加压出来,放在thinkphp第三方库扩展目录里面:

如左图所示,lib文件夹,init.php,还有第一步④产生的公钥对中的

私钥放进去。至于data文件夹里的文件,是使用HTTPS时用的安全证书,暂时也拿过来。

第三步:在代码中使用上面的参数,看看引入是否成功:(示例代码如下)

public function index(){ $api_key = '请填写自己的Test Serect Key'; //API-KEY,注册ping++时自动生成$app_id = '请填写自己的APP的ID'; //APP_ID,注册时自动生成 Vendor('pingpp.init'); //引入类库初始化文件 //以支付宝,支付10块钱。注意amount为1000,单位是”分钱“ $input_data = array('channel'=>'alipay', 'amount'=>1000); //$input_data应该是你从APP客户端收到的json数据(根据业务可以在服务器端定义),需json_decode if (empty($input_data['channel']) || empty($input_data['amount'])) { echo 'channel or amount is empty'; //检验支付参数 exit();} $channel = strtolower($input_data['channel']); //支付渠道:支付宝$amount = $input_data['amount']; //支付金额10块钱$orderNo = substr(md5(time()), 0, 12); //订单号,必须唯一。根据支付渠道不同,长度要求也不一样,请查看文档https://www.pingxx.com/api#api-c-new\Pingpp\Pingpp::setPrivateKeyPath(VENDOR_PATH . '/pingpp/rsa_private_key.pem'); //引入你的签名私钥//$extra用于设置支付渠道所需的额外参数,额外参数多数是可选,请根据需求来决定。详情看参考文档// $extra = array( // 'success_url' => 'http://example.com/success', // 'cancel_url' => 'http://example.com/cancel' // );\Pingpp\Pingpp::setApiKey($api_key); //设置API-KEYtry { $ch = \Pingpp\Charge::create( //create方法表示发送支付请求到ping++平台,$ch表示请求成功时返回的charge对象(json格式),服务器端如果发起请求成功,此时只需要把charge对象传递给APP客户端,交给客户端处理 array( 'subject' => 'Your Subject', //关于这些参数的意义,请参考文档https://www.pingxx.com/api#api-c-new 'body' => 'Your Body', 'amount' => $amount, 'order_no' => $orderNo, 'currency' => 'cny', // 'extra' => $extra, 'channel' => $channel, 'client_ip' => $_SERVER['REMOTE_ADDR'], 'app' => array('id' => $app_id) ) ); echo $ch;} catch (\Pingpp\Error\Base $e) { //如果发起支付请求失败,则抛出异常 // 捕获报错信息 if ($e->getHttpStatus() != NULL) { header('Status: ' . $e->getHttpStatus()); echo $e->getHttpBody(); } else { echo $e->getMessage(); }}//代码到此处,如果你向ping++平台请求支付成功,并且把charge对象传递给了客户端,那么接下来客户端如果成功完成了支付,那么//平台将会请求你填写的Webhooks回调url,在该url里,接收 Webhooks 通知,根据数据的结果做出逻辑判断:如果支付成功....,如果支付失败...

如果此时,能在浏览器返回一串json数据,那么你的初步调试就通过了。

第四步:填写你的webhook的回调地址。如果客户端发起的支付,已经完成交易,那么交易成功的json消息,会

返回到该回调地址,你根据json消息,对自己的数据库和业务作出相应的回应或者抛出支付错误信息。webhook的填

写,请到个人中心去填写,很容易的,不再赘述。

ping php支付,thinkphp框架中引出ping++支付server SDK相关推荐

  1. php视图,thinkPHP框架中视图的讲解(附代码)

    这篇文章给大家介绍的内容是关于thinkPHP框架中视图的讲解(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. thinkPHP中有一个方法和display()相似,fetc ...

  2. php框架m方法详细,Thinkphp框架中D方法与M方法的区别是什么

    Thinkphp框架中D方法与M方法的区别是什么 发布时间:2021-02-06 23:09:38 来源:亿速云 阅读:69 作者:小新 小编给大家分享一下Thinkphp框架中D方法与M方法的区别是 ...

  3. 在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法)

    在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法) 本文讲解了在thinkphp框架中如何对多表进行操作,ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷 ...

  4. ThinkPHP框架中解决无法加载控制器的问题—原因之一

    相信许多PHP开发者在使用ThinkPHP框架进行快速开发的时候遇到过通过URL访问控制器方法时遇到图上的这种问题. 为什么会无法加载控制器呢,原因有很多,但是据我所了解的来看,最有可能的还是: 你的 ...

  5. linux中ping命令详解,linux中的ping命令的详细解释

    linxu下的ping命令的主要功能就是确定网络状态,下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux的ping命令的详细解释的相关知识,希望对大家有帮助! 一.linux中的 ...

  6. android微信条码支付接口,Android中调用微信支付接口

    在我的项目中还没有接入这个功能的时候就听说微信支付的接口很坑爹,用完之后发现别人说的一点也没有错,蛋疼归蛋疼,该用还是要用.在这里把遇到的问题记录一下以免以后需要再次接入的话碰到问题浪费时间. 微信支 ...

  7. php 公众号内h5支付宝支付宝支付宝支付宝支付,微信浏览器中支付宝wap支付和微信JSAPI公众号支付...

    手机浏览器只有支付宝wap支付,微信浏览器中出现支付宝wap支付和微信JSAPI公众号支付,其中支付宝wap在线支付没有在新窗口打开(兼容大部分手机),Thinkphp3.2公众号支付 下载资源 下载 ...

  8. python调用ping命令_在Python中调用Ping命令,批量IP的方法

    #!/usr/bin/env python #coding:UTF-8 ''''''' Author: jefferchen@163.com 可在命令行直接带目的IP,也可将IP列表在文本文件中. p ...

  9. Thinkphp框架中D()和M()的区别

    ThinkPHP中实例化对象M()和D()的区别?ThinkPHP如何实例化对象? 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D ...

最新文章

  1. FreeSWITCH 学习笔记(一)
  2. 程序员面试题100题第29题——调整数组顺序使奇数位于偶数前面
  3. 为什么说中国式报表特殊-3、报表格式
  4. springmvc+spring+hibernate集成cxf
  5. C语言创建map,遍历map
  6. Docker Compose编排(写法格式及实验)
  7. 最短编辑距离问题 : Levenshtein Distance
  8. CCNET自动构建之路
  9. Ubuntu18.04安装Docker并构建JDK1.8镜像
  10. Docker学习笔记 之 Docker安装配置使用
  11. Django 项目一补充
  12. php api 文档 管理,Api开发者福利之api在线管理,模拟请求测试,文档生成工具--Apizza...
  13. 中卫市地图arcgis数据shp道路地名县区边界水系2021年(下载说明)
  14. 【SpringCloud】-- SpringCloud简介
  15. CTWing-中国电信IoT物联网平台设备接入实战
  16. 人脸识别活体检测技术讨论:基于背景人脸相对运动的活体判断方法
  17. SPSS联合Excel进行logistic回归亚组交互效应(交互作用)的可视化分析
  18. android、ios、windows等平台回声消除的解决方案
  19. 最新好看的自适应手机版软件APP下载类网站源码,游戏软件应用网站源码,自适应手机端Pbootcms模板
  20. 修改织梦后台登陆地址login.php,织梦后台免登录的实现步骤 Dede后台自动登录的修改方法...

热门文章

  1. 调试Excel VBA代码
  2. 设置SAP登录后的背景图片(很有意思)
  3. B站回港受热捧——破圈下的资本新故事
  4. 服务中启动oracle服务,Linux下如何自动启动Oracle服务
  5. matlab绘图z=sin(x_「matlab画三维图」Matlab 应用之绘制三维图形(基础篇) - seo实验室...
  6. vc6怎么看错误在哪_网红莉哥怎么红的为什么被封了 网红莉哥1400事件视频在哪看...
  7. 学python最重要的是_基础、语法都不是最重要的,学Python最重要的是什么?编程思路!-站长资讯中心...
  8. c语言若对函数未加,【单选题】C 语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为A. void B. double C. int D. char...
  9. linux sysconf函数,linux c sysconf函数 得到系统配置
  10. 计算机术语中CPU是指______,试题题库_计算机基础知识考试试卷全套.doc