zoukankan      html  css  js  c++  java
  • tp3.2 支付宝app支付

    pay方法

     1    /**
     2      *支付宝支付
     3      */
     4     public function pay($param) {
     5         vendor('alipay.AopSdk');// 加载类库
     6         $config = array(
     7             'appid' =>'2018032002414339',//商户密钥
     8             'rsaPrivateKey' =>'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',//私钥
     9             'alipayrsaPublicKey'=>'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',//公钥
    10             'charset'=>strtolower('utf-8'),//编码
    11             'notify_url' =>'http://xxx/jiceng/Notifyurl/index',//回调地址(支付宝支付成功后回调修改订单状态的地址)
    12             'payment_type' =>1,//(固定值)
    13             'seller_id' =>'2088031565381518',//收款商家账号5abd9e4d92fef
    14             'charset'    => 'utf-8',//编码
    15             'sign_type' => 'RSA2',//签名方式
    16             'timestamp' =>date("Y-m-d H:i:s"),
    17             'version'   =>"1.0",//固定值
    18             'url'       => 'https://openapi.alipay.com/gateway.do',//固定值
    19             'method'    => 'alipay.trade.app.pay',//固定值
    20         );
    21 //构造业务请求参数的集合(订单信息)
    22         $order=date("YmdHis").time().mt_rand(1000,9999);//订单号
    23         $price=$param['price'];//价格
    24         $uid=$param['userid'];//用户编号
    25         Response::debug($price.'+'.$uid);
    26         //添加账单
    27         $obj = array(
    28             "userid" => $uid,
    29             "charge" =>$price,
    30             'paytime'=>time(),
    31             "paytype"=>'支付宝',
    32             "paystate"=>0,
    33             "order"=>$order
    34         );
    35         $insert=M('api_charge')->add($obj);
    36         $content = array();
    37         $content['body'] = '';
    38         $content['subject'] = '充值';//商品的标题/交易标题/订单标题/订单关键字等
    39         $content['out_trade_no'] = $order;//商户网站唯一订单号
    40         $content['timeout_express'] = '1d';//该笔订单允许的最晚付款时间
    41         $content['total_amount'] = floatval($price);//订单总金额(必须定义成浮点型)
    42         $content['seller_id'] =  $config['seller_id'];//收款人账号
    43         $content['product_code'] = 'QUICK_MSECURITY_PAY';//销售产品码,商家和支付宝签约的产品码,为固定值QUICK_MSECURITY_PAY
    44         $content['store_id'] = '001';//商户门店编号
    45         $con = json_encode($content);//$content是biz_content的值,将之转化成字符串
    46 //公共参数
    47         $param = array();
    48         $Client = new AopClient();//实例化支付宝sdk里面的AopClient类,下单时需要的操作,都在这个类里面
    49         $param['app_id'] = $config['appid'];//支付宝分配给开发者的应用ID
    50         $param['method'] = $config['method'];//接口名称
    51         $param['charset'] = $config['charset'];//请求使用的编码格式
    52         $param['sign_type'] = $config['sign_type'];//商户生成签名字符串所使用的签名算法类型
    53         $param['timestamp'] = $config['timestamp'];//发送请求的时间
    54         $param['version'] = $config['version'];//调用的接口版本,固定为:1.0
    55         $param['notify_url'] = $config['notify_url'];//支付宝服务器主动通知地址
    56         $param['biz_content'] = $con;//业务请求参数的集合,长度不限,json格式
    57 
    58 //生成签名
    59 
    60         $paramStr = $Client->getSignContent($param);
    61         $sign = $Client->alonersaSign($paramStr,$config['rsaPrivateKey'],'RSA2');
    62         $param['sign'] = $sign;
    63         $str = $Client->getSignContentUrlencode($param);
    64 
    65 
    66 
    67         return array('url'=>$str);
    68     }

    异步回调

     1  /**
     2      *支付宝支付回调
     3      */
     4     public function index()
     5     {
     6 
     7         vendor('alipay.AopSdk');// 加载类库
     8         $aop = new AopClient;
     9         $aop->alipayrsaPublicKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
    10         $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
    11         if ($flag) {
    12             if ($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS')
    13             {
    14                 $out_trade_no = $_POST['out_trade_no'];    //商户订单号
    15                     $data['paystate']=1;
    16                     $res = D('api_charge')->where(array('order' => $out_trade_no))->save($data);
    17                     if( $res === false ){
    18                        echo 'fail';
    19                    }else{
    20                         echo 'success';
    21                     }
    22 
    23             }
    24         }
    25 
    26 
    27     }
    成为不了聪明的人,那就做一个有耐心、肯钻研,坚持不懈,永不放弃的人……
  • 相关阅读:
    singleTon 模式
    最近的工作经验
    sql server里的快捷键
    Bridge 模式
    [转]在.NET客户端程序中使用多线程
    wse
    关于高频查询界面
    判断字段值已经存在
    获取当前供应商的联系人信息
    获取系统常量
  • 原文地址:https://www.cnblogs.com/wrld/p/9117851.html
Copyright © 2011-2022 走看看