PHP接入支付宝支付
来源:互联网 发布:友声电子称软件下载 编辑:程序博客网 时间:2024/06/10 05:26
支付宝有一个大坑就是签名的生成,生成以后不知道是哪一个!
点击签名工具
点击生成密匙
这两个参数需要好好保存,很关键的,这个我的是乱写的
进行签名生成
生成好以后进行后台修改
这时候就开始接入支付宝的sdk
放入以后修改需要用到的路径(namespace xxx\xxx;)
终于开始代码了:
官方文档:
$aop = new AopClient ();$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';$aop->appId = 'your app_id';$aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串';$aop->alipayrsaPublicKey='请填写支付宝公钥,一行字符串';$aop->apiVersion = '1.0';$aop->signType = 'RSA2';$aop->postCharset='GBK';$aop->format='json';$request = new AlipayTradePayRequest ();$request->setBizContent("{" ."\"out_trade_no\":\"20150320010101001\"," ."\"scene\":\"bar_code\"," ."\"auth_code\":\"28763443825664394\"," ."\"product_code\":\"FACE_TO_FACE_PAYMENT\"," ."\"subject\":\"Iphone616G\"," ."\"buyer_id\":\"2088202954065786\"," ."\"seller_id\":\"2088102146225135\"," ."\"total_amount\":88.88," ."\"discountable_amount\":8.88," ."\"body\":\"Iphone616G\"," ."\"goods_detail\":[{" ."\"goods_id\":\"apple-01\"," ."\"goods_name\":\"ipad\"," ."\"quantity\":1," ."\"price\":2000," ."\"goods_category\":\"34543238\"," ."\"body\":\"特价手机\"," ."\"show_url\":\"http://www.alipay.com/xxx.jpg\"" ."}]," ."\"operator_id\":\"yx_001\"," ."\"store_id\":\"NJ_001\"," ."\"terminal_id\":\"NJ_T_001\"," ."\"extend_params\":{" ."\"sys_service_provider_id\":\"2088511833207846\"" ."}," ."\"timeout_express\":\"90m\"" ."}");$result = $aop->execute ( $request); $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";$resultCode = $result->$responseNode->code;if(!empty($resultCode)&&$resultCode == 10000){echo "成功";} else {echo "失败";}
//$aop->rsaPrivateKey $aop->alipayrsaPublicKey 为刚开始是生成的两个字符串复制粘贴过来就行了
这时候需要对这段代码进行修改了
这种看着不舒服 用着也麻烦,很容易出错
//测试一下 看能不能保持进去
//引入必要的类//转换格式header("Content-type: text/html; charset=utf-8"); //订单名称,必填 $subject = '商品'; //付款金额,必填 $price = 0.01;//支付宝和微信不一样 不需要去乘100 $total_amount = (float)$price;//这里进行一个转换 //商品描述,可空 $body = '商品描述'; //超时时间 $timeout_express="1m"; $payRequestBuilder = new AlipayTradeWapPayContentBuilder(); $payRequestBuilder->setBody($body); $payRequestBuilder->setSubject($subject); $payRequestBuilder->setOutTradeNo($out_trade_no); $payRequestBuilder->setTotalAmount($total_amount); $payRequestBuilder->setTimeExpress($timeout_express); //同步跳转(123.123.com换成自己域名) $configs['return_url'] = "你的同步跳转地址,也就是通知页面"; $configs = array ( //应用ID,您的APPID。 'app_id' => "你的APPid", //RSA2商户私钥,(换成自己私钥)查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝私钥。 'merchant_private_key' => "密匙", //异步通知地址(123.123.com换成自己域名) 'notify_url' => "你的回调地址(这个很重要,关系到是否支付成功,和逻辑的处理)", //编码格式(不要修改) 'charset' => "UTF-8", //签名方式(根据你所有的签名方式) 'sign_type'=>"RSA2", //支付宝网关(不要修改) 'gatewayUrl' => "https://openapi.alipay.com/gateway.do", //RSA2支付宝公钥,(换成自己公钥)查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 'alipay_public_key' => "支付宝公钥",); $payResponse = new AlipayTradeService($configs); $result=$payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
这样支付就算可以了 这个时候就需要就行处理异步回调了
异步回调不需要解释太多,就是支付宝请求接口,验证是否是支付宝请求,解析传递参数是否是支付成功,进行对应的逻辑操作
//请入配置//开始进行验签$arr=$_POST;$alipaySevice = new AlipayTradeService($config); $alipaySevice->writeLog(var_export($_POST,true));$result = $alipaySevice->check($arr);if($result) {//验证成功//商户订单号$out_trade_no = $_POST['out_trade_no'];//支付宝交易号$trade_no = $_POST['trade_no'];//交易状态$trade_status = $_POST['trade_status']; if($_POST['trade_status'] == 'TRADE_FINISHED') {//判断该笔订单是否在商户网站中已经做过处理 echo "fail"; }else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {//判断该笔订单是否在商户网站中已经做过处理 echo "fail"; } //——请根据您的业务逻辑来编写程序—— echo "success";//请不要修改或删除 需要返回给支付宝成功 这样支付就不要再次请求该接口 }else { //验证失败 echo "fail";//请不要修改或删除}
阅读全文
1 0
- PHP接入支付宝支付
- php 接入 paypal 支付
- Android支付接入:支付宝
- ReactNative接入支付宝支付
- iOS接入支付宝支付
- 支付宝-APP支付接入
- ReactNative接入支付宝支付
- ReactNative接入支付宝支付
- 支付宝支付接入指南
- app 支付宝支付接入
- ReactNative接入支付宝支付
- ReactNative接入支付宝支付
- 支付宝pc端支付接入PHP端
- 支付宝pc端支付接入PHP实现
- php支付宝开发之pc网站支付接入
- PHP实现支付宝手机WAP支付接入说明
- 支付宝支付接入+微信支付
- php接入支付宝异步通知
- 浅谈android网络和电量优化
- ListView的Item中包含Button等导致setOnItemClickListener失效的问题
- 数据库管理员
- JSONobject.getString()和JSONobject.optString()
- spark学习-33-Spark安全机制SecurityManager
- PHP接入支付宝支付
- Java中Array Arrays ArrayList的区别 http://blog.csdn.net/karizhang/article/details/17116627
- Failed to connect to the host via ssh: ssh: connect to host 192.68.1.75 port 22: No route to host
- 2.5 输入一个单精度浮点数,将其向零舍入到整数。说明:向零舍入的含义是,正数向下舍入,负数向上舍入。提示:可以使用强制类型转换来实现
- 带跳转的jQuery滑动分页插件
- 使用MySQL处理百万级以上数据时,不得不知道的几个常识
- vim 插件
- Java获取客户端IP
- FlashBuilder 导入项目报错:无法打开“xxx” xxx 未知 Flex 问题