cyxxzjp

小程序端:

<button bindtap=\'checkout\' style=\'margin-top:20px\'>微信支付</button>
checkout: function () {
    var that = this;
    wx.login({
      success: function (res) {
        if (res.code) {
          //发起网络请求
          wx.request({
            url: app.globalData.requestUrl_pay,
            data: {
              code: res.code
            },
            header: {
              \'Content-Type\': \'application/x-www-form-urlencoded\'
            },
            method: "POST",
            success: function (res) {
              //console.log(res)
              that.sendpay(res.data)
            }
          })
        } else {
          console.log(\'获取用户登录态失败!\' + res.errMsg)
        }
      }
    });
  },
  sendpay: function (res) {
    console.log(res)
    wx.requestPayment(
      {
        \'timeStamp\': res.timeStamp,
        \'nonceStr\': res.nonceStr,
        \'package\': res.package,
        \'signType\': \'MD5\',
        \'paySign\': res.paySign,
        \'success\': function (res) { console.log(\'success\')},
        \'fail\': function (res) { console.log(\'fail\')},
        \'complete\': function (res) { console.log(\'complete\')}
      }) 
  },
ini_set(\'date.timezone\',\'Asia/Shanghai\');
require_once "pay/WxPay.Api.php";
require_once "pay/WxPay.JsApiPay.php";

define("APPID", \'xxx\');
define("SECRET", \'xxx\');

$code = $_REQUEST[\'code\'];
$url = "https://api.weixin.qq.com/sns/jscode2session?appid=".APPID."&secret=".SECRET."&js_code=".$code."&grant_type=authorization_code";
$res = curlget($url);
$res = json_decode($res,true);
    
$input = new WxPayUnifiedOrder();
$input->SetBody("test");
$input->SetAttach("test");
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
$input->SetTotal_fee("1");
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$input->SetNotify_url("http://www.xxx.com/xxx.php");
$input->SetTrade_type("JSAPI");
$input->SetOpenid($res[\'openid\']);
$order = WxPayApi::unifiedOrder($input);
$timeStamp = (string)time();
$sign[\'appId\'] = $order[\'appid\'];
$sign[\'timeStamp\'] = $timeStamp;
$sign[\'nonceStr\'] = $order[\'nonce_str\'];
$sign[\'package\'] = \'prepay_id=\'.$order[\'prepay_id\'];
$sign[\'signType\'] = \'MD5\';

ksort($sign);
$buff = "";
foreach ($sign as $k => $v)
{
    if($k != "sign" && $v != "" && !is_array($v)){
        $buff .= $k . "=" . $v . "&";
    }
}
$buff = trim($buff, "&");
$string = $buff . "&key=".WxPayConfig::KEY;
$string = md5($string);
$paySign = strtoupper($string);

$res = array(
    \'timeStamp\'    =>$timeStamp,
    \'nonceStr\'    =>$order[\'nonce_str\'],
    \'package\'    =>\'prepay_id=\'.$order[\'prepay_id\'],
    \'signType\'    =>\'MD5\',
    \'paySign\'    =>$paySign
);
echo json_encode($res);

function curlget($url=\'\'){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    $r = curl_exec($ch);
    curl_close($ch);
    return $r;
}

 

返回数据:

<xml>
<appid><![CDATA[dfdf]]></appid>
<attach><![CDATA[fdf]]></attach>
<bank_type><![CDATA[CFT]]></bank_type>
<cash_fee><![CDATA[1]]></cash_fee>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[N]]></is_subscribe>
<mch_id><![CDATA[]]></mch_id>
<nonce_str><![CDATA[dfdfdfdf]]></nonce_str>
<openid><![CDATA[o6tz-dfdfdf]]></openid>
<out_trade_no><![CDATA[ddfffdfdf]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[dfdfdf]]></sign>
<time_end><![CDATA[dfdfdfdf]]></time_end>
<total_fee>1</total_fee>
<trade_type><![CDATA[JSAPI]]></trade_type>
<transaction_id><![CDATA[dfdfdfd]]></transaction_id>
</xml> 

 

分类:

技术点:

相关文章: