thinkphp框架中引入ping++支付server SDK
来源:互联网 发布:股民资源搜索软件 编辑:程序博客网 时间:2024/06/04 18:56
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
的填写,请到个人中心去填写,很容易的,不再赘述。
1 0
- thinkphp框架中引入ping++支付server SDK
- 引入ping++的server SDK,thinkphp报错:unexpected 符号“,”
- ThinkPHP中引入七牛SDK
- thinkphp中引入微信库
- thinkphp框架使用支付宝
- ThinkPHP 框架下支付宝支付
- thinkphp中引入文件陷阱
- java中Ping++支付模块
- 微信JS-SDK官方支付接口在THINKPHP中使用
- Thinkphp框架引入外部文件不生效
- ping++支付接口对接(基于SSH框架)
- 踩坑筆記 —— ThinkPHP 框架下微信支付
- thinkphp框架中的支付宝支付功能简单介绍
- ping++支付
- ping++支付
- CodeIgniter框架集成微信扫码支付SDK
- ThinkPHP-分页效果及自定义类文件引入框架
- thinkphp 支付
- apache与Tomcat联系及区别
- 虚拟机VMware自定义安装Linux redhat 之企业版CentOS
- JAVA Class String
- bzoj2466高斯消元求解XOR方程
- Ubuntu 12.04升级Boost库至1.55
- thinkphp框架中引入ping++支付server SDK
- php中文乱码解决
- 三月份--月总结
- Unity3D研究院之提取游戏资源的三个工具支持Unity5(八十四)
- 桌面文件删除不掉的解决方案
- keystone WSGI流程
- 纪念
- 面试宝典之三 百度软研
- openwrt 编译相关