支付宝 sign fail推荐sign 需要排序吗

支付宝即时到账接口的集成和使用技巧*qq - 推酷
支付宝即时到账接口的集成和使用技巧*qq
*推 广 排 名q.q ①
⑨⑨⑦〇⑦④⑥
教您支付宝即时到账接口的集成和使用技巧
个 人 网 站 如 何 开 通 在 线 支 付
商 家 账 户 ( 我 们 有 出 售 的 企 业 商 户 账 号 有):支 付 宝 ,财 付 通 ,快 钱, 易 宝 , 宝 付 , 双 乾 支 付, 网 银 在 线,首 信 易,环 迅 支 付,p a y p a y 跨 境 支 付,可 达 到 实 现 即 时 到 帐 , 担 保 交 易 , 网 银 在 线 支 付 , 移 动 支 付 , 手 机 网 站 支 付 , 个 人 网 站 支 付 , 手 机 充 值 卡 接 口 , 扫 码 支 付 接 口 等 功 能 , 更 多 请 咨 询 我 们
适 合 以 收 款 为 主 的 个 人 商 户 及 企 业
立 即 免 费 注 册
个人怎么申请支付宝即时到账接口? 答案:當然可以,支付寶支付只對企業(指公司,不是個體戶)開放申請,企業必須認證爲支付寶的支付寶特約平台商賬號,才能申請支付寶支付接口;而且支付寶特約平台商賬號申請要交錢、每年年審也要交錢,運營成本還是比較高的。但是個人的沒有資質的,可以找我們購買支付寶公衆平台賬號,資金安全,賬戶自己操作,綁定您自己的手機等等
個人網站如何實現支付寶收款呢?
答案:我們知道,支付寶支付當前非常流行,在個人網站上集成壹個支付寶支付方式,非常有利于網站的業務開展; 但是,因爲支付寶支付只對公司開放,而注冊、運營壹個公司的成本非常高,個人站長壹般網站收益都不是很大,爲此去注冊、運營壹個公司明顯不合適。那麽個人網站如何在自己的網站實現 支付寶收款呢?這必須要第四方支付平台進行協助才能實現。我們就是這樣的第四方,因爲我們是實體公司,申請過支付寶認證和支付寶接口,可以在線收款。個人網站在我們的平台 注冊成爲會員,就可以享受支付寶支付給您帶來的便捷收款服務。
個人網站支付寶收款要不要手續費呢?
答案:當然需要。接入網站的每筆交易,支付寶都會扣除支付寶特約平台商賬號的服務費,這筆服務費肯定要記在接入網站的賬上。同時,我們運營公司和平台都需要成本,所以綜合給接入網站的費率略高于 我們公司和支付寶的簽約費率,高出的部分減去運營成本才是我們的利潤,算得上是微利行業了。
個人網站支付寶收款能不能立即到賬?
答案:能。支付寶支付立即到賬的,我們把開通好支付功能的支付寶支付寶特約平台商賬號轉讓給妳們,您們自己修改密碼等,自己管理賬戶自己操作資金
個人網站申請支付寶收款有沒有什麽限制條件?
答案:沒有的,壹切違法、違規擦邊球的網站我們接,具體請聯系我們的業務 Q Q
1. 构造请求数据
商户根据支付宝提供的接口规则,通过程序生成得到签名结果及要传输给支付宝的数据集合。
&O 选定参数
&O 排序生成待签名字符串
对参数数组里的每一个值从a到z的顺序排序,若遇到相同首字母,则看第二个字母,以此类推。排序完成之后,再把所有数组值以“&”字符连接起来,
_input_charset=gbk&out_trade_no=7966&partner=8364
&payment_type=1&return_url
er_email=service=create_direct_pay_by_user&subje
ct=贝尔金护腕式&tot al_fee=100
需要注意的是,在请 求参数列表中,除去sign、sign_type两个参数外,其他需要使用到的参皆是要签名的参数。(个别接口中参数sign_type也需要参与签名。)
(1)使用冒泡排序对参数数组进行排序:
(2)用“&”字符连接参数组合成待签名的字符串:
&O 加密生成签名
有三种签名方式:MD5签名、DSA签名和RSA签名。
MD5签名: 需要把私钥直接拼接到待签名字符串后面,形成新的字符串,利用MD5的签名函数对这个新的字符串进行签名运算,从而得到32位签名结果字符串。
DSA、 RSA签名:把待签名字符串与客户的私钥一同放入DSA或RSA的签名函数中进行签名运算,从而得到签名结果字符串。
下面是用MD5签名的代码:
发送请求数据
向支付宝发送请求数据有post和get两种方式,建议使用post 方式,相对比较安全。
支付宝对商户的请求数据处理完成后,会通过两种方式通知商户处理结果,一种是页面跳转同步通知(return_url),另一种是服务器异步通知(notify_url) 。
服务器异步通知(notify_url)是支付宝服务器主动向商户发送的通知,只有当订单的交易状态改变时才会触发,可以防止因网络等原因引起的丢单问题。对同步通知和异步通知结果的处理步骤大致相同,只是处理完成后的返回值不同。
1. 验证签名
在通知返回参数列表中,除去sign、sign_type两个参数外,凡是通知返回回来的参数皆是要签名的参数,具体的签名步骤与请求时相同。
如果新得到的签名与支付宝返回的签名相同,则签名验证成功。
2. 判断是否是支付宝服务器发来的处理结果
为了防止某些人伪造支付宝发来的处理消息,还要验证消息的合法性,有以下三个方法:
找企业支付宝关联,或找Q199~70~746
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致php支付宝手机网页支付类实例
本文实例讲述了支付宝手机网页支付类。分享给大家供大家参考。具体分析如下:
此处注意:
① 该类是用在Yii框架里面的,没有去掉一些框架的东西。
② 本类不能不做任何修改而使用。
1. PHP代码部分如下:&&&&
代码如下:&?php
namespace weixin\
&* 支付宝手机网页支付
&* @example
&*&&&& 创建支付请求
&*&&&& $params = []; //支付宝文档中所需的全部参数
&*&&&& $alipay = new Alipay();
&*&&&& $alipay-&key = ''; //交易安全校验码
&*&&&& $this-&alipay-&alipay_config = $
&*&&&& $alipay-&buildRequest();
&*&&&& 验证异步通知
&*&&&& $this-&alipay-&key = ''; //交易安全校验码
&*&&&& $this-&alipay-&alipay_config = $ //支付宝异步通知参数
&*&&&& $this-&alipay-&verifyNotify();
&* @package Alipay
&* @author Dyllen
&* @since Version 0.2
class Alipay {
&&&& * 交易安全校验码
&&&& * @access public
&&&& * @var string
&&& public $
&&&& * 请求参数配置,支付宝接口文档中所需的参数
&&&& * @access public
&&&& * @var array
&&& public $alipay_config=[];
&&&& * HTTPS证书,用于cURL
&&&& * 默认和本类文件同级目录的cacert.pem文件
&&&& * @access public
&&&& * @var string
&&& public $
&&& public $notify_data =
&&&& * 支付宝即时到账网关地址
&&& const ALIPAY_GATEWAY = '/gateway.do?';
&&&& * HTTPS形式消息验证地址
&&& const HTTPS_VERIFY_URL = '/gateway.do?service=notify_verify&';
&&&& * HTTP形式消息验证地址
&&& const HTTP_VERIFY_URL = '/trade/notify_query.do?';
&&&& * 移动网页支付网关
&&&& * @var string
&&& const ALIPAY_PAGE_GATEWAY = '/service/rest.htm?';
&&&& * 创建支付包即时到账请求url
&&&& * @access public
&&&& * @return void
&&& public function buildRequest() {
&&&&&&& $this-&alipay_config['sign'] = $this-&signData();
&&&&&&& return self::ALIPAY_GATEWAY . $this-&createQueryString('', true);&&&&&&&
&&&& * 创建支付宝手机网页支付链接
&&&& * @return string
&&& public function buildPageUrl()
&&&&&&& $this-&alipay_config['sign'] = $this-&signData();
&&&&&&& $url = self::ALIPAY_PAGE_GATEWAY. $this-&createQueryString('');
&&&&&&& $response = $this-&getHttpResponseGET($url);
&&&&&&& $res = $this-&parseResponse(trim($response));
&&&&&&& //重新组合支付请求参数
&&&&&&& $this-&alipay_config['service'] = 'alipay.wap.auth.authAndExecute';
&&&&&&& $this-&alipay_config['req_data'] = '&auth_and_execute_req&&request_token&'.$res['request_token'].'&/request_token&&/auth_and_execute_req&';
&&&&&&& $this-&alipay_config['sign'] = $this-&signData();
&&&&&&& return self::ALIPAY_PAGE_GATEWAY. $this-&createQueryString('', true);
&&&& * 验证支付宝异步通知参数合法性
&&&& * @access public
&&&& * @return boolean
&&& public function verifyNotify() {
&&&&&&& $param_tmp = $this-&filter(); //过滤待签名数据
&&&&&&& if(!isset($this-&alipay_config['notify_data'])) {
&&&&&&&&&&&
&&&&&&& $this-&notify_data = $this-&xmlToArray($this-&alipay_config['notify_data']);
&&&&&&& $this-&alipay_config['notify_id'] = $this-&notify_data['notify_id'];
&&&&&&& $responseTxt = 'true';
&&&&&&& if( !empty( $this-&alipay_config['notify_id'] ) ) {
&&&&&&&&&&& $responseTxt = $this-&getResponse();
&&&&&&& unset($this-&alipay_config['notify_id']);
&&&&&&& $txt = 'service=';
&&&&&&& $txt .= $this-&alipay_config['service'];
&&&&&&& $txt .= '&v='.$this-&alipay_config['v'];
&&&&&&& $txt .= '&sec_id='.$this-&alipay_config['sec_id'];
&&&&&&& $txt .= '&notify_data='.$this-&alipay_config['notify_data'];
&&&&&&& $txt .= $this-&&&&&&
&&&&&&& $sign = md5($txt);
&&&&&&& if ( preg_match("/true$/i",$responseTxt) && ($sign == $this-&alipay_config['sign']) ) {
&&&&&&&&&&&
&&&&&&& } else {
&&&&&&&&&&&
&&&& * 解析授权接口返回
&&&& * @param string $content 授权接口返回的文本数据
&&&& * @throws \Exception
&&&& * @return array
&&& private function parseResponse($content) {
&&&&&&& parse_str($content, $arr);
&&&&&&& $data = isset($arr['res_data']) ? $arr['res_data'] : $arr['res_error'];
&&&&&&& $res_data = simplexml_load_string($data);
&&&&&&& if(strlen($res_data-&request_token) == 0 || strlen($res_data-&msg) & 0) {
&&&&&&&&&&& throw new \Exception('code:'.$res_data-&code.','.$res_data-&msg);
&&&&&&& $arr['request_token'] = $res_data-&request_token-&__toString();
&&&&&&& return $
&&&& * simpleXML对象转成数组
&&&& * @param string $xml
&&&& * @return multitype:NULL
&&& private function xmlToArray($xml)
&&&&&&& $xml_obj = simplexml_load_string($xml, 'SimpleXMLIterator');
&&&&&&& $arr = [];
&&&&&&& $xml_obj-&rewind(); //指针指向第一个元素
&&&&&&& while (1) {
&&&&&&&&&&& if( ! is_object($xml_obj-&current()) )
&&&&&&&&&&& {
&&&&&&&&&&&&&&&
&&&&&&&&&&& }
&&&&&&&&&&& $arr[$xml_obj-&key()] = $xml_obj-&current()-&__toString();
&&&&&&&&&&& $xml_obj-&next(); //指向下一个元素
&&&&&&& return $
&&&& * 签名数据
&&&& * 签名规则:
&&&& *&&&& sign和sign_type不参加签名,需要去掉
&&&& *&&&& 对参数数组依据键名按照字母顺序升序排序
&&&& *&&&& 排序完成之后键值对用&字符连接,组成URL的查询字符串形式待签名字符串,待签名数据不需用url encoding
&&&& *&&&& MD5签名:私钥拼接到待签名字符串的后面,然后用md5对字符串运算,得到32位签名结果
&&&& *&&&&
&&&& * @return string 已签名数据
&&& private function signData() {
&&&&&&& $param_tmp = $this-&getSignString(); //待签名字符串
&&&&&&& if( !isset($this-&key) ) {
&&&&&&&&&&& return FALSE;
&&&&&&& $sign = '';
&&&&&&& //签名数据
&&&&&&& switch ($this-&alipay_config['sec_id']) {
&&&&&&&&&&& case '001': //rsa
&&&&&&&&&&&&&&& $sign = $this-&rsaSign($param_tmp);
&&&&&&&&&&&&&&&
&&&&&&&&&&& case 'DES':
&&&&&&&&&&&&&&&
&&&&&&&&&&& default:
&&&&&&&&&&&&&&& $sign = $this-&md5Sign($param_tmp);
&&&&&&& return $
&&&& * MD5加密字符串
&&&& * @access private
&&&& * @param string $data 待加密字符串
&&&& * @return string
&&& private function md5Sign( $data ) {
&&&&&&& return md5($data . $this-&key);
&&&& * RSA 加密字符串
&&&& * @param string $data 待加密字符串
&&&& * @return string
&&& private function rsaSign( $data ) {
&&&& * 获得待签名数据
&&&& * @access private
&&&& * @return string
&&& private function getSignString() {
&&&&&&& $param_tmp = $this-&filter(); //过滤待签名数据
&&&&&&& //排序
&&&&&&& ksort($param_tmp);
&&&&&&& reset($param_tmp);
&&&&&&& //创建查询字符串形式的待签名数据
&&&&&&& return $this-&createQueryString($param_tmp);
&&&& * 过滤待签名数据,去掉sing、sing_type及空值
&&&& * @access private
&&&& * @return array
&&& private function filter() {
&&&&&&& $para_filter = array();
&&&&&&& foreach($this-&alipay_config as $key =& $value){
&&&&&&&&&&& if($key == "sign" || $key == "sign_type" || empty($value))
&&&&&&&&&&& else $para_filter[$key] = $
&&&&&&& return $para_
&&&& * 用&拼接字符串,形成URL查询字符串
&&&& * @access private
&&&& * @param array $data
&&&& * @param boolean $is_encode 是否对值做urlencode
&&&& * @return string
&&& private function createQueryString($data=NULL, $is_encode=false ) {
&&&&&&& $arr = empty($data) ? $this-&alipay_config : $
&&&&&&& $arg = '';
&&&&&&& foreach( $arr as $key =& $value ) {
&&&&&&&&&&& if($is_encode) {
&&&&&&&&&&&&&&& $key = urlencode($key);
&&&&&&&&&&&&&&& $value = urlencode($value);
&&&&&&&&&&& }
&&&&&&&&&&& $arg .= $key . '=' . $value . '&';
&&&&&&& $arg = substr($arg, 0, strlen($arg)-1); //去掉最后一个&
&&&&&&& //如果存在转义字符,那么去掉转义
&&&&&&& if(get_magic_quotes_gpc()) {$arg = stripslashes($arg);}
&&&&&&& return $
&&&& * 获取远程服务器ATN结果,验证返回URL
&&&& * 验证结果集:
&&&& * invalid命令参数不对 出现这个错误,请检测返回处理中partner和key是否为空
&&&& * true 返回正确信息
&&&& * false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟
&&&& * @access private
&&&& * @return 服务器ATN结果
&&& private function getResponse() {
&&&&&&& //载入支付配置
&&&&&&& $config = Yii::$app-&params['alipay'];
&&&&&&& $transport = strtolower(trim($config['transport']));
&&&&&&& $partner = trim($config['partner']);
&&&&&&& $veryfy_url = '';
&&&&&&& if($transport == 'https') {
&&&&&&&&&&& $veryfy_url = self::HTTPS_VERIFY_URL;
&&&&&&& else {
&&&&&&&&&&& $veryfy_url = self::HTTP_VERIFY_URL;
&&&&&&& $veryfy_url = $veryfy_url."partner=" . $partner . "&notify_id=" . $this-&alipay_config['notify_id'];
&&&&&&& $responseTxt = $this-&getHttpResponseGET($veryfy_url);
&&&&&&& return $responseT
&&&& * 取证书,用于cURL的请求
&&&& * @access private
&&&& * @return string 证书路径
&&& private function getCr() {
&&&&&&& if( ! empty($this-&credential) ) {
&&&&&&&&&&& return $this-&
&&&&&&& return __DIR__ . DIRECTORY_SEPARATOR .'cacert.pem';
&&&& * 远程获取数据,POST模式
&&&& * 注意:
&&&& * 1.使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了
&&&& * 2.文件夹中cacert.pem是SSL证书请保证其路径有效,目前默认路径是:getcwd().'\\cacert.pem'
&&&& * @param $url 指定URL完整路径地址
&&&& * @param $cacert_url 指定当前工作目录绝对路径
&&&& * @param $para 请求的数据
&&&& * @param $input_charset 编码格式。默认值:空值
&&&& * return 远程输出的数据
&&& private function getHttpResponsePOST($url, $para, $input_charset = '') {
&&&&&&& if (trim($input_charset) != '') {
&&&&&&&&&&& $url = $url."_input_charset=".$input_
&&&&&&& $curl = curl_init($url);
&&&&&&& curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
&&&&&&& curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
&&&&&&& curl_setopt($curl, CURLOPT_CAINFO,$this-&getCr());//证书地址
&&&&&&& curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
&&&&&&& curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
&&&&&&& curl_setopt($curl, CURLOPT_POST,true); // post传输数据
&&&&&&& curl_setopt($curl, CURLOPT_POSTFIELDS,$para);// post传输数据
&&&&&&& $responseText = curl_exec($curl);
&&&&&&& //var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容
&&&&&&& curl_close($curl);
&&&&&&& return $responseT
&&&& * 远程获取数据,GET模式
&&&& * 注意:
&&&& * 1.使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"就行了
&&&& * 2.文件夹中cacert.pem是SSL证书请保证其路径有效,目前默认路径是:getcwd().'\\cacert.pem'
&&&& * @param $url 指定URL完整路径地址
&&&& * @param $cacert_url 指定当前工作目录绝对路径
&&&& * return 远程输出的数据
&&& private function getHttpResponseGET($url) {
&&&&&&& $curl = curl_init($url);
&&&&&&& curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
&&&&&&& curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
&&&&&&& curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
&&&&&&& curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
&&&&&&& curl_setopt($curl, CURLOPT_CAINFO,$this-&getCr());//证书地址
&&&&&&& $responseText = curl_exec($curl);
&&&&&&& //var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容
&&&&&&& curl_close($curl);
&&&&&&& return $responseT
2. 使用方法:
代码如下://授权接口请求参数
$sum = 0.01; //测试用金额
$req_data = '&direct_trade_create_req&&subject&充值&/subject&';
$req_data .= '&out_trade_no&'.$orderNo.'&/out_trade_no&';
$req_data .= '&total_fee&'.$sum.'&/total_fee&';
$req_data .= '&call_back_url&'.Url::toRoute(['payment/return'], true).'&/call_back_url&';
$req_data .= '&notify_url&'.Url::toRoute(['payment/notify'], true).'&/notify_url&';
$req_data .= '&seller_account_name&'.Yii::$app-&params['alipay']['seller_email'].'&/seller_account_name&';
$req_data .= '&/direct_trade_create_req&';
$params = [
&&& 'service' =& 'alipay.wap.trade.create.direct',
&&& 'format' =& 'xml',
&&& 'v' =& '2.0',
&&& 'partner' =& Yii::$app-&params['alipay']['partner'], //合作者省份ID
&&& 'req_id' =& date('Ymdhis'),
&&& 'sec_id' =& Yii::$app-&params['alipay']['sign_type'],
&&& 'req_data' =& $req_data,
$alipay = new Alipay();
$alipay-&key = Yii::$app-&params['alipay']['key'];
$alipay-&alipay_config = $
$url = $alipay-&buildPageUrl();
$this-&redirect($url);
3. 配置示例:
代码如下://支付宝相关配置
'alipay' =& [
&&&&&&& 'key' =& 'XXXXX',& //交易安全校验码,用于签名的32位密钥
&&&&&&& 'transport' =& 'https',&&&&&&&& //消息验证地址使用访问方式
&&&&&&& 'seller_email' =& 'XXXX', //卖家支付宝账号,即收款账户
&&&&&&& 'service' =& 'create_direct_pay_by_user', //接口名称
&&&&&&& 'partner' =& 'XXXX', //合作者省份ID
&&&&&&& '_input_charset' =& 'utf-8', //参数编码字符集
&&&&&&& 'sign_type' =& 'MD5', //签名方式,不参加签名,目前只能是MD5
&&&&&&& //以下两个参数没用
&&&&&&& 'notify_url' =& '', //服务器异步通知页面路径
&&&&&&& 'return_url' =& '', //页面跳转通知页面路径
希望本文所述对大家的php程序设计有所帮助。
顶一下(0) 踩一下(0)
热门标签:支付宝网页调用签字sign - 移动开发当前位置:& &&&支付宝网页调用签字sign支付宝网页调用签字sign&&网友分享于:&&浏览:15次支付宝网页调用签名sign
支付宝提供的网页支付接口,notify_url调用时签名要使用非排序方式,原demo有bug,致使多次调用计算签名都失败,最终找出了问题,AlipayCore类中createLinkStringNoSort()方法不能使用HashMap,代之以LinkedHashMap,以此做记录。
public static String createLinkStringNoSort(Map&String, String& params) {
Map&String, String& sParaSort = new LinkedHashMap&String,String&();
sParaSort.put("service", params.get("service"));
sParaSort.put("v", params.get("v"));
sParaSort.put("sec_id", params.get("sec_id"));
sParaSort.put("notify_data", params.get("notify_data"));
String prestr = "";
for (String key : sParaSort.keySet()) {
prestr = prestr + key + "=" + sParaSort.get(key) + "&";
prestr = prestr.substring(0, prestr.length() - 1);
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有咨询热线:&&&&QQ:
&& 收藏本站
下载开发包(含集成教程)
& & & & & & ╭───────────────────────╮
& & ────┤ & & & & & 支付宝代码示例结构说明 & & & & & & ├────
& & & & & & ╰───────────────────────╯&
  & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
  & & & 接口名称:支付宝即时到账批量退款有密接口(refund_fastpay_by_platform_pwd)
    & &代码版本:3.3
& & & & &开发语言:PHP
& & & & &版 & &权:支付宝(中国)网络技术有限公司
  & & & 制 作 者:支付宝商户事业部技术支持组
& & & & &联系方式:商户服务电话0
& & ─────────────────────────────────
───────
&代码文件结构
───────
refund_fastpay_by_platform_pwd-php-GBK
& ├lib┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈类文件夹
& │ &├alipay_core.function.php ┈┈┈┈┈┈支付宝接口公用函数文件
& │ &├alipay_notify.class.php┈┈┈┈┈┈┈支付宝通知处理类文件
& │ &├alipay_submit.class.php┈┈┈┈┈┈┈支付宝各接口请求提交类文件
& │ &└alipay_md5.function.php┈┈┈┈┈┈┈支付宝接口MD5函数文件
& ├log.txt┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈日志文件
& ├alipay.config.php┈┈┈┈┈┈┈┈┈┈┈┈基础配置类文件
& ├alipayapi.php┈┈┈┈┈┈┈┈┈┈┈┈┈┈支付宝接口入口文件
& ├notify_url.php ┈┈┈┈┈┈┈┈┈┈┈┈┈服务器异步通知页面文件
& ├cacert.pem ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈用于CURL中校验SSL的CA证书文件
& └readme.txt ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈使用说明文本
1、必须开启curl服务
(1)使用Crul需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的&;&即可
(2)文件夹中cacert.pem文件请务必放置到商户网站平台中(如:服务器上),并且保证其路径有效,提供的代码demo中的默认路径是当前文件夹下&&getcwd().'\\cacert.pem'
2、需要配置的文件是:
alipay.config.php
alipayapi.php
●本代码示例(DEMO)采用fsockopen()的方法远程HTTP获取数据、采用DOMDocument()的方法解析XML数据。
请根据商户网站自身情况来决定是否使用代码示例中的方式&&
如果不使用fsockopen,那么建议用curl来代替;
如果环境不是PHP5版本或其以上,那么请用其他方法代替DOMDocument()。
curl、XML解析方法需您自行编写代码。
─────────
&类文件函数结构
─────────
alipay_core.function.php
function createLinkstring($para)
功能:把数组所有元素,按照&参数=参数值&的模式用&&&字符拼接成字符串
输入:Array &$para 需要拼接的数组
输出:String 拼接完成以后的字符串
function createLinkstringUrlencode($para)
功能:把数组所有元素,按照&参数=参数值&的模式用&&&字符拼接成字符串,并对参数值urlencode
输入:Array &$para 需要拼接的数组
输出:String 拼接完成以后的字符串
function paraFilter($para)
功能:除去数组中的空值和签名参数
输入:Array &$para 签名参数组
输出:Array &去掉空值与签名参数后的新签名参数组
function argSort($para)
功能:对数组排序
输入:Array &$para 排序前的数组
输出:Array &排序后的数组
function logResult($word='')
功能:写日志,方便测试(看网站需求,也可以改成存入数据库)
输入:String $word 要写入日志里的文本内容 默认值:空值
function getHttpResponse($url, $input_charset = '', $time_out = &60&)
功能:远程获取数据
输入:String $url 指定URL完整路径地址
& & & String $input_charset 编码格式。默认值:空值
& & & String $time_out 超时时间。默认值:60
输出:String 远程输出的数据
function charsetEncode($input,$_output_charset ,$_input_charset)
功能:实现多种字符编码方式
输入:String $input 需要编码的字符串
& & & String $_output_charset 输出的编码格式
& & & String $_input_charset 输入的编码格式
输出:String 编码后的字符串
function charsetDecode($input,$_input_charset ,$_output_charset)&
功能:实现多种字符解码方式
输入:String $input 需要解码的字符串
& & & String $_output_charset 输出的解码格式
& & & String $_input_charset 输入的解码格式
输出:String 解码后的字符串
┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉
function md5Sign($prestr, $key)
功能:MD5签名
输入:String $prestr 待签名数据
& & & String $key 私钥
输出:String 签名结果
function md5Verify($prestr, $sign, $key)
功能:MD5验签
输入:String $data 待签名数据
& & & String $sign 签名结果
& & & String $key 私钥
输出:bool 验证结果
┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉
alipay_notify.class.php
function verifyNotify()
功能:对notify_url的认证
输出:Bool &验证结果:true/false
function verifyReturn()
功能:对return_url的认证
输出:Bool &验证结果:true/false
unction getSignVeryfy($para_temp, $sign)
功能:获取返回时的签名验证结果
输入:Array $para_temp 通知返回来的参数数组
& & & String $sign 支付宝返回的签名结果
输出:Bool 获得签名验证结果
function getResponse($notify_id)
功能:获取远程服务器ATN结果,验证返回URL
输入:String $notify_id 通知校验ID
输出:String 服务器ATN结果
┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉
alipay_submit.class.php
function buildRequestMysign($para_sort)
功能:生成要请求给支付宝的参数数组
输入:Array $para_sort 已排序要签名的数组
输出:String 签名结果
function buildRequestPara($para_temp)
功能:根据反馈回来的信息,生成签名结果
输入:Array $para_temp 请求前的参数数组
输出:String 要请求的参数数组
function buildRequestParaToString($para_temp)
功能:根据反馈回来的信息,生成签名结果
输入:Array $para_temp 请求前的参数数组
输出:String 要请求的参数数组字符串
function buildRequestForm($para_temp, $method, $button_name)
功能:建立请求,以表单HTML形式构造(默认)
输入:Array $para_temp 请求前的参数数组
& & & String $method 提交方式。两个值可选:post、get
& & & String $button_name 确认按钮显示文字
输出:String 提交表单HTML文本
function buildRequestHttp($para_temp)
功能:建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果
输入:Array $para_temp 请求前的参数数组
输出:String 支付宝处理结果
function buildRequestHttpInFile($para_temp, $file_para_name, $file_name)
功能:建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果,带文件上传功能
输入:Array $para_temp 请求参数数组
& & & String $file_para_name 文件类型的参数名
& & & String $file_name 文件完整绝对路径
输出:String 支付宝返回处理结果
function query_timestamp()&
功能:用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数
输出:String 时间戳字符串
┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉
──────────
&出现问题,求助方法
──────────
如果在集成支付宝接口时,有疑问或出现问题,可使用下面的链接,提交申请。
/support/helperApply.htm?action=supportHome
我们会有专门的技术支持人员为您处理
原文地址:&转载请注明出处!
相关文章推荐:
Copyright &
北京华旭创诚科技有限公司 All Rights Reserved
版权所有京ICP备号-1 &

我要回帖

更多关于 支付宝 sign 生成 的文章

 

随机推荐