Heim >Backend-Entwicklung >PHP-Tutorial >微信支付与支付宝支付整合 PHP实现

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

WBOY
WBOYOriginal
2016-06-23 13:26:461439Durchsuche

利用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;

使用微信支付

微信支付依赖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;}

 回调数据处理  
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;}

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn