app_pay.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 15/12/9
  6. * Time: 上午12:25
  7. */
  8. define(WXPAY_PATH,BASE_DATA_PATH.'/api/wxpay');
  9. require_once (WXPAY_PATH . '/lib/WxPay.Api.php');
  10. require_once (WXPAY_PATH . '/lib/WxPay.Config.php');
  11. require_once (WXPAY_PATH . '/lib/WxPay.Data.php');
  12. require_once (WXPAY_PATH . '/lib/WxPay.Exception.php');
  13. require_once (WXPAY_PATH . '/lib/WxPay.Notify.php');
  14. class app_payControl extends mobileHomeControl
  15. {
  16. public function uniorderOp()
  17. {
  18. // $desc = $_POST['desc'];
  19. // $attach = $_POST['attatch'];
  20. $total_fee = 1;//intval($_POST['fee']) * 100;
  21. $input = new WxPayUnifiedOrder();
  22. $input->SetBody("test"); //商品或支付单简要描述
  23. $input->SetAttach("test"); //附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
  24. $input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));//商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
  25. $input->SetTotal_fee("1");//订单总金额,单位为分,详见支付金额
  26. $input->SetTime_start(date("YmdHis")); //订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
  27. $input->SetTime_expire(date("YmdHis", time() + 600));//订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则
  28. $input->SetGoods_tag("test");
  29. $input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
  30. $input->SetTrade_type("APP");//JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里,MICROPAY--刷卡支付,刷卡支付有单独的支付接口,不调用统一下单接口
  31. $order = WxPayApi::unifiedOrder($input);
  32. $ret = $this->handle_order($order);
  33. //$ret['sign'] = $order['sign'];
  34. $ret['prepayid'] = $order['prepay_id'];
  35. $ret['partnerid'] = WxPayConfig::MCHID;
  36. joutput_data($ret);
  37. }
  38. private function handle_order($order)
  39. {
  40. $jsapi = new WxPayJsApiPay();
  41. $jsapi->SetAppid($order["appid"]);
  42. $timeStamp = time();
  43. $jsapi->SetTimeStamp("$timeStamp");
  44. $jsapi->SetNonceStr(WxPayApi::getNonceStr());
  45. //$jsapi->SetPackage('Sign=WXPay');
  46. $jsapi->SetPackage("prepay_id=" . $order['prepay_id']);
  47. $jsapi->SetSignType("MD5");
  48. //$sign = $jsapi->MakeSign();
  49. $jsapi->SetSign();
  50. $jsapi->SetPaySign($jsapi->MakeSign());
  51. return $jsapi->GetValues();
  52. }
  53. public function notifyOp()
  54. {
  55. }
  56. }