标签: 微信支付

  • php 一个文件搞定  提交付款码支付 应用场景

    php 一个文件搞定 提交付款码支付 应用场景

    应用场景

    收银员使用扫码设备读取微信用户付款码以后,二维码或条码信息会传送至商户收银台,由商户收银台或者商户后台调用该接口发起支付。

    提醒1:提交支付请求后微信会同步返回支付结果。当返回结果为“系统错误”时,商户系统等待5秒后调用【查询订单API】,查询支付实际交易结果;当返回结果为“USERPAYING”时,商户系统可设置间隔时间(建议10秒)重新查询支付结果,直到支付成功或超时(建议30秒);

    提醒2:在调用查询接口返回后,如果交易状况不明晰,请调用【撤销订单API】,此时如果交易失败则关闭订单,该单不能再支付成功;如果交易成功,则将扣款退回到用户账户。当撤销无返回或错误时,请再次调用。注意:请勿调用扣款后立即调用【撤销订单API】,建议至少15s后再调用。撤销订单API需要双向证书。

    官方文档地址:https://pay.weixin.qq.com/wiki/doc/api/micropay_sl.php?chapter=9_10&index=1

    具体代码

    建立文件pay.php

    <?php
    $key = "0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";						//微信商户API密钥
    $arr['auth_code'] = $_GET['auth_code'];
    $arr['appid']  = "xxxxxxxxxxxxxxxxxx";								//应用APPID
    $arr['mch_id'] = "1311111111";												//微信支付商户号
    $arr['sub_mch_id'] = '1561111111';										//子商户号
    $arr['out_trade_no'] = date('YmdHis').rand(1000,9999);//平台内部订单号
    $arr['body'] = "扫码支付";														//内容
    $arr['total_fee'] = 1; 																//金额
    $arr['nonce_str'] = md5(rand(1000, 999999));					//随机字符串
    $arr['spbill_create_ip'] = $_SERVER['REMOTE_ADDR'];   //获得用户设备IP 
    ksort($arr);
    $sign_tmp = $xml_tmp = '';
    foreach($arr as $k => $v){
    	$sign_tmp .= "$k=$v&";
    	$xml_tmp .= "<$k>$v</$k>";
    }
    $sign = strtoupper(MD5($sign_tmp . "key=$key")); 				//MD5后转换成大写
    $xml = "<xml>$xml_tmp<sign>$sign</sign></xml>";
    $url = "https://api.mch.weixin.qq.com/pay/micropay";		//微信传参地址
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);									//设置超时
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
    curl_setopt($ch, CURLOPT_HEADER, FALSE);								//设置header
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 				//要求结果为字符串且输出到屏幕上
    curl_setopt($ch, CURLOPT_POST, TRUE);										//POST提交方式
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    $dataxml = curl_exec($ch);															//运行curl
    if(!$dataxml){
        $error = curl_errno($ch);
        echo "curl出错,错误码:$error"."<br>";
    }
    curl_close($ch);
    //将微信返回的XML 转换成数组
    $rs = (array)simplexml_load_string($dataxml, 'SimpleXMLElement', LIBXML_NOCDATA); 
    echo 'over';
    print_r($rs);

    拼接后的XML举例如下:

    <xml>
       <appid>wx2421b1c4370ec43b</appid>
       <attach>订单额外描述</attach>
       <auth_code>120269300684844649</auth_code>
       <body>付款码支付测试</body>
       <device_info>1000</device_info>
       <goods_tag></goods_tag>
       <mch_id>10000100</mch_id>
    <sub_mch_id>10000101</sub_mch_id>
       <nonce_str>8aaee146b1dee7cec9100add9b96cbe2</nonce_str>
       <out_trade_no>1415757673</out_trade_no>
       <spbill_create_ip>14.17.22.52</spbill_create_ip>
       <time_expire></time_expire>
       <total_fee>1</total_fee>
       <sign>C29DB7DB1FD4136B84AE35604756362C</sign>
    </xml>

    注:参数值用XML转义即可,CDATA标签用于说明数据不被XML解析器解析。

    使用方法

    pay.php?auth_code=135610584558

    将下图中的二维码数字输入auth_code值中即可。

  • [RamNode]稳定建站之选 已接入支付宝、微信支付

    [RamNode]稳定建站之选 已接入支付宝、微信支付

    Ramnode,老牌、稳定商家。老季看到Ramnode已接入了支付宝和微信支付。有需要建站的可以看看。价格比较贵。但是是真的稳。

    优惠信息:


    2核 – 2G 内存 – 25G NVme SSD – 1Gbps -3T 流量 – KVM – 洛杉矶 12美金/月。

    点击查看RamNode 全部套餐

    套餐信息在左侧(点击“Show Menu”按钮即可查看所有节点)。


WeChat
↑