微信小程序支付代碼

前端html頁面:




前端js頁面:

submitOrder: function () {

? ? ? ? ? ? ??? ? let _this=this;

? ?????????????? App._get('pay/answer_payment', {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? open_id: _this.data.open_id,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? total_price: _this.data.total_price,?

? ?????????????? },

? ? ? ? ? ? ? ?? function (result) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var data=result;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log(data);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? //? 發(fā)起微信支付

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.requestPayment({

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? timeStamp: data['timeStamp'],

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nonceStr: data['nonceStr'],

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? package: data['package'],

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?? ? signType: 'MD5',

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? paySign: data['paySign'],

? ? ? ??????????????????????????????????????? success: function (res) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? App._get('book/orderSave',

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? user_id: _this.data.user_id,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? book_id: _this.data.book_id,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? book_content: _this.data.book_content,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? cost: _this.data.total_price,

? ? ? ? ? ? ??????????????????????????????????????????????????????? out_trade_no: data['out_trade_no'],

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }? ? function (result) {

?????????????????????????????????????????????????????????????????????? 保存訂單成功;

?????????????????????????????????????????????????????????????? });

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? App._get('book/mybook',

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? {

? ? ? ? ? ? ????????????????????????????????????????????????????????? user_id: _this.data.user_id,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? book_id: _this.data.book_id,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? },

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? function (result) {

????????????????????????????????????????????????????????????????????? 加入書包成功;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? });

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.navigateBack();?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? fail: function () {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? App.showError('訂單未支付', function () {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? });

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? ?? });

????????? });

? },

后臺開發(fā)者服務器代碼:

public function answer_payment(){

? ? ? ? $open_id = $_GET['open_id'];

? ? ? ? $total_price = $_GET['total_price'];

? ? ? ? $fee = $total_price;//支付費用

? ? ? ? $appid = 'wxdebe20dae6829f79';

? ? ? ? $body = '書云';

? ? ? ? $mch_id =? '1541638811';? //商戶號

? ? ? ? $nonce_str =? ? $this->nonce_str();//隨機字符串

? ? ? ? $notify_url =? 'https://www.weixin.qq.com/wxpay/notify.php'; //回調的url

? ? ? ? $openid = $open_id;

? ? ? ? $out_trade_no = $this->order_number($open_id);//商戶訂單號

? ? ? ? $spbill_create_ip ='101.132.72.105';

? ? ? ? $total_fee =? ? $fee*100;// 微信支付單位是分谅阿,所以這里需要*100

? ? ? ? $trade_type = 'JSAPI';//交易類型 默認

? ? ? ? $post['appid'] = $appid;

? ? ? ? $post['body'] = $body;

? ? ? ? $post['mch_id'] = $mch_id;

? ? ? ? $post['nonce_str'] = $nonce_str;//隨機字符串

? ? ? ? $post['notify_url'] = $notify_url;

? ? ? ? $post['openid'] = $openid;

? ? ? ? $post['out_trade_no'] = $out_trade_no;

? ? ? ? $post['spbill_create_ip'] = $spbill_create_ip;//終端的ip

? ? ? ? $post['total_fee'] = $total_fee;//總金額? ? ? ? $post['trade_type'] = $trade_type;

? ? ? ? $sign = $this->sign($post);//簽名

? ? ? ? $post_xml = '

? ? ? ? ? ?<appid>'.$appid.'

? ? ? ? ? ?<body>'.$body.'

? ? ? ? ? ?<mch_id>'.$mch_id.'

? ? ? ? ? ?<nonce_str>'.$nonce_str.'

? ? ? ? ? ?<notify_url>'.$notify_url.'

? ? ? ? ? ?<openid>'.$openid.'

? ? ? ? ? ?<out_trade_no>'.$out_trade_no.'

? ? ? ? ? ?<spbill_create_ip>'.$spbill_create_ip.'

? ? ? ? ? ?<total_fee>'.$total_fee.'

? ? ? ? ? ?<trade_type>'.$trade_type.'

? ? ? ? ? ?<sign>'.$sign.'

? ? ? ? </xml> ';

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

? ? ? ? $xml = $this->http_request($url,$post_xml);

? ? ? ? $array = $this->fromXml($xml);

? ? ? ? //var_dump($array);

? ? ? ? if($array['return_code'] == 'SUCCESS' && $array['return_code'] == 'SUCCESS'){

? ? ? ? ? ? $time = time();

? ? ? ? ? ? $tmp=array();//臨時數組用于簽名

? ? ? ? ? ? $tmp['appId'] = $appid;

? ? ? ? ? ? $tmp['nonceStr'] = $nonce_str;

? ? ? ? ? ? $tmp['package'] = 'prepay_id='.$array['prepay_id'];

? ? ? ? ? ? $tmp['signType'] = 'MD5';

? ? ? ? ? ? $tmp['timeStamp'] = "$time";

? ? ? ? ? ? $data['state'] = 200;

? ? ? ? ? ? $data['timeStamp'] = "$time";//時間戳

? ? ? ? ? ? $data['nonceStr'] = $nonce_str;//隨機字符串

? ? ? ? ? ? $data['signType'] = 'MD5';//簽名算法

? ? ? ? ? ? $data['package'] = 'prepay_id='.$array['prepay_id'];//統(tǒng)一下單接口返回的 prepay_id 參數值,提交格式如:prepay_id=*

? ? ? ? ? ? $data['paySign'] = $this->sign($tmp);//簽名

? ? ? ? ? ? $data['out_trade_no'] = $out_trade_no;

? ? ? ? }else{

? ? ? ? ? ? $data['state'] = 0;

? ? ? ? ? ? $data['text'] = "錯誤";

? ? ? ? ? ? $data['RETURN_CODE'] = $array['result_code'];

? ? ? ? ? ? $data['RETURN_MSG'] = $array['return_msg'];

? ? ? ? }

? ? ? echo json_encode($data);

? ? }

? ? //隨機32位字符串

? ? private function nonce_str(){

? ? ? ? $result = '';

? ? ? ? $str = 'QWERTYUIOPASDFGHJKLZXVBNMqwertyuioplkjhgfdsamnbvcxz';

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

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

? ? ? ? }

? ? ? ? return $result;

? ? }

? ? private function order_number($openid){

? ? ? ? return date('Ymd',time()).time().rand(10,99);//18位

? ? ? ? //return md5($openid.time().rand(10,99));//32位

? ? }

? ? //簽名 $data要先排好順序

? ? private function sign($data){

? ? ? ? $stringA = '';

? ? ? ? foreach ($data as $key=>$value){

? ? ? ? ? ? if(!$value) continue;

? ? ? ? ? ? if($stringA) $stringA .= '&'.$key."=".$value;

? ? ? ? ? ? else $stringA = $key."=".$value;

? ? ? ? }

? ? ? ? $wx_key = 'cdsykjyxgs1688510107199101244217';

? ? ? ? $stringSignTemp = $stringA.'&key='.$wx_key;

? ? ? ? return strtoupper(md5($stringSignTemp));

? ? }

? ? //curl請求

? ? public function http_request($url,$data = null,$headers=array())

{

? ? ? ? $curl = curl_init();

? ? ? ? if( count($headers) >= 1 ){

? ? ? ? curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

? ? ? ? }

? ? ? ? curl_setopt($curl, CURLOPT_URL, $url);

? ? ? ? curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

? ? ? ? curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

? ? ? ? if (!empty($data)){

? ? ? ? curl_setopt($curl, CURLOPT_POST, 1);

? ? ? ? curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

? ? ? ? }

? ? ? ? curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

? ? ? ? $output = curl_exec($curl);

? ? ? ? curl_close($curl);

? ? ? ? return $output;

? ? }

? ? //獲取xml

? ? private function xml($xml){

? ? ? ? $p = xml_parser_create();

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

? ? ? ? xml_parser_free($p);

? ? ? ? $data = "";

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

? ? ? ? ? ? if($key == 'xml' || $key == 'XML') continue;

? ? ? ? ? ? $tag = $vals[$value[0]]['tag'];

? ? ? ? ? ? $value = $vals[$value[0]]['value'];

? ? ? ? ? ? $data[$tag] = $value;

? ? ? ? }

? ? ? ? return $data;

? ? }

? ? private function fromXml($xml)

{

? ? ? ? // 禁止引用外部xml實體

? ? ? ? libxml_disable_entity_loader(true);

? ? ? ? return json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);

? ? }

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末男摧,一起剝皮案震驚了整個濱河市译打,隨后出現的幾起案子,更是在濱河造成了極大的恐慌乔询,老刑警劉巖竿刁,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搪缨,死亡現場離奇詭異副编,居然都是意外死亡,警方通過查閱死者的電腦和手機呻待,發(fā)現死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門蚕捉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迫淹,“玉大人,你說我怎么就攤上這事千绪。” “怎么了盹靴?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵稿静,是天一觀的道長辕狰。 經常有香客問我,道長悬钳,這世上最難降的妖魔是什么偶翅? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任聚谁,我火速辦了婚禮形导,結果婚禮上,老公的妹妹穿的比我還像新娘炫隶。我一直安慰自己阎曹,他們只是感情好芬膝,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布锰霜。 她就那樣靜靜地躺著癣缅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祷膳。 梳的紋絲不亂的頭發(fā)上屡立,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天膨俐,我揣著相機與錄音焚刺,去河邊找鬼乳愉。 笑死,一個胖子當著我的面吹牛蔓姚,可吹牛的內容都是我干的赂乐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼挖滤,長吁一口氣:“原來是場噩夢啊……” “哼斩松!你這毒婦竟也來了觉既?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎符欠,沒想到半個月后希柿,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡晕粪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年巫湘,在試婚紗的時候發(fā)現自己被綠了剩膘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怠褐。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡奈懒,死狀恐怖磷杏,靈堂內的尸體忽然破棺而出捏卓,到底是詐尸還是另有隱情怠晴,我是刑警寧澤蒜田,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布冲粤,位于F島的核電站,受9級特大地震影響厢呵,放射性物質發(fā)生泄漏襟铭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一错英、第九天 我趴在偏房一處隱蔽的房頂上張望椭岩。 院中可真熱鬧判哥,春花似錦、人聲如沸塌计。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锌仅。三九已至章钾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間热芹,已是汗流浹背贱傀。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伊脓,地道東北人府寒。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像报腔,于是被迫代替她去往敵國和親株搔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內容