Thinkphp 支付宝插件的引入 和调用

本文版权归本宝宝所有 未得允许不得转载

下载地址传送门 https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.twLYka&treeId=62&articleId=103566&docType=1

1 文件 demo 的下载  后 选择 md5版本或者是RDA版本    我这儿选择MD5版本  php utf8  版本    更改一下 文件名  

2 文件的放入 在 Thinkphp/library/vendor  

二 : 关键点技术分析  

1 配置参数的 分析 于讲解 

  找到alipay.config.php  

//合作身份者ID,签约账号,以2088开头由16位纯数字组成的字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
$alipay_config['partner']		= '';

//收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号
$alipay_config['seller_id']	= $alipay_config['partner'];

// MD5密钥,安全检验码,由数字和字母组成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
$alipay_config['key']			= '';

// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
$alipay_config['notify_url'] = "http://商户网址/create_direct_pay_by_user-PHP-UTF-8/notify_url.php";

// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
$alipay_config['return_url'] = "http://商户网址/create_direct_pay_by_user-PHP-UTF-8/return_url.php";

//签名方式
$alipay_config['sign_type']    = strtoupper('MD5');

//字符编码格式 目前支持 gbk 或 utf-8
$alipay_config['input_charset']= strtolower('utf-8');

//ca证书路径地址,用于curl中ssl校验
//请保证cacert.pem文件在当前文件夹目录中
$alipay_config['cacert']    = getcwd().'\\cacert.pem';

//访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
$alipay_config['transport']    = 'http';

// 支付类型 ,无需修改
$alipay_config['payment_type'] = "1";
		
// 产品类型,无需修改
$alipay_config['service'] = "create_direct_pay_by_user";

通过 查看 这些 基本配置参数 我们 可以将参数 配置到config.php文件中  

 1 'ALIPAY_CONFIG' => array(
 2         'partner' => '',  //身份信息 (必填)
 3         'seller_id' => '',  //id  (必填)
 4         'key' => '',      //key值(必填)
 5         'notify_url' => '', //必须是外网可以访问到的地址 
 6         'return_url' => '',  //支付宝返回后的同步跳转地址
 7         'sign_type' => strtoupper('MD5'),  
 8         'input_charset' => strtolower('utf-8'),
 9         'transport' => 'http',
10         'cacert' => VENDOR_PATH.'Alipay/cacert.pem',
11         'payment_type' => '1',
12         'service' => 'create_direct_pay_by_user',
13         'anti_phishing_key' => '',  //钓鱼 可以不填写
14         'exter_invoke_ip' => '',    //可以不填写
15     ),

2 php方法的写入 可以放入 function 中方便我们的使用

function subPayment($tradeNo, $amount, $subject, $body="")
{
    $alipayConfig = C('ALIPAY_CONFIG');
    //发起请求时的参数
    $requestParam = $alipayConfig;
    $requestParam['out_trade_no'] = $tradeNo;
    $requestParam['subject'] = $subject;
    $requestParam['total_fee'] = $amount;
    $requestParam['body'] = $body;
    $requestParam['_input_charset'] = trim(strtolower($alipayConfig['input_charset']));

    vendor('Alipay/lib/alipay_submit','','.class.php');
    $alipaySubmitObj = new \AlipaySubmit($alipayConfig);
    $htmlText = $alipaySubmitObj->buildRequestForm($requestParam, "get", "确定");
    echo $htmlText;
}

3内部控制器的调用

subPayment($orderData['order_no'], $orderData['amount'], NOW_TIME.'支付测试', NOW_TIME.'支付描述');
            //参数1 生成 唯一的编号  参数2 金额  参数3: 支付的subject 参数 4 支付描述信息

 

4 根据返回结果信息做相应的更改  创建一个控制器

①支付宝返回同步地址的体现

 1 private $_config;
 2     private $_notifyObj;
 3     function _initialize(){
 4         vendor('Alipay/lib/alipay_notify','','.class.php');
 5         $this->_config = C('ALIPAY_CONFIG');
 6         $this->_notifyObj = new \AlipayNotify($this->_config);
 7     }
 8     //同步的通知地址
 9     public function returnUrl()
10     {
11         $checkResult = $this->_notifyObj->verifyReturn();
12         if ($checkResult) {
13             if ($_GET['is_success'] == "T" && $_GET['trade_status'] == "TRADE_SUCCESS") {
14                 $this->success('对订单'.$_GET['out_trade_no'].'支付成功',U('User/index'));
15                 return;
16             }else{
17                 $this->error('支付失败,请进订单中心查看!');
18                 return;
19             }
20         }else{
21             $this->error('支付通知验证失败,请联系管理员!');
22             return;
23         }
24     }

②异步地址的修改 ps:必须在外网才能够生效 成功 后必须echo "success" 这个字符串 否则支付宝监听不到 会在24小时20分钟一直提醒

 1  //异步的通知地址
 2     public function notifyUrl()
 3     {
 4         $checkResult = $this->_notifyObj->verifyNotify();
 5         if ($checkResult) {
 6             $tradeStatus = $_POST['trade_status'];
 7             $outTradeNo = $_POST['out_trade_no'];
 8             $tradeNo = $_POST['trade_no'];
 9             if ($tradeStatus == "TRADE_SUCCESS") {
10                 $orderData = D('Order')->where(array('order_no'=>$outTradeNo))->find();
11                 if (empty($orderData)) {
12                     M('log')->add(array(
13                         'ser_type' => 1,
14                         'code' => 'ORDER_EXC',
15                         'ser_data' => serialize(array('order_no'=>$outTradeNo,'trade_no'=>$tradeNo)),
16                         'create_time'=>NOW_TIME,
17                     ));
18                     exit;
19                 }
20 
21                 if ($orderData['status'] != 0) {
22                     M('log')->add(array(
23                         'ser_type' => 2,
24                         'code' => 'ORDER_EXC',
25                         'ser_data' => serialize(array('order_no'=>$outTradeNo,'trade_no'=>$tradeNo))
26                     ));
27                     exit;
28                 }
29 
30                 D('Order')->where(array('order_no'=>$outTradeNo))->save(array('status'=>1));
31 
32                 echo "success";
33             }else{
34                 D('Order')->where(array('order_no'=>$outTradeNo))->save(array('status'=>2));
35             }
36         }else{
37             echo "fail";
38         }
39 
40     }

 

转载于:https://www.cnblogs.com/lt-com/p/6432684.html

thinkphp开源商城 含支付宝微信支付 三级分销商城: (一) 系统管理:菜单权限、前台菜单、角色管理、职员管理、登录日志、操作日志、图片空间、商城消息、风格设置、计划任务 (二) 基础设置:商城配置、导航管理、广告管理、广告位置、银行管理、支付管理、地区管理、友情链接、快递管理、消息模板 (三) 会员管理:会员等级、会员管理、账号管理 (四) 文章管理:文章管理、文章分类 (五) 运营管理:推荐管理、商品推荐、店铺推荐、品牌推荐、财务管理、资金管理、提现申请、结算管理、商家结算 (六) 订单管理:订单管理、订单管理、投诉管理、退款管理 (七) 店铺管理:店铺认证、开店申请、店铺管理、停用店铺 (八) 商品管理:商品管理、已上架商品、待审核商品、违规商品、商品分类、商品属性、品牌管理、商品规格、评价管理 (九) 虚拟物品自动发货:虚拟商品上架、卡密管理、自动发货 (十) 扩展管理:插件管理、钩子管理 (十一) 分销管理:分销管理菜单、分销商家列表、分销商品列表、佣金分成列表、推广用户列表 (十二) 数据分析:商品销售排行、店铺销售统计、销售额统计、销售订单统计、新增会员统计、会员登录统计 (十三) 营销管理:三级分销,商品团购,限时拍卖、微砍价、优惠券、满减、满送、满包邮、签到送积分、积分商城 (十四) 微信管理:公众号设置、自定义菜单、用户管理、主动回复文本信息、主动回复图文信息、微信消息模板 (十五) 支付管理:支付宝支付,微信支付、银联支付、货到付款、积分支付、余额支付 (十六) 短信接口:中国网建、阿里大于 (十七) 登录接口:QQ登录、微信登录、微博登录 (十八) 物流接口:快递100接口 (十九) 其他接口:UCenter通信接口(可与社区论坛等同步登录退出)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值