微信支付 服务器 php,小程序微信支付服务端(PHP)

值得注意的是,小程序支付在curl请求时会验证ssl,可手动设置配置中对应证书路径,或开发阶段先跳过验证

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

//小程序支付

function SmallPay(){

header("Content-type: text/html; charset=utf-8");

$money ="0.01" ; //

$orderCode = 'abcd1234'; // 订单号

// 随机字符串

$str=md5(time());

$nonce = str_shuffle($str);

$appid = '小程序appid';//注意是小程序的appid

$key = "123123";//商户平台-》API安全-》设置秘钥

$mch_id = $this->config["mch_id"];

$pay['appid'] = $appid;

$pay['body'] = '酒店预订'; //商品描述

$pay['mch_id'] = $this->config["mch_id"]; //商户号

$pay['nonce_str'] = $nonce; //随机字符串

$pay['notify_url'] = 'https://www.github.com';//支付成功回调

$pay['openid'] = $openid;

$pay['out_trade_no'] = $orderCode; //订单号

$pay['spbill_create_ip'] = '服务端IP'; // 终端IP

$pay['total_fee'] = 100*$money; //支付金额

$pay['trade_type'] = 'JSAPI'; //交易类型

// 组建签名

$stringA="appid=".$pay['appid']."&body=".$pay['body']."&mch_id=".$pay['mch_id']."&nonce_str=".$pay['nonce_str']."&notify_url=".$pay['notify_url']."&openid=". $pay['openid']."&out_trade_no=".$pay['out_trade_no']."&spbill_create_ip=". $pay['spbill_create_ip']."&total_fee=".$pay['total_fee']."&trade_type=".$pay['trade_type'];

$stringSignTemp=$stringA."&key=".$key; //注:key为商户平台设置的密钥key(这个还需要再确认一下)

$sign= strtoupper(md5($stringSignTemp)); //注:MD5签名方式

$pay['sign'] = $sign; //签名

// 统一下单请求

$url = "https://api.mch.weixin.qq.com/pay/unifiedorder";

$data = $this->arrayToXml($pay);

// return $data;

$res = $this->wxpost($url,$data);

// return $res; //返回统一下单结果

// 对 统一下单返回得参数进行处理

$pay_arr = $this->xmlstr_to_array($res); //这里是数组

// if ($pay_arr['return_code'] == 'FAIL' || $pay_arr['result_code'] == 'FAIL')

// {

// echo json_encode($res);exit;

// // return $res;

// }

// 调起支付数据签名字段

$timeStamp = time();

$nonce_pay = str_shuffle($str);

$package = $pay_arr['prepay_id'];

$signType = "MD5";

$stringPay = "appId=".$appid."&nonceStr=".$nonce_pay."&package=prepay_id=".$package."&signType=".$signType."&timeStamp=".$timeStamp."&key=".$key;

$paySign = strtoupper(md5($stringPay));

$rpay['timeStamp'] = (string)$timeStamp;

$rpay['nonceStr'] = $nonce_pay;

$rpay['package'] = "prepay_id=".$package;

$rpay['signType'] = $signType;

$rpay['paySign'] = $paySign;

$rpay['orders'] = $orderCode ; //订单流水号id $order

echo json_encode($rpay);

}

function wxpost($url,$post)

{

//初始化

$curl = curl_init();

$header[] = "Content-type: text/xml";//定义content-type为xml

//设置抓取的url

curl_setopt($curl, CURLOPT_URL, $url);

//设置头文件的信息作为数据流输出

// curl_setopt($curl, CURLOPT_HEADER, 1);

//定义请求类型

curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

//设置获取的信息以文件流的形式返回,而不是直接输出。

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

//设置post方式提交

curl_setopt($curl, CURLOPT_POST, 1);

//设置post数据

$post_data = $post;

curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);

//执行命令

$data = curl_exec($curl);

//关闭URL请求

//显示获得的数据

if ($data)

{

curl_close($curl);

return $data;

}else{

$res = curl_error($curl);

curl_close($curl);

return $res;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值