laravel 框架接入第三方扫码支付(万众云平台)
2018-01-13 11:14
381 查看
//去充值的界面
public function recharge(Request $request){
$data['money']=$request->input('money');//钱数
$data['order_id']=$request->input('order_id');//订单号
$data['card_num']=$request->input('card_num');//元宝数量
$data['username']=$request->session()->get("username");//用户昵称
$url = 'http://epay.taidupay.com/api/pay/unifiedOrder';
$key = '';//<span style="color:#33ff33;">平台申请的app_key</span>
$datas = [
'appId' =>'',//<span style="background-color: rgb(255, 153, 0);">平台申请的app_id</span>
'timestamp' => (string)time(),
'nonce' => time().rand(),
'service' => 'alipay.native',
'orderNo' => $data['order_id'],
'totalAmount' =>1,
'clientIp' => '测试服务器Ip',
'attach' => 'ces',
'notifyUrl' => '测试服务器IP/city.php',//异步回调地址(必须是外网访问到的地址)
'body' => '元宝',
];
ksort($datas);
$signOStr = '';
foreach ($datas as $k => $val) {
if ($signOStr != '') {
$signOStr .= '&';
}
$signOStr .= $k . '=' . $val;
}
$signOStr = $signOStr . '&key=' . $key;
$datas['sign'] = strtoupper(MD5($signOStr));
$data['rs'] = json_decode($this->json_post($url, json_encode($datas)), true);
//print_r($data['rs']);die;
if($data['rs']['success'] == true && $data['rs']['status'] == 0){
echo json_decode($data['rs']['payInfo'], true);
}else{
echo "<script> alert('订单编号重复!');parent.location.href='测试服务器iP/userInfo'; </script>";
}
return view('recharge')->with('data', $data);
}
[php] view
plain copy
print?
public function json_post($url, $data){
$ch = curl_init();
$header = [
'Accept-Charset: utf-8',
'Content-Type: application/json'
];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = curl_exec($ch);
$errorno=curl_errno($ch);
return $tmpInfo;
}
city.php文件内容
[php] view
plain copy
print?
<?php
header("Content-type:text/html;charset=utf-8");
$get_data = file_get_contents('php://input', 'r');
//file_put_contents('a.txt',$get_data);
$get_data = json_decode($get_data, true);
$key = '1bdc6c80b3cb8987e2720bd965748593f07bb3e9';
$data = $get_data;
unset($data['sign']);
ksort($data);
$signOStr = '';
foreach ($data as $k => $val) {
if ($signOStr != '') {
$signOStr .= '&';
}
$signOStr .= $k . '=' . $val;
}
$signOStr = $signOStr . '&key=' . $key;
$sign = strtoupper(MD5($signOStr));
if($sign == $get_data['sign'] && $data['status'] == 3){
$dbms='mysql';//数据库类型
$dbName='nicai';//使用的数据库
$users='root';//数据库连接用户名
$pwd='root';//数据库连接密码
$host='127.0.0.1';//数据库主机名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
$pdo=new PDO($dsn,$users,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
//成功
$out_trade_no=$data['orderNo'];//订单号
$trade_no=$data['platformOrderNo'];
$pay_time=$data['finishTime'];
//通过订单号修改订单id
$updatesql="UPDATE pay_order set trade_no='$trade_no',pay_time='$pay_time',status=1 WHERE order_id='$out_trade_no'";
$res=$pdo->exec($updatesql);
if($res==1){
//修改完状态之后要给用户加上元宝
//$order_user=$model_payorder->getorder($out_trade_no);
//查询修改完订单的信息
$query1="select * from `pay_order` where order_id='$out_trade_no'";//需要执行的sql语句
$res1=$pdo->prepare($query1);//准备查询语句
$res1->execute();//
$arr=$res1->fetch(PDO::FETCH_ASSOC);
$uid=$arr['uid'];//用户的id
$querys="select * from `user` where id='$uid'";//需要执行的sql语句
$res2=$pdo->prepare($querys);//准备查询语句
$res2->execute();//
$user=$res2->fetch(PDO::FETCH_ASSOC);
$acer_money=$user['acer_money'];
$card_num=$arr['card_num'];
$updatesq="UPDATE `user` set acer_money='$acer_money'+'$card_num' WHERE id='$uid'";
$result=$pdo->exec($updatesq);
if($result==1){
echo "success";
}
}else{
echo "fail";
}
}else{
echo "fail";
}
这就完成了。还有一个问题就是 扫码之后,页面跳转问题
注意放到充值的页面
[javascript] view
plain copy
print?
$(document).ready(function () {
setInterval("ajaxstatus()", 17000);
});
function ajaxstatus() {
var order_id=$("#out_trade_no").val();
//alert(order_id);
if ($("#out_trade_no").val() != 0) {
$.ajax({
url: "pay/order",
type: "GET",
dataType:'jsonp',
async: false,
data: {order_id:order_id},
success: function(msg) {
if(msg.status == 1) {
//注册成功调到登录页面
window.location.href = "/userInfo";
} else {
layer.msg('请求订单状态出错!', {icon: 7, time: 2000});
return false;
}
}
});
}
}
[javascript] view
plain copy
print?
ajax请求的地址pay/order控制器操作
[php] view
plain copy
print?
//跳转页面
public function paysorder(Request $request){
$order_id=$request->input('order_id','');
$callback=$_GET['callback'];
$model_payorder=new PayOrder();
$info=$model_payorder->getorder($order_id);
if($info){
$response = array(
'state' => 200,
'message' => '成功',
'order_id' => $info['order_id'],
'status' => $info['status'],
);
exit( $callback.'('.json_encode($response).')');
}else{
$response = array(
'state' => 202,
);
exit( $callback.'('.json_encode($response).')');
}
}
public function recharge(Request $request){
$data['money']=$request->input('money');//钱数
$data['order_id']=$request->input('order_id');//订单号
$data['card_num']=$request->input('card_num');//元宝数量
$data['username']=$request->session()->get("username");//用户昵称
$url = 'http://epay.taidupay.com/api/pay/unifiedOrder';
$key = '';//<span style="color:#33ff33;">平台申请的app_key</span>
$datas = [
'appId' =>'',//<span style="background-color: rgb(255, 153, 0);">平台申请的app_id</span>
'timestamp' => (string)time(),
'nonce' => time().rand(),
'service' => 'alipay.native',
'orderNo' => $data['order_id'],
'totalAmount' =>1,
'clientIp' => '测试服务器Ip',
'attach' => 'ces',
'notifyUrl' => '测试服务器IP/city.php',//异步回调地址(必须是外网访问到的地址)
'body' => '元宝',
];
ksort($datas);
$signOStr = '';
foreach ($datas as $k => $val) {
if ($signOStr != '') {
$signOStr .= '&';
}
$signOStr .= $k . '=' . $val;
}
$signOStr = $signOStr . '&key=' . $key;
$datas['sign'] = strtoupper(MD5($signOStr));
$data['rs'] = json_decode($this->json_post($url, json_encode($datas)), true);
//print_r($data['rs']);die;
if($data['rs']['success'] == true && $data['rs']['status'] == 0){
echo json_decode($data['rs']['payInfo'], true);
}else{
echo "<script> alert('订单编号重复!');parent.location.href='测试服务器iP/userInfo'; </script>";
}
return view('recharge')->with('data', $data);
}
[php] view
plain copy
print?
public function json_post($url, $data){
$ch = curl_init();
$header = [
'Accept-Charset: utf-8',
'Content-Type: application/json'
];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = curl_exec($ch);
$errorno=curl_errno($ch);
return $tmpInfo;
}
city.php文件内容
[php] view
plain copy
print?
<?php
header("Content-type:text/html;charset=utf-8");
$get_data = file_get_contents('php://input', 'r');
//file_put_contents('a.txt',$get_data);
$get_data = json_decode($get_data, true);
$key = '1bdc6c80b3cb8987e2720bd965748593f07bb3e9';
$data = $get_data;
unset($data['sign']);
ksort($data);
$signOStr = '';
foreach ($data as $k => $val) {
if ($signOStr != '') {
$signOStr .= '&';
}
$signOStr .= $k . '=' . $val;
}
$signOStr = $signOStr . '&key=' . $key;
$sign = strtoupper(MD5($signOStr));
if($sign == $get_data['sign'] && $data['status'] == 3){
$dbms='mysql';//数据库类型
$dbName='nicai';//使用的数据库
$users='root';//数据库连接用户名
$pwd='root';//数据库连接密码
$host='127.0.0.1';//数据库主机名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
$pdo=new PDO($dsn,$users,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
//成功
$out_trade_no=$data['orderNo'];//订单号
$trade_no=$data['platformOrderNo'];
$pay_time=$data['finishTime'];
//通过订单号修改订单id
$updatesql="UPDATE pay_order set trade_no='$trade_no',pay_time='$pay_time',status=1 WHERE order_id='$out_trade_no'";
$res=$pdo->exec($updatesql);
if($res==1){
//修改完状态之后要给用户加上元宝
//$order_user=$model_payorder->getorder($out_trade_no);
//查询修改完订单的信息
$query1="select * from `pay_order` where order_id='$out_trade_no'";//需要执行的sql语句
$res1=$pdo->prepare($query1);//准备查询语句
$res1->execute();//
$arr=$res1->fetch(PDO::FETCH_ASSOC);
$uid=$arr['uid'];//用户的id
$querys="select * from `user` where id='$uid'";//需要执行的sql语句
$res2=$pdo->prepare($querys);//准备查询语句
$res2->execute();//
$user=$res2->fetch(PDO::FETCH_ASSOC);
$acer_money=$user['acer_money'];
$card_num=$arr['card_num'];
$updatesq="UPDATE `user` set acer_money='$acer_money'+'$card_num' WHERE id='$uid'";
$result=$pdo->exec($updatesq);
if($result==1){
echo "success";
}
}else{
echo "fail";
}
}else{
echo "fail";
}
这就完成了。还有一个问题就是 扫码之后,页面跳转问题
注意放到充值的页面
[javascript] view
plain copy
print?
$(document).ready(function () {
setInterval("ajaxstatus()", 17000);
});
function ajaxstatus() {
var order_id=$("#out_trade_no").val();
//alert(order_id);
if ($("#out_trade_no").val() != 0) {
$.ajax({
url: "pay/order",
type: "GET",
dataType:'jsonp',
async: false,
data: {order_id:order_id},
success: function(msg) {
if(msg.status == 1) {
//注册成功调到登录页面
window.location.href = "/userInfo";
} else {
layer.msg('请求订单状态出错!', {icon: 7, time: 2000});
return false;
}
}
});
}
}
[javascript] view
plain copy
print?
ajax请求的地址pay/order控制器操作
[php] view
plain copy
print?
//跳转页面
public function paysorder(Request $request){
$order_id=$request->input('order_id','');
$callback=$_GET['callback'];
$model_payorder=new PayOrder();
$info=$model_payorder->getorder($order_id);
if($info){
$response = array(
'state' => 200,
'message' => '成功',
'order_id' => $info['order_id'],
'status' => $info['status'],
);
exit( $callback.'('.json_encode($response).')');
}else{
$response = array(
'state' => 202,
);
exit( $callback.'('.json_encode($response).')');
}
}
相关文章推荐
- laravel 框架接入第三方扫码支付(万众云平台)
- laravel 框架接入第三方支付宝扫码支付(万众云平台)
- laravel框架下的pc支付宝支付接入
- 电商平台接入第三方支付接口之微信支付接入订单系统
- 央行超级网银8月上线 第三方支付平台或暂停接入
- 打造统一第三方SDK接入框架(用户模块,支付模块,发享模块)(一)
- 央行超级网银8月上线 第三方支付平台或暂停接入
- Laravel框架接入短信平台进行用户注册短信验证
- 第三方支付平台-框架介绍
- laravel5.4框架微信,支付宝等支付和退款使用第三方插件Omnipay
- IOS接入第三方付钱啦支付平台
- 第三方支付平台-框架介绍
- 第三方支付平台业务分析
- 第三方支付平台评价
- 第三方支付程序 点卡api支付程序 点卡消耗平台 支持多家接口源码
- 利用码云平台和wamp集成环境,实现多人开发php项目laravel框架构建的前凑准备
- 微信开放平台,公众号第三方平台接入
- 15个国外知名的第三方支付平台
- Android 第三方应用接入微信平台(1)
- 支付平台的接入