php关于支付宝支付的探讨

http://blog.csdn.net/qq_34369025/article/details/54971520
感谢上面的这位兄弟,第三步很重要,确实都要填。
1.从github上下载的alipay支付demo,
代码:

<?php header('Access-Control-Allow-Origin: *'); header('Content-type: text/plain'); // 获取支付金额 $amount=''; if($_SERVER['REQUEST_METHOD']=='POST'){ $amount=$_POST['total']; }else{ $amount=$_GET['total']; } $total = floatval($amount); if(!$total){ $total = 1; } // 对签名字符串转义 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 rsaSign($data) { $priKey = "-----BEGIN RSA PRIVATE KEY----- 生成密钥时获取的私钥字符串,直接使用pem文件的完整字符串 -----END RSA PRIVATE KEY-----"; //网上有的说需去掉开头、结尾及换行,但是我试过会报错,直接用阿里工具生成 //的没问题,长度可以是1024或者2048,阿里官方推荐的是2048。 //这里有个概念算是比较模糊,RSA与RSA2的区别,之前我以为阿里的工具生 //成的密钥会有这两种区分,后来我发现错了,生成的密钥可以任意上传到RSA或//RSA2,这两种加签方式通过sign_type来区分, //https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=106115&docType=1 // $res = openssl_get_privatekey($priKey); openssl_sign($data, $sign, $res); openssl_free_key($res); $sign = base64_encode($sign); $sign = urlencode($sign); return $sign; } // 支付宝合作者身份ID,以2088开头的16位纯数字 $partner = "%支付宝PartnerID%";//实际填写不需要%号 // 支付宝账号 $seller_id = '%支付宝账号,通常为邮箱地址%';//签约的商家支付宝账号 // 商品网址 $base_path = urlencode('http://域名/payment/alipay/'); // 异步通知地址 $notify_url = urlencode('http://域名/payment/alipay/notify.php'); // 订单标题 $subject = '订单标题'; // 订单详情 $body = '订单详情'; // 订单号,示例代码使用时间值作为唯一的订单ID号 $out_trade_no = date('YmdHis', time()); $parameter = array( 'service' => 'mobile.securitypay.pay', // 必填,接口名称,固定值 'partner' => $partner, // 必填,合作商户号 '_input_charset' => 'UTF-8', // 必填,参数编码字符集 'out_trade_no' => $out_trade_no, // 必填,商户网站唯一订单号 'subject' => $subject, // 必填,商品名称 'payment_type' => '1', // 必填,支付类型 'seller_id' => $seller_id, // 必填,卖家支付宝账号 'total_fee' => $total, // 必填,总金额,取值范围为[0.01,100000000.00] 'body' => $body, // 必填,商品详情 'it_b_pay' => '1d', // 可选,未付款交易的超时时间 'notify_url' => $notify_url, // 必填,服务器异步通知页面路径 'show_url' => $base_path // 可选,商品展示网站 ); //生成需要签名的订单 $orderInfo = createLinkstring($parameter); //签名 $sign = rsaSign($orderInfo); //生成订单 echo $orderInfo.'&sign="'.$sign.'"&sign_type="RSA"'; ?>

notify.php

<?php header('Access-Control-Allow-Origin: *');//还是跨域 header('Content-type: text/plain'); echo 'success'; ?>

前面调用的集成,有空再分析,不足之处请指出,谢谢。

你可能感兴趣的:(支付,PHP,支付宝)