<?php// require 'inc/odbc.php';?>
|
<?php
|
header("Content-type: text/html; charset=utf-8");
|
require_once 'API/alipay/f2fpay/model/builder/AlipayTradePrecreateContentBuilder.php';
|
require_once 'API/alipay/f2fpay/service/AlipayTradeService.php';
|
|
$ServiceOrdID=empty($_REQUEST['ServiceOrdID'])!=false ? "" : addslashes($_REQUEST['ServiceOrdID']);
|
$DispatchOrdID=empty($_REQUEST['DispatchOrdID'])!=false ? "" : addslashes($_REQUEST['DispatchOrdID']);
|
$Total_fee=empty($_REQUEST['total_fee'])!=false ? 0 : addslashes($_REQUEST['total_fee']);
|
$attach=empty($_REQUEST['attach'])!=false ? "" : addslashes($_REQUEST['attach']);
|
$pc=empty($_REQUEST['pc'])!=false ? "" : addslashes($_REQUEST['pc']);
|
$body = "医疗转运费用";
|
$out_trade_no="";
|
if (!empty($ServiceOrdID) && trim($ServiceOrdID)!="") {$out_trade_no=$ServiceOrdID."_".date("his");}
|
if ($pc=="1" and empty($DispatchOrdID)) {
|
$replaceURL="/ServiceOrder.gds?ServiceOrdID=".$ServiceOrdID;
|
}elseif ($pc=="1" and !empty($DispatchOrdID)) {
|
$replaceURL="/DispatchOrder.gds?DispatchOrdID=".$DispatchOrdID;
|
}else{
|
$replaceURL="/m_DispatchOrder_PaidMoney.gds?DispatchOrdID=".$DispatchOrdID;
|
}
|
|
if (trim($out_trade_no)!="" && $Total_fee>0){
|
// (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,
|
// 需保证商户系统端不能重复,建议通过数据库sequence生成,
|
//$outTradeNo = "qrpay".date('Ymdhis').mt_rand(100,1000);
|
$outTradeNo = $out_trade_no;
|
|
// (必填) 订单标题,粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
|
$subject = $body;
|
|
// (必填) 订单总金额,单位为元,不能超过1亿元
|
// 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
|
$totalAmount = $Total_fee;
|
|
|
// (不推荐使用) 订单可打折金额,可以配合商家平台配置折扣活动,如果订单部分商品参与打折,可以将部分商品总价填写至此字段,默认全部商品可打折
|
// 如果该值未传入,但传入了【订单总金额】,【不可打折金额】 则该值默认为【订单总金额】- 【不可打折金额】
|
//String discountableAmount = "1.00"; //
|
|
// (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段
|
// 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
|
$undiscountableAmount = "0";
|
|
// 卖家支付宝账号ID,用于支持一个签约账号下支持打款到不同的收款账号,(打款到sellerId对应的支付宝账号)
|
// 如果该字段为空,则默认为与支付宝签约的商户的PID,也就是appid对应的PID
|
//$sellerId = "";
|
|
// 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"
|
//$body = "购买商品2件共15.00元";
|
|
//商户操作员编号,添加此参数可以为商户操作员做销售统计
|
$operatorId = "";
|
|
// (可选) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持
|
$storeId = "";
|
|
// 支付宝的店铺编号
|
$alipayStoreId= "";
|
|
// 业务扩展参数,目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法),系统商开发使用,详情请咨询支付宝技术支持
|
$providerId = ""; //系统商pid,作为系统商返佣数据提取的依据
|
$extendParams = new ExtendParams();
|
$extendParams->setSysServiceProviderId($providerId);
|
$extendParamsArr = $extendParams->getExtendParams();
|
|
// 支付超时,线下扫码交易定义为5分钟
|
$timeExpress = "30m";
|
|
// 商品明细列表,需填写购买商品详细信息,
|
$goodsDetailList = array();
|
|
// 创建一个商品信息,参数含义分别为商品id(使用国标)、名称、单价(单位为分)、数量,如果需要添加商品类别,详见GoodsDetail
|
$goods1 = new GoodsDetail();
|
$goods1->setGoodsId($ServiceOrdID);
|
$goods1->setGoodsName($body);
|
$goods1->setPrice($Total_fee*100);
|
$goods1->setQuantity(1);
|
//得到商品1明细数组
|
$goods1Arr = $goods1->getGoodsDetail();
|
|
// 继续创建并添加第一条商品信息,用户购买的产品为“xx牙刷”,单价为5.05元,购买了两件
|
//$goods2 = new GoodsDetail();
|
//$goods2->setGoodsId("apple-02");
|
//$goods2->setGoodsName("ipad");
|
//$goods2->setPrice(1000);
|
//$goods2->setQuantity(1);
|
//得到商品1明细数组
|
//$goods2Arr = $goods2->getGoodsDetail();
|
|
//$goodsDetailList = array($goods1Arr,$goods2Arr);
|
$goodsDetailList = array($goods1Arr);
|
|
//第三方应用授权令牌,商户授权系统商开发模式下使用
|
$appAuthToken = "";//根据真实值填写
|
|
// 创建请求builder,设置请求参数
|
$qrPayRequestBuilder = new AlipayTradePrecreateContentBuilder();
|
$qrPayRequestBuilder->setOutTradeNo($outTradeNo);
|
$qrPayRequestBuilder->setTotalAmount($totalAmount);
|
$qrPayRequestBuilder->setTimeExpress($timeExpress);
|
$qrPayRequestBuilder->setSubject($subject);
|
$qrPayRequestBuilder->setBody($body);
|
$qrPayRequestBuilder->setUndiscountableAmount($undiscountableAmount);
|
$qrPayRequestBuilder->setExtendParams($extendParamsArr);
|
$qrPayRequestBuilder->setGoodsDetailList($goodsDetailList);
|
$qrPayRequestBuilder->setStoreId($storeId);
|
$qrPayRequestBuilder->setOperatorId($operatorId);
|
$qrPayRequestBuilder->setAlipayStoreId($alipayStoreId);
|
|
$qrPayRequestBuilder->setAppAuthToken($appAuthToken);
|
|
|
// 调用qrPay方法获取当面付应答
|
$qrPay = new AlipayTradeService($config);
|
$qrPayResult = $qrPay->qrPay($qrPayRequestBuilder);
|
|
// 根据状态值进行业务处理
|
switch ($qrPayResult->getTradeStatus()){
|
case "SUCCESS":
|
//echo "支付宝创建订单二维码成功:"."<br>---------------------------------------<br>";
|
$response = $qrPayResult->getResponse();
|
$qrcode = $qrPay->create_erweima($response->qr_code);
|
$qrcode = $response->qr_code;
|
//echo $qrcode."<br>";
|
//print_r($response);
|
|
break;
|
case "FAILED":
|
echo "支付宝创建订单二维码失败!!!"."<br>--------------------------<br>";
|
if(!empty($qrPayResult->getResponse())){
|
print_r($qrPayResult->getResponse());
|
}
|
break;
|
case "UNKNOWN":
|
echo "系统异常,状态未知!!!"."<br>--------------------------<br>";
|
if(!empty($qrPayResult->getResponse())){
|
print_r($qrPayResult->getResponse());
|
}
|
break;
|
default:
|
echo "不支持的返回状态,创建订单二维码返回异常!!!";
|
break;
|
}
|
//return ;
|
}
|
|
?>
|
<!DOCTYPE html>
|
<html>
|
<head>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
<title>支付宝 - 扫码支付</title>
|
<script type="text/javascript" src="/js/jquery-1.7.1.min.js"></script>
|
<script type="text/javascript" src="/js/jquery.qrcode.min.js"></script>
|
|
<style type="text/css">
|
body {
|
font-family: Arial;
|
margin: 0 auto;
|
padding: 0;
|
text-align: center;
|
}
|
#container {
|
display: inline-block;
|
margin: 20px auto;
|
box-shadow: 0 0 16px rgba(0,0,0,0.5);
|
filter: progid:DXImageTransform.Microsoft.Shadow(color='#969696', Direction=135, Strength=5);
|
-moz-box-shadow:0px 0px 16px rgba(0,0,0,0.5); /*firefox*/
|
-webkit-box-shadow:0px 0px 16px rgba(0,0,0,0.5); /*webkit*/
|
}
|
|
#container > * {
|
display: block;
|
}
|
#img-buffer {display: none;}
|
#PayTitle{width:400px; float:center; text-align: center;font-size:14pt;font-family:"微软雅黑","仿宋","宋体",Arial;line-height:180%;color:#0000ff;margin-top:10%;}
|
</style>
|
<link href="css/main.css" type="text/css" rel="stylesheet">
|
</head>
|
<body>
|
<div align="center"><div id="PayTitle"><p>请打开手机支付宝的“扫一扫”功能</p><p>扫描以下二唯码进行支付</p><p>支付金额:<?php echo $Total_fee;?>元</p></div>
|
<div id="container"></div>
|
<script type="text/javascript">
|
(function ($) {
|
'use strict';
|
var updateQrCode = function ()
|
{
|
var options =
|
{
|
render: 'canvas',
|
minVersion: 3,
|
maxVersion: 40,
|
ecLevel: 'H',
|
left: 0,
|
top: 0,
|
size: 220,
|
fill: '#000',
|
background: '#FFF',
|
text: '<?php echo $qrcode;?>',
|
radius: 0.2,
|
quiet: 1,
|
mode: 4,
|
mSize: 0.1,
|
mPosX: 0.5,
|
mPosY: 0.5,
|
label: '微信支付',
|
fontname: '微软雅黑',
|
fontcolor: '#FF9818', //'#60BAE6',
|
image: $("#img-buffer")[0]
|
};
|
$("#container").empty().qrcode(options);
|
},
|
update = function ()
|
{
|
updateQrCode();
|
};
|
$(function ()
|
{
|
$(window).load(update);
|
update();
|
});
|
}(jQuery));
|
</script>
|
<script type="text/javascript">
|
setInterval(function() {Push();},3000);//三秒后执行
|
/*请求函数的ajax*/
|
function Push() {
|
$.ajax({
|
|
type: "POST",
|
url: "alipay_pay_Query.php",//需要跳转到的界面 the page you want to post data
|
data: {
|
out_trade_no: '<?php echo $out_trade_no;?>'//要传给后台的数据 the data you should send to background
|
},
|
beforeSend: function() {},//在发送之前你可以进行相关操作 what you want to do before send
|
success: function(data) {
|
//需要执行的操作 execute it
|
if (data=="SUCCESS"){
|
alert('支付完成');
|
window.location.replace('<?php echo $replaceURL;?>');
|
}
|
//alert(data);
|
}
|
})
|
};
|
</script>
|
|
|
<div class="posi" id="posi">
|
<div class="ljgm">
|
<a href="<?php echo $replaceURL;?>" class="bttt" style="color: #fff;background: #9a6d92;font-weight: 700;">返回</a>
|
</div>
|
</div>
|
</div>
|
</body>
|
</html>
|