基于ThinkPHP框架的支付宝沙箱支付
什么是支付宝沙箱支付?
简单理解就是:当你开发的app在是正式上线前,利用支付宝所提供的沙箱支付对你的系统与支付相关流程数据进行虚拟化的模拟支付,以达到软件正式上线前的系统优化,稳定性优化等。相对于本科生来说在做毕业设计的时候,支付宝的插件还是蛮好用的。
tp框架基本目录
如何获取支付宝支付插件?
请到支付宝官网去查看相应的软件接入流程,下载所需开发语言相应的SDK。本文我所采用的是php语言来进行相应的配置操作。
链接: 支付宝沙箱接入指导.
- 如今的更新不断的删繁就简,只需要这样简单的配置便可以使用。
- 本文采用之前博主所做过的简单系统来进行讲解,思路是差不多的。
按照接入指导配置好沙箱应用。
将插件放入你系统的扩展文件中
将配置文件(alipay.php)放入你系统的config文件中
- 在配置文件中填写相应的信息,回看沙箱应用所配置的信息便知。
<?php
$config = array (
//应用ID,您的APPID。
'app_id' => "",
//商户私钥,您的原始格式RSA私钥
'merchant_private_key' => "",
//异步通知地址
'notify_url' => "http://工程公网访问地址/alipay.trade.wap.pay-PHP-UTF-8/notify_url.php",
//同步跳转
'return_url' => "http://mitsein.com/alipay.trade.wap.pay-PHP-UTF-8/return_url.php",
//编码格式
'charset' => "UTF-8",
//签名方式
'sign_type'=>"RSA2",
//支付宝网关
'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
//支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
'alipay_public_key' => "",
);
在学校学习期间一般常用的开发模式一般是MVC模式
- 当然要先按照文档里的参考文件在Controller里写好我们的Pay方法。当我们前台页面用到的时候再触发该方法即可。
<div >
<span class="pay"><a href="javascript:if(confirm('确认支付?')) location='{:url('index/cars/webAlipay',array('id'=>$buy.id))}'">支付</a> </span>
</div>
public function webAlipay($id='')
{
$aop = new AopClient;
$aop->gatewayUrl = "https://openapi.alipaydev.com/gateway.do"; //网关地址要使用沙箱网关alipaydev
$aop->appId = "**填写自己应用的相应信息**";
$aop->rsaPrivateKey = **填写自己应用的相应信息**;
$aop->format = "json";
$aop->apiVersion = '1.0';
$aop->postCharset='UTF-8';
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey =**填写自己应用的相应信息** ;
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
$request = new AlipayTradePagePayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
$buy_full_name=db('cars')->where('id',$id)->value('full_name');
$buy_price=db('cars')->where('id',$id)->value('price');
//商品信息配置,如下图所示。
$info = json_encode([
'body'=>'商品简述',
'subject'=>$buy_full_name,
'out_trade_no'=>md5(time()),
'timeout_express'=>'600s',
'total_amount'=>$buy_price,
'product_code'=>'FAST_INSTANT_TRADE_PAY'],JSON_UNESCAPED_UNICODE);
//数据库相关的更新操作
db("orderinfo")->insert([
'menber_name' => cookie('member')['member_name'],
'mobile_number' => cookie('member')['mobile_number'],
'full_name' => $buy_full_name,
'price' => $buy_price,
'datetime' => date('Y-m-d H:i:s',time()),
]);
db('cars')->where('id',$id)->update(['status'=>-1]);
//设置响应后的界面
$request->setBizContent($info);
$request->setReturnUrl("http://localhost/ershouche/public/index/member/orderinfo.html");
$request->setNotifyUrl("请填写你的异步回调通知地址,需要无任何验证即可访问");
$result = $aop->pageExecute($request);
return $result;
}
- 商品信息如图所示
- 网页版支付界面
- 蛮适合在毕业设计内容与支付相关的系统使用。这个老版的插件包我会上传到我的资源包。技术更新快建议使用新的包。