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 }