微信支付与支付宝支付整合 PHP实现

WBOY
Release: 2016-06-23 13:26:46
Original
1426 people have browsed it

利用PHP的反射把两种支付接口统一起来。

使用前需要配置目录下的Config文件即WxpayConfig.php与AlipayConfig.php

使用支付宝支付
<?phpnamespace WatcherHangzhouPayment\Payment;$payRequestParams = array(    'returnUrl' => $this->generateUrl('pay_return', array('name' => 'alipay'), true),    'notifyUrl' => $this->generateUrl('pay_notify', array('name' => 'alipay'), true),    'showUrl' => $this->generateUrl('show_goods', array('id' => $goods['id']), true),);$paymentRequest = createPaymentRequest($order, $requestParams);function createPaymentRequest($order, $requestParams){    $requestParams = array_merge($requestParams, array(            'orderSn' => $order['sn'],            'title' => $order['title'],            'summary' => '',            'amount' => $order['amount'],    ));    return Payment::createRequest('alipay', $requestParams);}$htmlForm = $request->form();$inputHtml = '';foreach ($htmlForm['params'] as $key => $value) {    $inputHtml .= "<input type=\"hidden\" name=\"{$key}\" value=\"{$value}\">";}$html = <<<EOF<!DOCTYPE html><html><head>  <meta charset="utf-8">  <title>Jumping to alipay gateway...</title><body>  <form action="{$htmlForm['action']}"  method="{$htmlForm['method']}" name="form">    {$inputHtml}  </form>  <script>    document.all.form.submit();  </script></body></html>EOF;echo $html;die;
Copy after login

使用微信支付

微信支付依赖composer的把url转换为二维码text的Endroid\QrCode\QrCode库。

<?phpnamespace WatcherHangzhouPayment\Payment;<?phpnamespace WatcherHangzhouPayment\Payment;$payRequestParams = array(    'returnUrl' => $this->generateUrl('pay_return', array('name' => 'wxpay'), true),    'notifyUrl' => $this->generateUrl('pay_notify', array('name' => 'wxpay'), true),    'showUrl' => $this->generateUrl('show_goods', array('id' => $goods['id']), true),);$paymentRequest = createPaymentRequest($order, $requestParams);function createPaymentRequest($order, $requestParams){    $requestParams = array_merge($requestParams, array(            'orderSn' => $order['sn'],            'title' => $order['title'],            'summary' => '',            'amount' => $order['amount'],    ));    return Payment::createRequest('wxpay', $requestParams);}$returnXml = $paymentRequest->unifiedOrder();$returnArray = $paymentRequest->fromXml($returnXml);if ($returnArray['return_code'] == 'SUCCESS') {    $url = $returnArray['code_url'];    $html = <<<EOF<!DOCTYPE html><html><head>  <meta charset="utf-8">  <title>使用微信二维码支付</title><body>  <img  src="{{ path('generate_qrcode_image',{url:url}) }}"  alt="微信支付与支付宝支付整合 PHP实现" >          <div class="text-qrcode hidden-xs">            请使用微信扫一扫<br>扫描二维码支付          </div></body></html>EOF;    echo $html;    die;}
Copy after login

Copy after login
回调数据处理
if (支付宝) {    $response = Payment::createResponse('alipay', $_POST);} elseif (微信) {    $returnXml = $GLOBALS['HTTP_RAW_POST_DATA'];    $response = Payment::createResponse('wxpay', fromXml($returnXml));}$payData = $response->getPayData();if ($payData['status'] == "success") {    //干支付成功该干的事情}function fromXml($xml){    $array = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);    return $array;}
Copy after login

项目主页:http://www.open-open.com/lib/view/home/1441781914992

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template