PHP服务端集成微信APP支付以及回调
上一篇说到支付宝APP支付,说到微信APP支付相对复杂一点,复杂在于微信支付参数的两次加密返回支付参数;
至于其他和支付宝处理流程都相同
流程:客户端提供数据 -> 服务端处理生成支付参数返回给客户端调起支付 -> 支付成功 -> 微信回调结果 -> 接受回调修改订单状态
微信官方文档也说的比较清楚,微信APP开发者文档
首先,新建一个微信支付类,命名为appWxPay_class.php ,定义一些支付常量
const appid ="";
const mch_id ="";
const key ="";
const trade_type = "APP";
const notify_url = "";
post方法用于请求
//建立请求
public function http_post($url='',$post_data=array(),$header=array(),$timeout=30) { $ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HTTPHEADER, $header);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);$response = curl_exec($ch);curl_close($ch);return $response;
}
获取客户端ip
//获取客户端ip
public function get_client_ip($type = 0) {$type = $type ? 1 : 0;static $ip = NULL;if ($ip !== NULL) return $ip[$type];if($_SERVER['HTTP_X_REAL_IP']){//nginx 代理模式下,获取客户端真实IP$ip=$_SERVER['HTTP_X_REAL_IP']; }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {//客户端的ip$ip = $_SERVER['HTTP_CLIENT_IP'];}elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {//浏览当前页面的用户计算机的网关$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);$pos = array_search('unknown',$arr);if(false !== $pos) unset($arr[$pos]);$ip = trim($arr[0]);}elseif (isset($_SERVER['REMOTE_ADDR'])) {$ip = $_SERVER['REMOTE_ADDR'];//浏览当前页面的用户计算机的ip地址}else{$ip=$_SERVER['REMOTE_ADDR'];}// IP地址合法验证$long = sprintf("%u",ip2long($ip));$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);return $ip[$type];
}
//生成随机数并返回
public function getNonceStr() {$code = "";for
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
