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);
    }

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值