1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | wx.requestPayment( { 'timeStamp' : e.data.timeStamp.toString(), 'nonceStr' : e.data.nonceStr.toString(), 'package' : e.data.package, 'signType' : e.data.signType, 'paySign' : e.data.sign, 'success' : function (res) { //create order wx.request({ url: o.d.ceshiUrl + "/leokim/create_order" , method: "post" , data: { openid: openid, id: goods_info.goods_id, type: goods_info.type, code: goods_info.code }, header: { "Content-Type" : "application/x-www-form-urlencoded" }, 'success' : function (e) { var pages = getCurrentPages(); var currPage = pages[1]; currPage.setData({ is_buy: 1 }); }, 'fail' : function (res) { } }) wx.showToast({ image: '/images/success.png' , title: "购买成功." , duration: 2e3 }); }, 'fail' : function (res) { var msg = '购买失败' ; if (res.errMsg == 'requestPayment:fail cancel' ){ msg = '取消支付' ; }; wx.showToast({ image: '/images/failed.png' , title: msg, }); }, 'complete' : function (res) { console.log( '支付完成' ); } }) |
后端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | function wechat_pay() { $openid = 'ocLsr5OXtYZZe6dUrMLJxsm0CTEk' ; $key = 'a81bfe3a84df3ceb5cc54bd3e1605ba2' ; $post = $this ->input->post(); $goods_name = $post [ 'goods_name' ]; //get prepay_id $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder' ; $data = array (); $data [ 'appid' ] = $this ->appid; $data [ 'mch_id' ] = $this ->mch_id; $data [ 'nonce_str' ] = mt_rand(10000000,99999999); $data [ 'body' ] = $goods_name ; $data [ 'out_trade_no' ] = 'wkt' . time(). mt_rand(10000000,99999999); // $data['total_fee'] = $price * 100; $data [ 'total_fee' ] = 1; $data [ 'spbill_create_ip' ] = '114.96.242.184' ; $data [ 'notify_url' ] = 'http://www.weixin.qq.com/wxpay/pay.php' ; $data [ 'trade_type' ] = 'JSAPI' ; $data [ 'openid' ] = $openid ; $data [ 'sign' ] = $this ->createSign( $data , $key ); $data = $this ->array_to_xml( $data ); $result = $this ->curlPost( $url , $data ); $result = $this ->xml_to_array( $result ); $prepay_id = $result [ 'prepay_id' ]; $return_data = array ( 'appId' => $this ->appid, 'timeStamp' =>time(), 'nonceStr' =>mt_rand(10000000,99999999), 'package' => "prepay_id=$prepay_id" , 'signType' => 'MD5' ); $return_data [ 'sign' ] = $this ->createSign( $return_data , $key ); echo json_encode( $return_data ); } public function create_order(){ $result = array ( 'flag' => 'N' ); $post = $this ->input->post(); $type = $post [ 'type' ]; $id = $post [ 'id' ]; $openid = $post [ 'openid' ]; $code = $post [ 'code' ]; $user_id = $this ->get_user_id_by_open_id( $openid ); $goods_table_info = $this ->get_table_info_by_type( $type ); $table = $goods_table_info [ 'table' ]; $key = $goods_table_info [ 'key' ]; $sql = "INSERT INTO `t_aci_bought` (`bought_id`, `type`, `related_id`, `price`, `status`, `user_id`, `add_time`) SELECT NULL, '$type' , $id , price, 0, $user_id , NOW() FROM ` $table ` WHERE ` $key `= $id "; $this ->db->query( $sql ); $insert_id = $this ->db->insert_id(); if ( $insert_id > 0){ $result [ 'flag' ] = 'Y' ; //TODO 三级分销 } echo json_encode( $result ); } |