讲解:
一:取得 token
要取得 token 有两个 参数是 是必须
req_data 和 sign
req_data格式如下(这是一些必填的。如果想要更多的参数自己去下载手册):
{通知地址}
{返回地址}
{商家支付宝账号}
{外部订单号}
{商品介绍}
{商品价格}
sign(签名)格式如下
$params = array(
/* 基本信息 */
'partner' => {支付宝pid},
'req_id' => md5({网站订单号}),
'service' => 'alipay.wap.trade.create.direct',
'format' => 'xml',
'v' => '2.0',
'sec_id' => 'MD5',
"_input_charset" => CHARSET
"req_data" => {以面的req_data}
);
if($sort){
/* 排序 */
ksort($params);
reset($params);
}
$sign = '';
foreach ($params AS $key => $value)
{
$sign .= "{$key}={$value}&";
}
md5(substr($sign, 0, -1) . {支付宝key});
sign 要注意的地方 是 排序 md5之前一定要按手册上的排序不然会出错的
然后以post方式提交给
注意 返回的 数据是 经过 urlencode 的 所心我们要用 urldecode 解码 然后还得用解析 返回的数据
/**
* 解析远程模拟提交后返回的信息
* @param $str_text 要解析的字符串
* @return 解析结果
*/
function parseResponse($str_text) {
//以“&”字符切割字符串
$para_split = explode('&',$str_text);
//把切割后的字符串数组变成变量与数值组合的数组
foreach ($para_split as $item) {
//获得第一个=字符的位置
$nPos = strpos($item,'=');
//获得字符串长度
$nLen = strlen($item);
//获得变量名
$key = substr($item,0,$nPos);
//获得数值
$value = substr($item,$nPos+1,$nLen-$nPos-1);
//放入数组中
$para_text[$key] = $value;
}
if( ! empty ($para_text['res_data'])) {
//token从res_data中解析出来(也就是说res_data中已经包含token的内容)
$doc = new DOMDocument();
$doc->loadXML($para_text['res_data']);
$para_text['request_token'] = $doc->getElementsByTagName( "request_token" )->item(0)->nodeValue;
}
return $para_text;
}
最后的 规范的支付表单数据 就是(这里是要用get)
$params = array(
'partner' => $this->_config['wap_alipay_partner'],
'req_id' => md5({网站订单号}),
'service' => 'alipay.wap.trade.create.direct',
'format' => 'xml',
'v' => '2.0',
'sec_id' => 'MD5',
"_input_charset" => CHARSET
'req_data'=>'' . {token} . '',
'service'=>"alipay.wap.auth.authAndExecute",
);
//这个地方也要签名的。方式和上面一样
$params['sign']= _get_sign($params);
//get数据
$return = array(
'online' => {联线},
'desc' => {支付说明},
'method' => 'GET',
'gateway' => 'http://wappaygw.alipay.com/service/rest.htm?',
'params' => $params,
)
最后 跳转到支付宝
$value){?>
document.getElementById('payform').submit();
明天上返回的那个
www.bkjia.comtrueTechArticle讲解: 一:取得 token 要取得 token 有两个 参数是 是必须 req_data 和 sign req_data格式如下(这是一些必填的。如果想要更多的参数自己去下载…