用ASP做微信支付,最头痛的就是XML提交这一块,我相信很多朋友遇到过吧
硬来得要好技术。技术一般的情况下只好借助别的语言来完成XML这一块了
下面我说下我的方法
我是用PHP文件来实现中转的,以下是我用的代码段,可以参考
关键也都是卡在这一块了,把XML格式列好然后提交到PHP文件中就可以实现返回
ASP的签名部分,ASP UTF-8编码中文就不会乱码了
推荐Sublime Text 2编辑器,DW容易乱码
stringb="appid="&APP_ID&"&attach=pay&body="&subject&"&mch_id="&PARTNER&"&nonce_str="&Noncestr&"¬ify_url="¬IFY_URL&"&out_trade_no="&order_no&"&spbill_create_ip="&Request.ServerVariables("REMOTE_ADDR")&"&total_fee="&order_price&"&trade_type=NATIVE&key="&PARTNER_KEY&""
sign=ucase(asp_md5(stringb))
'response.Write stringb&"<br/>"
strxml="<xml>"&_
"<appid>"&APP_ID&"</appid>"&_
"<attach>pay</attach>"&_
"<body>"&Server.URLEncode(subject)&"</body>"&_
"<mch_id>"&PARTNER&"</mch_id>"&_
"<nonce_str>"&Noncestr&"</nonce_str>"&_
"<notify_url>"¬IFY_URL&"</notify_url>"&_
"<out_trade_no>"&order_no&"</out_trade_no>"&_
"<spbill_create_ip>"&Request.ServerVariables("REMOTE_ADDR")&"</spbill_create_ip>"&_
"<total_fee>"&order_price&"</total_fee>"&_
"<trade_type>NATIVE</trade_type>"&_
"<sign>"&sign&"</sign>"&_
"</xml>"
<?php
/**
* 作用:以post方式提交xml到对应的接口url
*/
$xml=$_GET['xml'];
function postXmlCurl($xml,$url,$second=30)
{
//echo $xml;
//初始化curl
$ch = curl_init();
//设置超时
//curl_setopt($ch, CURLOP_TIMEOUT, $second);
//这里设置代理,如果有的话
//curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8');
//curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
//设置header
curl_setopt($ch, CURLOPT_HEADER, FALSE);
//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
//post提交方式
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
//运行curl
$data = curl_exec($ch);
curl_close($ch);
//返回结果
echo $data;//在这里就可以得到返回数据了
}
postXmlCurl($xml,"https://api.mch.weixin.qq.com/pay/unifiedorder",$second=30);
?>
后面的处理就不用说了,大家都会。我只用这一个PHP文件
另外,我的小博客,打下广告。
ASP博客。为了发个外链接,