PHP接入支付宝支付

支付宝有一个大坑就是签名的生成,生成以后不知道是哪一个!

微信截图_20171117102514.png

点击签名工具

image.png

点击生成密匙

微信截图_20171117102938.png

这两个参数需要好好保存,很关键的,这个我的是乱写的

进行签名生成

image.png

生成好以后进行后台修改

这时候就开始接入支付宝的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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PHP支付宝免签系统是一种基于PHP语言开发的支付宝支付系统。传统的支付宝接入需要商户自行向支付宝申请签约,并进行一系列的配置和接口对接,比较繁琐。而PHP支付宝免签系统则是通过直接调用支付宝支付接口实现支付功能,省去了商户签约的步骤,从而简化了支付宝支付的流程。 PHP支付宝免签系统的工作原理是通过调用支付宝的开放接口,实现与支付宝的交互。商户只需要在系统中配置好自己的支付宝账号和相关信息,然后调用相应的接口即可完成支付功能。系统会自动将订单信息提交给支付宝支付宝会返回支付页面给用户进行支付操作。支付成功后,支付宝会发送异步通知给商户服务器,商户服务器再进行订单处理。通过这种方式,商户无需签约支付宝,也能够方便地接入支付宝支付功能。 PHP支付宝免签系统的使用具有一定的优势。首先,简化了支付宝支付接入的流程,商户无需繁琐的签约和配置过程,只需进行简单的系统配置即可使用支付宝支付功能。其次,提高了支付安全性,系统直接与支付宝交互,保证了支付过程的可靠性和安全性。最后,提供了灵活的接口和参数设置,商户可以根据自己的需求自定义各种支付参数,实现个性化的支付体验。 综上所述,PHP支付宝免签系统是一种简化支付宝支付接入流程的解决方案,可以为商户提供简单、安全、灵活的支付服务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值