$total_user_earnings = 0; foreach ($country_data as $cd) { $rate = DB::table('pay_rate')->where('name', 'LIKE', '%' . $cd->country . '%')->first(); if ($cd->total != 0) { $rate_thousand = $cd->total / 1000; if (isset($rate->id)) { $total_user_earnings += number_format($rate_thousand * $rate->rate, 2, '.', ''); } else { $total_user_earnings += number_format($rate_thousand * 0.2, 2, '.', ''); } } else { $total_user_earnings += number_format(0, 2, '.', ''); } } if ($total_user_earnings >= 10) { $npr = new PayRequest(); $npr->user_id = Auth::user()->id; $npr->email = Input::get('email'); $npr->save(); return Redirect::to('earn/cashout')->with(array('errors' => 'Request has been submitted!')); } else { return Redirect::to('earn/cashout')->with(array('errors' => 'Sorry, minimum cash out amount is $10!')); } } else { return Redirect::to('earn/cashout')->with(array('errors' => 'No email address specified!')); } } } }); Route::get('torrent/{uniid}', function ($uniid) { if (Auth::guest()) {
<?php require_once './sdk/Hpp.Protocol.php'; require_once './sdk/Hpp.PayService.php'; require_once './repository.php'; //订单号 $orderNumber = md5(uniqid(mt_rand(), true)); //请求参数 $payRequest = new PayRequest(); $payRequest->setAppId('CA_APP-ID-0001'); $payRequest->setPayInterface($_POST['pay_interface']); $payRequest->setOrderNumber($orderNumber); $payRequest->setOrderSubject('php-demo-1分钱支付体验'); //订单标题 $payRequest->setOrderDescribe($_POST['order_describe']); $payRequest->setAmount($_POST['order_amount']); $payRequest->setCustomerIp('127.0.0.1'); $payRequest->setReturnUrl('http://127.0.0.1/callback-return.php?orderNumber' . $orderNumber); $payResponse = new PayResponse(PayService::startPay($payRequest)); //保存部分参数供后续用 //订单状态 $payRequest->setValue('status', Protocol::STATUS_ORDER_CREATED); $payRequest->setValue(Protocol::KEY_TRADE_SN, $payResponse->getTradeSn()); //相应数据 $payRequest->setValue('responseData', ['rawHtml' => $payResponse->getRawHtml(), 'wXQRPayUrl' => $payResponse->getWXQRPayUrl()]); //订单日期 $now = (new DateTime())->format('m-d H:i:s'); $payRequest->setValue('createOn', $now); Repository::save($payRequest->getOrderNumber(), $payRequest->toJsonString()); //ajax api输出 header('Content-Type: application/json; charset=UTF-8"');
private function buildPayRequest( PayRequest $request , AbstractPayPalMessageFactory $factory ) { $this->message->addChild( $factory->createMessageField( 'actionType' , $factory->createMessagePrimitive( $request->getActionType() ) ) ); $this->message->addChild( $factory->createMessageField( 'cancelUrl' , $factory->createMessagePrimitive( $request->getCancelUrl() ) ) ); if ( $request->getClientDetails() != null ) { $this->message->addChild( $factory->createMessageField( 'clientDetails' , $this->buildClientDetails( $request->clientDetails() ) ) ); } $this->message->addChild( $factory->createMessageField( 'currencyCode' , $factory->createMessagePrimitive( $request->currencyCode()->value() ) ) ); if ( $request->getFundingConstraint() != null ) { $this->message->addChild( $factory->createMessageField( 'fundingConstraint' , $this->buildFundingConstraint( $request->fundingConstraint() , $factory ) ) ); } if ( ( $ipnNotificationUrl = $request->getIpnNotificationUrl() ) != null ) { $this->message->addChild( $factory->createMessageField( 'ipnNotificationUrl' , $factory->createMessagePrimitive( $ipnNotificationUrl ) ) ); } if ( ( $memo = $request->getMemo() ) != null ) { $this->message->addChild( $factory->createMessageField( 'memo' , $factory->createMessagePrimitive( $memo ) ) ); } if ( ( $pin = $request->getPin() ) != null ) { $this->message->addChild( $factory->createMessageField( 'pin' , $factory->createMessagePrimitive( $pin ) ) ); } if ( ( $preaprovalKey = $request->getPreaprovalKey() ) != null ) { $this->message->addChild( $factory->createMessageField( 'preaprovalKey' , $factory->createMessagePrimitive( $preaprovalKey ) ) ); } if ( $request->receiverList()->count() > 0 ) { $this->message->addChild( $factory->createMessageField( 'receiverList' , $this->buildReceiverList( $request->receiverList() , $factory ) ) ); } else { throw new RuntimeException( 'You are *required* to specify at least one receiver' ); } $this->message->addChild( $factory->createMessageField( 'returnUrl' , $factory->createMessagePrimitive( $request->getReturnUrl() ) ) ); $this->message->addChild( $factory->createMessageField( 'requestEnvelope' , $this->buildRequestEnvelope( $request->requestEnvelope() , $factory ) ) ); if ( ( $reverseAllParallelPaymentsOnError = $request->getReverseAllParallelPaymentsOnError() ) != null ) { $this->message->addChild( $factory->createMessageField( 'reverseAllParallelPaymentsOnError' , $factory->createMessagePrimitive( $reverseAllParallelPaymentsOnError ) ) ); } if ( $request->getSender() != null ) { $this->message->addChild( $factory->createMessageField( 'sender' , $this->buildSender( $request->sender() , $factory ) ) ); } if ( ( $senderEmail = $request->getSenderEmail() ) != null ) { $this->message->addChild( $factory->createMessageField( 'senderEmail' , $factory->createMessagePrimitive( $senderEmail ) ) ); } if ( ( $trackingId = $request->getTrackingId() ) != null ) { $this->message->addChild( $factory->createMessageField( 'trackingId' , $factory->createMessagePrimitive( $trackingId ) ) ); } }
//写在线支付数据 $dopaydata['status'] = 0; $dopaydata['addtime'] = time(); $this->mysql->insert(Mysite::$app->config['tablepre'] . 'onlinelog', $dopaydata); //id type upid cost status addtime $newid = $this->mysql->insertid(); $totalcost = $dopaydata['cost'] * 100; $subject = $dopaydata['type'] == 'order' ? '支付订单' : '在线充值'; require_once $paydir . "/classes/PayRequest.class.php"; require_once $paydir . "/tenpay_config.php"; $curDateTime = date("YmdHis"); $randNum = rand(1000, 9999); /* 商家的定单号 */ $out_trade_no = $curDateTime . $randNum; /* 创建支付请求对象 */ $reqHandler = new PayRequest($key); // 设置在沙箱中运行,正式环境请设置为false $reqHandler->setInSandBox(true); //---------------------------------------- //以下业务参数名称参考开放平台sdk文档-PHP //---------------------------------------- // 设置财付通appid: 财付通app注册时,由财付通分配 $reqHandler->setAppid($appid); // 设置商户系统订单号:财付通APP系统内部的订单号,32个字符内、可包含字母,确保在财付通APP系统唯一 $reqHandler->setParameter("out_trade_no", $newid); // 设置订单总金额,单位为分 $reqHandler->setParameter("total_fee", $totalcost); // 设置通知url:接收财付通后台通知的URL,用户在财付通完成支付后,财付通会回调此URL,向财付通APP反馈支付结果。 // 此URL可能会被多次回调,请正确处理,避免业务逻辑被多次触发。需给绝对路径,例如:http://wap.isv.com/notify.asp $reqHandler->setParameter("notify_url", $notify_url); // 设置返回url:用户完成支付后跳转的URL,财付通APP应在此页面上给出提示信息,引导用户完成支付后的操作。
/** * hpp支付请求 * @param $payRequest * @param int $timeOut */ public static function startPay(PayRequest $payRequest, $timeOut = 60) { $payRequest->doValidate(); return self::makeHppRequest(Config::URL_OF_PAY, $payRequest, $timeOut); }