ThinkPHP框架下整合支付宝支付功能图文教程
ThinkPHP  /  管理员 发布于 8年前   212
本文实例讲述了ThinkPHP框架下整合支付宝支付功能。分享给大家供大家参考,具体如下: 根据“快速接入”中的流程,两者大同小异,都是进行: 虽然官方文档已经做的很详细、成熟,不过还是有几点需要着重提醒一下,以免不必要的纠结。 如下图所示,我在此创建了一个简单的入口文件,根据开发文档中的介绍是需要统一编码格式的,此处我选择的是UTF-8 需要注意的是,接口指明需要POST方式进行提交请求 对于支付宝的配置信息,我写在 Application/Common/Conf/config.php中 将前面所下载的SDK放入自定义的位置,在此,我习惯放在如下的路径中,…\ThinkPHP\Library\Vendor\Alipay,特别提醒一点,对于各文件类的引用会依据代码框架而不同,需要自行确认。 提示 此时,通过获取所提交过来的post数据,进行订单号的剥离,从而进行下一步的业务逻辑处理即可. 对比来看,其实 PC 端的代码设计与手机端大同小异,在此点明一下使用情景,可进行参考。 提示: 测试发现,接口中定义“subject”时,对于文字的数目有要求,不能超过四个字,至于字母似乎没有特别限制,开发过程中原想显示全部的商品名称却无法实现,还请注意。 提供的代码暂时未进行界面的设计,可参考 手机端接口思想,接收并处理订单信息后再唤醒支付宝,当前的代码可以在公共文件配置正确的情况下,直接公网访问接口链接即可展示效果。 支付成功后的通知处理,请参考手机端实现方式. 源代码下载>>> 更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。 希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。背景
一.接入配置
1).接入步骤
2).配置截图
3).提示说明
二.手机网站支付接口实现
1).测试入口页面
2).html代码参考
3).支付宝配置信息
//支付宝 支付配置 'ALI_CONFIG' => array( 'gatewayUrl' => 'https://openapi.alipay.com/gateway.do',//支付宝网关(固定)' 'appId' => '2017xxxxxxxx9',//APPID即创建应用后生成 //由开发者自己生成: 请填写开发者私钥去头去尾去回车,一行字符串 'rsaPrivateKey' => 'MIIExxxxxxxxxxxxxxxxxxxxxxxxxxxq', //支付宝公钥,由支付宝生成: 请填写支付宝公钥,一行字符串 'alipayrsaPublicKey' => 'IIBxxxxxxxxxxxxxxxxxxxEFAA', 'notifyUrl' => 'http://www.xxx.com/m/cartpay/notify_ali', // 支付成功通知地址 'returnUrl' => 'http://www.xxx.com', // 支付后跳转地址 'returnPcUrl' => 'http://www.xxx.com/Home', // PC端扫码支付后跳转地址 ),
4).服务端SDK导入
5).支付接口实现
在请求唤醒支付宝支付的路径中进行接口代码的编辑
代码实现如下:
/** * 支付宝支付post提交页面 */ public function alipay(){ if (IS_POST){ Vendor('Alipay.aop.AopClient'); Vendor('Alipay.aop.request.AlipayTradeWapPayRequest'); //$out_trade_no = I('post.order_sn'); /* * $out_trade_no 为自己业务逻辑中要支付的订单号 * 可从POST数据中提取,具体安全起见可自行加密操作 此处仅举例测试数据 * $order_amount 为要进行支付的金额 注意要用小数转换 * 例如:3.50,10.00 * $aliConfig 获取支付宝配置数据 */ $out_trade_no = '2017M'.time(); $body = '欢迎购买商品,愿您购物愉快'; $subject = '你好'; $order_amount = 9.00; $aliConfig = C('ALI_CONFIG'); $aop = new \AopClient(); $aop->gatewayUrl = $aliConfig['gatewayUrl']; $aop->appId = $aliConfig['appId']; $aop->rsaPrivateKey = $aliConfig['rsaPrivateKey']; $aop->alipayrsaPublicKey=$aliConfig['alipayrsaPublicKey']; $aop->apiVersion = '1.0'; $aop->postCharset='UTF-8'; $aop->format='json'; $aop->signType='RSA2'; $request = new \AlipayTradeWapPayRequest (); $bizContent = "{" . " \"body\":\"$body.\"," . " \"subject\":\"$subject\"," . " \"out_trade_no\":\"$out_trade_no\"," . " \"timeout_express\":\"90m\"," . " \"total_amount\":$order_amount," . " \"product_code\":\"QUICK_WAP_WAY\"" . " }"; $request->setBizContent($bizContent); $request->setNotifyUrl($aliConfig['notifyUrl']); $request->setReturnUrl($aliConfig['returnUrl']); $result = $aop->pageExecute ( $request); echo $result; }else{ echo 'sorry,非法请求失败'; } }
6).支付成功后的通知处理
[注意]: /** * 支付宝支付通知功能 */ public function notify_ali(){ $out_trade_no = I('post.out_trade_no'); $this->toUpdatePayInfo($out_trade_no,'ali'); echo 'success'; }
三.电脑网站支付接口实现
1).支付接口实现
2).实现效果截图
3).代码实现如下:
/** * 电脑端唤醒 支付宝扫码支付接口 */ public function aliPayPage(){ $out_trade_no = '2017PC'.time(); $order_amount = '12.88'; $proName = "真米黑米 XXXXXX"; Vendor('Alipay.aop.AopClient'); Vendor('Alipay.aop.request.AlipayTradePagePayRequest'); //构造参数 $aop = new \AopClient(); $aliConfig = C('ALI_CONFIG'); $aop->gatewayUrl = $aliConfig['gatewayUrl']; $aop->appId = $aliConfig['appId']; $aop->rsaPrivateKey = $aliConfig['rsaPrivateKey']; $aop->apiVersion = '1.0'; $aop->signType = 'RSA2'; $aop->postCharset= 'utf-8'; $aop->format='json'; $request = new \AlipayTradePagePayRequest (); $request->setReturnUrl($aliConfig['returnPcUrl']); $request->setNotifyUrl($aliConfig['notifyUrl']); $request->setBizContent( "{" . " \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," . " \"subject\":\"$proName\"," . " \"out_trade_no\":\"$out_trade_no\"," . " \"total_amount\":$order_amount," . " \"body\":\"Iphone6 16G\"" . " }"); //请求 $result = $aop->pageExecute ($request); //输出 echo $result; }
附录:
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号