操亚洲女人-操夜夜-国产一区免费看-国产一区免费视频-绿帽在线-麻豆 美女 丝袜 人妻 中文-人人超碰97-人人超碰人人-天天添天天操-天天添天天射-一区二区三区视频观看-一区二区三区视频免费-久久亚洲日韩av一区二区三区-精品人妻中文av一区二区三区-无码人妻精品中文字幕免费-中国做爰国产精品视频

小程序支付開發(fā)
2019-03-19

小程序開發(fā)中經常碰到支付的問題,今天鄭州小程序開發(fā)公司開拓者科技跟大家分享一下相關的經驗。

一、申請微信支付
想要對接微信支付,就必須先想微信支付官方提交資料申請支付賬號,通常微信服務號、微信小程序內都有支付申請的接口,申請一次就夠了。

二、微信小程序的支付對接

1:下列參數(shù)分解表示:

                    $data["appid"] = "";

                    $data["body"] = "支付";

                    $data["mch_id"] = ""; //商戶平臺號

                    $data["nonce_str"] = $this->nonce_str();//隨機數(shù),會顯示在下圖

                    $data["notify_url"] = '';//回調地址。在當前控制器寫回調方法,注意路徑

                    $data["openid"] = xx;//付款人的openid

                    $data["out_trade_no"] = xxx;訂單號

                    $data["spbill_create_ip"] = $request->ip();//當前請求的ip,用官方獲取函數(shù)

                    $data["total_fee"] = 0.01 * 100;//付款的金額

                    $data["trade_type"] = "JSAPI";//支付的方式

                    $sign = $this->sign($data);//加密

                    $data['sign'] = $sign;

                    $xmldata = $this->xml($data);

                    $url = "https://api.mch.weixin.qq.com/pay/unifiedorder";

                    $res = $this->http_request($url, $xmldata);

                    $result = $this->getxml($res);

                    if ($result['RETURN_CODE'] == 'SUCCESS') {

                        $info['appId'] = '';

                        $info['timeStamp'] = xx;當前時間戳就可以

                        $info['nonceStr'] = $this->nonce_str();

                        $info['package'] = 'prepay_id=' . PREPAY_ID;//此處可以自己研究一下

                        $info['signType'] = 'MD5';

                        $info["paySign"] = $this->sign($info);

                        $callback_data = ['code' => 200, 'msg' => "獲取成功", "data" => $info];

                    }else{

                        $callback_data = ['code' => 500, 'msg' => "獲取失敗", "data" => ''];

                    }

return json($callback_data);

2:http_request($url, $xmldata);

這部分是請求的數(shù)據,通過curl請求數(shù)據。復制就好了

function http_request($url,$rawData){

        $ch = curl_init();

        curl_setopt($ch,CURLOPT_URL,$url);

        curl_setopt($ch,CURLOPT_HEADER,0);

        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10);

        curl_setopt($ch,CURLOPT_POST,1);

        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

        curl_setopt($ch,CURLOPT_POSTFIELDS,$rawData);

//        curl_setopt($ch,CURLOPT_HTTPHEADER,array('content-Type:text'));

        $data = curl_exec($ch);

        curl_close($ch);

        return $data;

    }

3:隨機數(shù)---nonce_str

 function nonce_str(){

        $result = '';

        $str = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm';

        for($i = 0;$i< 32;$i++){

            $result .= $str[rand(0,48)];

        }

        return $result;

    }

4:getxml===獲取xml

function getxml($xml){

        $p = xml_parser_create();

        xml_parse_into_struct($p,$xml,$index);

        xml_parser_free($p);

        $data = '';

        foreach($index as $key => $value){

            if($value['tag'] == "RETURN_CODE"){

                $data['RETURN_CODE'] = $value['value'];

            }

        }

        return $data;

    }

 

5:回調函數(shù)接收:

public function notify_url(){

        $receipt = file_get_contents("php://input");//可以寫入日志自己接收的數(shù)據

        $post_data = $this->xmlToArray($receipt);

        $postSign = $post_data['sign'];

        $order_number = $post_data['out_trade_no'];// 訂單可以查看一下數(shù)據庫是否有這個訂單

        if ($post_data['return_code'] == 'SUCCESS' && $postSign) {

                    if (//寫入自己的邏輯) {

                        echo '<xml><return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg></xml>';

                    }

                } else {

                    echo '<xml><return_code><![CDATA[FAIL]]></return_code> <return_msg><![CDATA[ERROR]]></return_msg></xml>';

                }

            } else {

                echo '<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>';

            }

        } else {

            // 寫個日志記錄

//            file_put_contents('wxpayerrorlog.txt', $post_data['return_code'] . PHP_EOL, FILE_APPEND);

            echo '微信支付失敗';

        }

    }

    //xml轉換成數(shù)組

    private function xmlToArray($xml) {

        libxml_disable_entity_loader(true);

        $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);

        return $data;

    }

 

作者:鄭州小程序開發(fā)公司開拓者科技
 

訪問手機端更方便
操亚洲女人-操夜夜-国产一区免费看-国产一区免费视频-绿帽在线-麻豆 美女 丝袜 人妻 中文-人人超碰97-人人超碰人人-天天添天天操-天天添天天射-一区二区三区视频观看-一区二区三区视频免费-久久亚洲日韩av一区二区三区-精品人妻中文av一区二区三区-无码人妻精品中文字幕免费-中国做爰国产精品视频

          主站蜘蛛池模板: 8x拔播拔播x8国产精品| 亚洲美女在线视频| 欧亚精品中文字幕| 日韩av免费在线播放| 国产精品福利在线观看| 91久久久久久久久久久| 亚洲美女性视频| www日韩欧美| 欧美国产乱视频| 国产精品99久久久久久www| 国产一区二区丝袜| 亚洲精品视频久久| 中文字幕欧美视频在线| 狠狠爱在线视频一区| 日韩av片电影专区| 亚洲影院色无极综合| 色偷偷偷综合中文字幕;dd| 精品久久久久久久久中文字幕 | 2019中文字幕免费视频| 国产一区视频在线| 亚洲美女又黄又爽在线观看| 久久精品一区中文字幕| 欧美亚洲成人精品| 日韩精品视频在线免费观看| 久久精品电影一区二区| 2021国产精品视频| 亚洲精品国产综合久久| 欧美超级乱淫片喷水| 国产脚交av在线一区二区| 亚洲欧美精品在线| 日韩欧美在线视频日韩欧美在线视频| 国产成人拍精品视频午夜网站| 亚洲精品一二区| 国内精品免费午夜毛片| 亚洲国产97在线精品一区| 欧美日本高清一区| 91麻豆国产精品| 精品国产成人在线| 亚洲精品日产aⅴ| 欧美性xxxx在线播放| 亚洲r级在线观看|