龙空技术网

APP的支付宝支付流程

PHP互联网架构师 181

前言:

此刻朋友们对“支付宝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