前言:
此刻朋友们对“支付宝php”都比较关心,小伙伴们都需要剖析一些“支付宝php”的相关资讯。那么小编也在网摘上网罗了一些关于“支付宝php””的相关文章,希望各位老铁们能喜欢,小伙伴们一起来了解一下吧!最近在做应用商城涉及到小程序微信支付和app支付宝支付,所以也大概地将这方面的东西看了一个遍,整个流程梳理总结一下。
环境是:tp5 + 小程序 + App
app_id 商户appid
private_path 商户私钥
1.生成密钥并上传
2.PHP的demo下载地址
3.php支付消息
<?php/** out_trade_no string 支付单号 * total_fee string 支付金额(单位分)* notify_url 支付后回调地址* Date:2021-03-12*///微信支付function parampay($out_trade_no,$total_fee,$notify_url){ $body='商品支付';//支付标题 header("Content-type:text/html;charset=utf-8"); require_once './alipay/aop/AopClient.php'; $private_path = "./alipay/key/app_private_key.pem";//私钥路径 //构造业务请求参数的集合(订单信息) $content = array(); $content['timeout_express'] = "30m"; $content['product_code'] = "QUICK_MSECURITY_PAY";//销售产品码,固定值 $content['total_amount'] = $total_fee; $content['subject'] = $body; $content['out_trade_no'] = $out_trade_no; $con = json_encode($content);//$content是biz_content的值,将之转化成json字符串 //公共参数 $Client = new \AopClient();//实例化支付宝sdk里面的AopClient类,下单时需要的操作,都在这个类里面 $param['app_id'] = '';//商户信息 $param['method'] = 'alipay.trade.app.pay';//接口名称,固定值 $param['format'] = 'json';//请求使用的编码格式 $param['charset'] = 'utf-8';//请求使用的编码格式 $param['sign_type'] = 'RSA2';//商户生成签名字符串所使用的签名算法类型 $param['timestamp'] = date("Y-m-d H:i:s");//发送请求的时间 $param['version'] = '1.0';//调用的接口版本,固定为:1.0 $param['notify_url'] = SITE_URL.'/api/Onilnestudy/alipaynotify'; $param['biz_content'] = $con;//业务请求参数的集合,长度不限,json格式,即前面一步得到的 // dump($param); $paramStr = $Client->getSignContent($param);//组装请求签名参数 // $paramStr = 'a=123'; $sign = $Client->alonersaSign($paramStr, $private_path, 'RSA2', true);//生成签名 // dump($sign); $param['sign'] = $sign; return $info = $Client->getSignContentUrlencode($param);//最终请求参数 }?>
异步回调消息处理
public function alipaynotify(){ $str = ''; foreach ($_REQUEST as $k => $v) { $str .= $k.':'.$v."\r\n"; } $fp = fopen("./alipaynotify.txt","a"); flock($fp, LOCK_EX) ; fwrite($fp,"--返回支付数据--执行日期:".strftime("%Y-%m-%d %H:%M:%S",time())."--------------------\r\n".$str."\r\n\r\n"); flock($fp, LOCK_UN); fclose($fp); if($_POST['trade_status'] == 'TRADE_SUCCESS'){ //此处应该更新一下订单状态,商户自行增删操作 $map = []; $map['pay_no'] = $_POST['out_trade_no']; $info = DB::name("onilne_study_buy")->where($map)->find(); if ($info['is_status'] > 0) { die('success'); } if ($info) { $data = [ "is_status" => 1, "pay_time" => date('Y-m-d H:i:s'), ]; $re = DB::name("onilne_study_buy")->where($map)->update($data); if ($re) { die("SUCCESS"); } } }else{ die("fail"); } }
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #支付宝php