You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

136 lines
4.3 KiB

  1. <?php
  2. ini_set('date.timezone','Asia/Shanghai');
  3. //error_reporting(E_ERROR);
  4. require_once "../lib/WxPay.Api.php";
  5. require_once "WxPay.JsApiPay.php";
  6. require_once 'log.php';
  7. require_once '../../Common/Function.php';
  8. //初始化日志
  9. $logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');
  10. $log = Log::Init($logHandler, 15);
  11. //打印输出数组信息
  12. function printf_info($data)
  13. {
  14. foreach($data as $key=>$value){
  15. echo "<font color='#00ff55;'>$key</font> : $value <br/>";
  16. }
  17. }
  18. //①、获取用户openid
  19. $tools = new JsApiPay();
  20. $openId = $tools->GetOpenid();
  21. //var_dump($_GET['orderid']);exit();
  22. if (!empty($_GET['orderid']) && $_GET['orderid'] !=='false'){
  23. $orderno=$_GET['orderid'];
  24. }else{
  25. echo "<script>alert('订单号有误')</script>";
  26. exit;
  27. }
  28. $url="http://xmwxc.zhizhuchuxing.cn/core/order_detail.asp?orderno=".$orderno;
  29. $result=http_request($url);
  30. wlog($openId."--".$orderno."--".$url."--".$result);
  31. $orderDetail=json_decode($result,true);
  32. $money=$orderDetail['price']*100;
  33. if ($money == 0){
  34. $successurl="http://xmwxc.zhizhuchuxing.cn/core/order_confirm1.asp?orderno=".$orderno;
  35. Header("Location: $successurl");
  36. exit;
  37. }
  38. $name=$orderDetail['prod_name'];
  39. $order_status=$orderDetail['order_status'];
  40. if ($order_status !=='待支付'){
  41. //echo "<script>alert('不是待支付订单')</script>";
  42. //exit;
  43. }
  44. //$openId='oCVcbv1udkL4iZm-t1h8YMrMDSyU';
  45. //②、统一下单
  46. $input = new WxPayUnifiedOrder();
  47. $input->SetBody($name.": ".$orderno);
  48. //$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
  49. $input->SetOut_trade_no($orderno);
  50. $input->SetTotal_fee($money);
  51. $input->SetTime_start(date("YmdHis"));
  52. $input->SetTime_expire(date("YmdHis", time() + 600));
  53. $input->SetGoods_tag("代金券");
  54. $reurl=dirname("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])."/success_notify.php";
  55. wlog($reurl);
  56. $input->SetNotify_url($reurl);
  57. $input->SetTrade_type("JSAPI");
  58. $input->SetOpenid($openId);
  59. $order = WxPayApi::unifiedOrder($input);
  60. //echo '<font color="#f00"><b>统一下单支付单信息qwwww</b></font><br/>';
  61. //printf_info($order);
  62. $jsApiParameters = $tools->GetJsApiParameters($order);
  63. //print_r($jsApiParameters);
  64. //获取共享收货地址js函数参数
  65. $editAddress = $tools->GetEditAddressParameters();
  66. //③、在支持成功回调通知中处理成功之后的事宜,见 notify.php
  67. /**
  68. * 注意:
  69. * 1、当你的回调地址不可访问的时候,回调通知会失败,可以通过查询订单来确认支付是否成功
  70. * 2、jsapi支付时需要填入用户openid,WxPay.JsApiPay.php中有获取openid流程 (文档可以参考微信公众平台“网页授权接口”,
  71. * 参考http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html)
  72. */
  73. function wlog($result){
  74. file_put_contents('./order_detail.txt', date("Y-m-d H:i:s")." ".$result.PHP_EOL,FILE_APPEND);//订单详细日志
  75. }
  76. ?>
  77. <script type="text/javascript">
  78. window.onload = function(){
  79. if (typeof WeixinJSBridge == "undefined"){
  80. if( document.addEventListener ){
  81. document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
  82. }else if (document.attachEvent){
  83. document.attachEvent('WeixinJSBridgeReady', jsApiCall);
  84. document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
  85. }
  86. }else{
  87. jsApiCall();
  88. }
  89. };
  90. //调用微信JS api 支付
  91. function jsApiCall()
  92. {
  93. WeixinJSBridge.invoke(
  94. 'getBrandWCPayRequest',
  95. <?php echo $jsApiParameters; ?>,
  96. function(res){
  97. WeixinJSBridge.log(res.err_msg);
  98. if(res.err_msg =='get_brand_wcpay_request:ok'){
  99. var orderno=<?php echo $orderno ?>;
  100. alert('支付成功');
  101. location.href='http://xmwxc.zhizhuchuxing.cn/core/order_confirm1.asp?orderno='+orderno;
  102. }else if(res.err_msg =='get_brand_wcpay_request:cancel'){
  103. alert('取消支付');
  104. window.history.go(-1);
  105. }else{
  106. alert('支付失败');
  107. window.history.go(-1);
  108. }
  109. }
  110. );
  111. }
  112. function callpay()
  113. {
  114. if (typeof WeixinJSBridge == "undefined"){
  115. if( document.addEventListener ){
  116. document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
  117. }else if (document.attachEvent){
  118. document.attachEvent('WeixinJSBridgeReady', jsApiCall);
  119. document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
  120. }
  121. }else{
  122. jsApiCall();
  123. }
  124. }
  125. </script>