79 lines
1.8 KiB
PHP
79 lines
1.8 KiB
PHP
<?php
|
||
|
||
require_once dirname(__FILE__) . "/lib/WxPay.Api.php";
|
||
|
||
/**
|
||
*
|
||
* APP支付实现类
|
||
* @author widyhu
|
||
*
|
||
*/
|
||
class AppPay
|
||
{
|
||
/**
|
||
*
|
||
* 参数数组转换为url参数
|
||
* @param array $urlObj
|
||
*/
|
||
private function ToUrlParams($urlObj)
|
||
{
|
||
$buff = "";
|
||
foreach ($urlObj as $k => $v)
|
||
{
|
||
$buff .= $k . "=" . $v . "&";
|
||
}
|
||
|
||
$buff = trim($buff, "&");
|
||
return $buff;
|
||
}
|
||
|
||
/**
|
||
* 生成直接支付url,支付url有效期为2小时,模式二
|
||
* @param WxPayUnifiedOrder $input
|
||
* @param array $wechatInfo
|
||
* @return array
|
||
* @throws WxPayException
|
||
*/
|
||
public function GetPayPrepayId($input, $wechatInfo)
|
||
{
|
||
if ($input->GetTrade_type() == "APP")
|
||
{
|
||
$result = WxPayApi::unifiedOrder($input, 6, $wechatInfo);
|
||
return $result;
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
*
|
||
* 获取app支付的参数
|
||
* @param array $UnifiedOrderResult 统一支付接口返回的数据
|
||
* @param array $weixinInfo 微信公众号相关信息
|
||
* @throws WxPayException
|
||
*
|
||
* @return string json数据,可直接填入js函数作为参数
|
||
*/
|
||
public function GetAppApiParameters($UnifiedOrderResult, $weixinInfo)
|
||
{
|
||
if(!array_key_exists("appid", $UnifiedOrderResult)
|
||
|| !array_key_exists("prepay_id", $UnifiedOrderResult)
|
||
|| $UnifiedOrderResult['prepay_id'] == "")
|
||
{
|
||
throw new WxPayException("参数错误");
|
||
}
|
||
|
||
$appapi = new WxPayAppApiPay();
|
||
$appapi->SetAppid($UnifiedOrderResult["appid"]);
|
||
$appapi->SetPartnerId($UnifiedOrderResult["mch_id"]);
|
||
$appapi->SetPrepayId($UnifiedOrderResult["prepay_id"]);
|
||
$timeStamp = time();
|
||
$appapi->SetTimeStamp($timeStamp);
|
||
$appapi->SetNonceStr(WxPayApi::getNonceStr());
|
||
$appapi->SetPackage("Sign=WXPay");
|
||
$appapi->SetSign($appapi->MakeSign($weixinInfo));
|
||
$back_arr=$appapi->GetValues();
|
||
$back_arr['prepay_id']=$UnifiedOrderResult["prepay_id"];
|
||
$parameters = json_encode($appapi->GetValues());
|
||
return $parameters;
|
||
}
|
||
} |