/**
* 抖音担保支付
*/
public function trPay($total_amount,$subject,$body,$order_sn)
{
$payUrl = 'https://developer.toutiao.com/api/apps/ecpay/v1/create_order';
$requestData = [
'app_id' => self::$app_id,
'out_order_no' => $order_sn,
'total_amount' => (int)bcmul($total_amount,100),
'subject' => $subject,
'body' => $body,
'valid_time' => self::$valid_time,
'notify_url' => request()->domain() . '/api/notify/Trill/trNotify',
];
$requestData = array_filter($requestData);
$requestData['sign'] = self::getSign($requestData,self::$secret);
$payParams = $this->posturl($payUrl,$requestData);
return $payParams;
}
请求签名
/**
* 支付签名
* @param array $body
* @param string $secret
* @return string
* User: huweikeji
* Date: 2021/8/1 16:14
*/
public function getSign(array $body, string $secret)
{
$filtered = [];
foreach ($body as $key => $value) {
if (in_array($key, ['sign', 'app_id', 'thirdparty_id'])) {
continue;
}
$filtered[] =
is_string($value)
? trim($value)
: $value;
}
$filtered[] = trim($secret);
sort($filtered, SORT_STRING);
return md5(trim(implode('&', $filtered)));
}
curl
/**
* post发送curl请求
* @param $url
* @param $data
* @return mixed
*/
function posturl($url,$data){
$data = json_encode($data);
$headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return json_decode($output,true);
}
回调:
/**
* 支付回调
*/
public function trNotify()
{
$notify = request()->param();
cache('notify',$notify);
$notify['token'] = self::$token;
if ($notify['msg_signature'] == $this->getNotifySign($notify)) {
//获取订单信息
$callbackOrder = json_decode($notify['msg'], true);
$order = Lianghaoorder::where(['paystatus'=>1,'orderid'=>$callbackOrder['cp_orderno']])->find();
if(isset($order)&&$order['paytime']==0){
$order->paystatus = 2;
$order->paytime = time();
$order->otherid = $callbackOrder['payment_order_no']; //商户单号(第三方订单号)
$order->save();
//抖音支付回调处理
}
//处理订单
$data = ['order_sn' => $callbackOrder['cp_orderno']];
Log::info('抖音担保支付效验成功');
Log::info($data);
}
//$notify = cache('notify_err',$notify);
//$data = ['err_no' => '0', 'err_tips' => 'success'];
//return json($data);
}
3007

被折叠的 条评论
为什么被折叠?



