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('支付完成');
}
})
后端:
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);
}