- php 微信支付退款返回值
[代码]public[代码] [代码]function[代码] [代码]weixin_refund([代码][代码]$order[代码][代码],[代码][代码]$price[代码][代码],[代码][代码]$refund_data[代码][代码]){[代码][代码] [代码][代码]$nonce_str[代码][代码]=rand(0,99999).time(); [代码][代码]//随机字符串[代码][代码] [代码][代码]$wx_appid[代码][代码]=[代码][代码]$this[代码][代码]->wx_appid; [代码][代码]//应用id[代码][代码] [代码][代码]$merchant_key[代码][代码]=[代码][代码]$this[代码][代码]->merchant_key; [代码][代码]//商户key[代码][代码] [代码][代码]$merchant_id[代码][代码]=[代码][代码]$this[代码][代码]->merchant_id; [代码][代码]//商户id[代码][代码] [代码][代码]$total_fee[代码][代码]=[代码][代码]$order[代码][代码][[代码][代码]'price'[代码][代码]]*100; [代码][代码]//订单总金额 需乘以100转换为分[代码][代码] [代码][代码]$refund_fee_price[代码][代码]=[代码][代码]$price[代码][代码]*100; [代码][代码]//退款金额 需乘以100转换为分[代码][代码] [代码][代码]$out_refund_no[代码][代码]=[代码][代码]$refund_data[代码][代码][[代码][代码]'id'[代码][代码]];[代码][代码]//商户退款单号[代码][代码] [代码][代码]$url[代码][代码]=[代码][代码]"https://api.mch.weixin.qq.com/secapi/pay/refund"[代码][代码];[代码][代码] [代码][代码]$notify_url[代码][代码]=[代码][代码]"http://www.showscenic.com/index.php/Index/weixin_refund_api.html"[代码][代码]; //回调地址[代码][代码] [代码][代码]$out_trade_no[代码][代码]=[代码][代码]$order[代码][代码][[代码][代码]'order_id'[代码][代码]];[代码][代码] [代码][代码]$ref[代码] [代码]= [代码][代码]strtoupper[代码][代码](md5([代码][代码]"appid=$wx_appid&mch_id=$merchant_id&nonce_str=$nonce_str&out_refund_no=$out_refund_no&out_trade_no=$out_trade_no&refund_fee=$refund_fee_price&total_fee=$total_fee"[代码][代码]));[代码][代码] [代码][代码]$refund[代码] [代码]= [代码][代码]array[代码][代码]([代码][代码] [代码][代码]'appid'[代码] [代码]=>[代码][代码]$wx_appid[代码][代码], [代码][代码]//应用ID,固定[代码][代码] [代码][代码]'mch_id'[代码] [代码]=> [代码][代码]$merchant_id[代码][代码], [代码][代码]//商户号,固定[代码][代码] [代码][代码]'nonce_str'[代码] [代码]=> [代码][代码]$nonce_str[代码][代码], [代码][代码]//随机字符串[代码][代码] [代码][代码]'out_refund_no'[代码] [代码]=> [代码][代码]$out_refund_no[代码][代码], [代码][代码]//商户内部唯一退款单号[代码][代码] [代码][代码]'out_trade_no'[代码] [代码]=> [代码][代码]$out_trade_no[代码][代码], [代码][代码]//商户订单号,pay_sn码 1.1二选一,微信生成的订单号,在支付通知中有返回[代码][代码] [代码][代码]'refund_fee'[代码] [代码]=> [代码][代码]$refund_fee_price[代码][代码], [代码][代码]//退款金额[代码][代码] [代码][代码]'total_fee'[代码] [代码]=> [代码][代码]$total_fee[代码][代码], [代码][代码]//总金额[代码][代码] [代码][代码]'sign'[代码] [代码]=> [代码][代码]$ref[代码][代码]//签名[代码][代码] [代码][代码]);[代码][代码] [代码][代码]$xml[代码] [代码]= [代码][代码]$this[代码][代码]->arrayToXml([代码][代码]$refund[代码][代码]);[代码][代码] [代码][代码]$ch[代码] [代码]= curl_init();[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_URL, [代码][代码]$url[代码][代码]);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_HEADER, 1);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_RETURNTRANSFER, 1);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_SSL_VERIFYPEER, 1); [代码][代码]//证书检查[代码][代码] [代码][代码]// 设置证书[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_SSLCERTTYPE, [代码][代码]'pem'[代码][代码]);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_SSLCERT, [代码][代码]$_SERVER[代码][代码][[代码][代码]'SERVER_NAME'[代码][代码]]. [代码][代码]'/gzcAPI/apiclient_cert.pem'[代码][代码]);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_SSLCERTTYPE, [代码][代码]'pem'[代码][代码]);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_SSLKEY, [代码][代码]$_SERVER[代码][代码][[代码][代码]'SERVER_NAME'[代码][代码]]. [代码][代码]'/gzcAPI/apiclient_key.pem'[代码][代码]);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_SSLCERTTYPE, [代码][代码]'pem'[代码][代码]);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_CAINFO, [代码][代码]$_SERVER[代码][代码][[代码][代码]'SERVER_NAME'[代码][代码]]. [代码][代码]'/gzcAPI/rootca.pem'[代码][代码]);[代码][代码] [代码][代码]// var_dump($_SERVER['SERVER_NAME']. '/gzcAPI/rootca.pem');[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_POST, 1);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_POSTFIELDS, [代码][代码]$xml[代码][代码]);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);[代码][代码] [代码][代码]$xml[代码] [代码]= curl_exec([代码][代码]$ch[代码][代码]);[代码][代码] [代码][代码]// var_dump(11);[代码][代码] [代码][代码] [代码][代码]// 返回结果0的时候能只能表明程序是正常返回不一定说明退款成功而已[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]$xml[代码][代码]) {[代码][代码] [代码][代码]curl_close([代码][代码]$ch[代码][代码]);[代码][代码] [代码][代码]// 把xml转化成数组[代码][代码] [代码][代码]libxml_disable_entity_loader(true);[代码][代码] [代码][代码]$xmlstring[代码] [代码]= simplexml_load_string([代码][代码]$xml[代码][代码], [代码][代码]'SimpleXMLElement'[代码][代码], LIBXML_NOCDATA);[代码][代码] [代码][代码]var_dump([代码][代码]$xmlstring[代码][代码]);[代码][代码] [代码][代码]$result[代码][代码][[代码][代码]'errNum'[代码][代码]] = 0;[代码][代码] [代码][代码]$result[代码][代码][[代码][代码]'info'[代码][代码]] = [代码][代码]$this[代码][代码]->object_to_array([代码][代码]$xmlstring[代码][代码]);[代码][代码] [代码][代码]var_dump([代码][代码]$result[代码][代码]);[代码][代码] [代码][代码]// return $result;[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]$error[代码] [代码]= curl_errno([代码][代码]$ch[代码][代码]);[代码][代码] [代码][代码]var_dump([代码][代码]$error[代码][代码]);[代码][代码] [代码][代码]curl_close([代码][代码]$ch[代码][代码]);[代码][代码] [代码][代码]// // 错误的时候返回错误码。[代码][代码] [代码][代码]// $result['errNum'] = $error;[代码][代码] [代码][代码]// return $result;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码]返回值 [代码]var_dump([代码][代码]$xml[代码][代码]); 返回 bool(false) [代码]var_dump([代码][代码]$error[代码][代码]); 返回 77[代码][代码] 注掉下面两段代码 [代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_SSLCERTTYPE, [代码][代码]'pem'[代码][代码]);[代码][代码] [代码][代码]curl_setopt([代码][代码]$ch[代码][代码], CURLOPT_CAINFO, [代码][代码]$_SERVER[代码][代码][[代码][代码]'SERVER_NAME'[代码][代码]]. [代码][代码]'/gzcAPI/rootca.pem'[代码][代码]);[代码] 返回值 [代码]var_dump([代码][代码]$xml[代码][代码]); 返回 bool(false) [代码]var_dump([代码][代码]$error[代码][代码]); 返回 52[代码][代码] [代码][代码] 看了半天没看出毛病在哪 求解决 谢谢[代码][代码]
2019-03-19 - 微信小程序开发者工请求服务器能成功,手机预览请求不到数据
在 开发者工具上 请求数据 都OK 预览的时候 就是空白页 后台也收不到数据 没有请求 什么情况
2018-04-18