> 文档中心 > php支付宝app支付后台处理(老版)

php支付宝app支付后台处理(老版)

以下代码为后台处理部分,真实可用:哈哈哈哈哈,没骗人,具体支付宝app支付的申请,签约我就不说了,具体的去看官方文档

--》https://docs.open.alipay.com/204

 public function create_signOp(){ $pay_sn = $_POST['pay_sn']; if (!preg_match('/^\d{18}$/',$pay_sn)){     output_error('该订单不存在'); } $mygoods=array(); //合作身份者id,以2088开头的16位纯数字 $mygoods['partner']="2088xxxxxxxxxx"; //商家账号 $mygoods['seller_id']="xxxxxxxx@qq.com"; $mygoods['service']="mobile.securitypay.pay"; $mygoods['payment_type']="1"; $mygoods['_input_charset']="utf-8"; $mygoods['it_b_pay']="30m"; //订单号 $mygoods['out_trade_no']=$pay['pay_sn']; //主题 $mygoods['subject']=$pay['pay_sn']; //商品描述信息 $mygoods['body']=$pay['pay_sn']; //商品价格 $mygoods['total_fee']=$_order_info['order_amount']; //服务器端异步响应地址 $mygoods['notify_url']= ""; //排序// print_r($mygoods);// exit(); $mygoods = $this->argSort($mygoods); //拼接 $mystr = $this->createLinkstring($mygoods); //签名 $sign = $this->rsaSign($mystr); //对签名进行urlencode转码// $sign ='TGsHKw4XLpQUq34YVIp4pxFnZkjCJMt09FJpBm56grRpRDgcwZRh94txZQAB94HxOd89XwTZqdncczrCcgXlPETcpuWDa70GBCAEkn8RtTs2t6UopDWcfU7ZT3/Evhsapgf58+zAS7x9lynYpw1JdoshKIgU5pnfS5vWC1VsbvU='; $sign = urlencode($sign);// $res = $this->verify($mystr,$sign);// var_dump($res);// exit(); //生成最终签名信息 $mystr = $this->createstr($mygoods);// exit(json_encode(array('sign'=>$sign,'shopping'=>$mygoods)));// $orderInfor = $mystr."&sign=".'"'.$sign.'"'."&sign_type=".'"'.RSA.'"'; $data=array(); $data['status'] = 1; $data['sign'] = $sign; $data['pay_info'] = $mygoods; exit(json_encode($data));    }    function rsaSign($data, $private_key_path) { $private_key_path='/www/wwwroot/mall2/appinterface/control/rsa_private_key.pem'; $priKey = file_get_contents($private_key_path); $res =  openssl_pkey_get_private($priKey); openssl_sign($data, $sign, $res); openssl_free_key($res); //base64编码 $sign = base64_encode($sign);// echo $sign; return $sign;    }    function createLinkstring($para) { $arg = ""; while (list ($key, $val) = each ($para)) {     $arg.=$key."=".$val."&"; } //去掉最后一个&字符 $arg = substr($arg,0,count($arg)-2); //如果存在转义字符,那么去掉转义 if(get_magic_quotes_gpc()){$arg = stripslashes($arg);} return $arg;    }    function createstr($para) { $arg = ""; while (list ($key, $val) = each ($para)) {     $arg.=$key."=".$val."&"; } //去掉最后一个&字符 $arg = substr($arg,0,count($arg)-2); //如果存在转义字符,那么去掉转义 if(get_magic_quotes_gpc()){$arg = stripslashes($arg);} return $arg;    }    function argSort($para) { ksort($para); reset($para); return $para;    }    function verify($data, $sign) { //读取支付宝公钥文件 $pubKey = "/www/wwwroot/mall2/appinterface/control/rsa_public_key.pem"; //转换为openssl格式密钥 $priKeys = file_get_contents($pubKey); $res = openssl_get_publickey($priKeys); //调用openssl内置方法验签,返回bool值 $result = (bool)openssl_verify($data, base64_decode($sign), $res); //释放资源 openssl_free_key($res); //返回资源是否成功 var_dump($result);    }