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

57 lines
1.7 KiB
PHTML

2 years ago
<?php
namespace Think\Pay\Driver;
class Palpay extends \Think\Pay\Pay {
protected $gateway = 'https://www.paypal.com/cgi-bin/webscr';
protected $config = array(
'business' => ''
);
public function check() {
if (!$this->config['business']) {
E("贝宝设置有误!");
}
return true;
}
public function buildRequestForm(\Think\Pay\PayVo $vo) {
$param = array(
'cmd' => '_xclick',
'charset' => 'utf-8',
'business' => $this->config['business'],
'currency_code' => 'USD',
'notify_url' => $this->config['notify_url'],
'return' => $this->config['return_url'],
'invoice' => $vo->getOrderNo(),
'item_name' => $vo->getTitle(),
'amount' => $vo->getFee(),
'no_note' => 1,
'no_shipping' => 1
);
$sHtml = $this->_buildForm($param, $this->gateway);
return $sHtml;
}
public function verifyNotify($notify) {
if (empty($notify['txn_id']))
return false;
$tmpAr = array_merge($notify, array("cmd" => "_notify-validate"));
$ppResponseAr = $this->fsockOpen($this->gateway, 0, $tmpAr);
if ((strcmp($ppResponseAr, "VERIFIED") == 0) && $notify['receiver_email'] == $this->config['business']) {
$info = array();
//支付状态
$info['status'] = $notify['payment_status'] == 'Completed' ? true : false;
$info['money'] = $notify['mc_gross'];
$info['out_trade_no'] = $notify['invoice'];
$this->info = $info;
return true;
}
return false;
}
}