微信支付小程序attach php,小程序调用支付功能

本文详细介绍了如何在小程序中实现微信支付。首先,后端服务器需要调用统一下单接口生成prepay_id,参数包括订单金额、商品描述、商户订单号和用户标识。接着,小程序端接收到服务器返回的支付参数后,调用wx.requestPayment发起支付请求。支付成功或失败后,小程序会显示相应提示。最后,可以参考异步接收支付结果章节来确认支付状态。
摘要由CSDN通过智能技术生成

>[info] 完整的小程序支付代码请查看WeiPHP根目录下的weiapp_demo目录

小程序提供了微信支付接口,但需要后端服务器先调用统一下单接口先下单,得到prepay_id才能支付。

因此首先我们需要先让后端服务统一下单,下单需要的参数如下

| 参数名 | 类型 | 必填 | 说明 |

| --- | --- | --- | --- |

| money | Float(10,2) | 是 | 单位:元,订单的金额 |

| body | String(128) | 否 | 商品描述,格式:商家名称-销售商品类目 |

| out_trade_no | String(32) | 否 | 商户订单号,商户系统内部的订单号,32个字符内、可包含字母 |

| openid | String(128) | 否 | 用户标识 |

调用例子:

~~~

order: function () {

var url = app.url + 'weiapp/Api/payment&PHPSESSID=' + wx.getStorageSync('PHPSESSID')

var that = this

wx.request({ //让服务器端统一下单,并返回小程序支付的参数

url: url,

data: {

money: 1, //支付1元

openid: wx.getStorageSync('openid')

},

success: function (res) {

if (res.data.status == 0) {//服务器参数返回不正常,显示错误信息

wx.showToast({

title: res.data.msg,

icon: '../../images/icon_wrong.png',

duration: 2000,

})

} else { //服务器参数返回正常,调用小程序支付接口

that.payment(res.data)

}

}

})

},

~~~

后端服务器PHP的payment方法,在这方法里我们指定Home/Service/payok 为异步接收微信的支付结果

~~~

function payment()

{

$info = get_pbid_appinfo();

$money = I('money');

$body = I('body');

if (empty($body)) {

// 商家名称-销售商品类目

$body = $info ['public_name'] . '-服务购买';

}

$out_trade_no = I('out_trade_no');

if (empty($out_trade_no)) {

$out_trade_no = date('ymd') . NOW_TIME . rand(100, 999);

}

$openid = I('openid');

if (empty($openid)) {

$token = get_pbid();

$openid = $GLOBALS ['myinfo'] [$token] ['openid'];

}

$appid = $info ['appid'];

$param ['body'] = $body;

$param ['out_trade_no'] = $out_trade_no;

$param ['total_fee'] = $money * 100;

$param ['openid'] = $openid;

$param ['mch_id'] = $info ['mch_id'];

$param ['partner_key'] = $info ['partner_key'];

$param ['attach'] = I('username');

$order = D('weixin/Payment')->weiapp_pay($appid, $param, 'Home/Service/payok');

echo json_url($order);

}

~~~

下完单后返回小程序支付需要的全部参数,直接使用即可

~~~

payment: function (data) {

wx.requestPayment({

'timeStamp': data.timeStamp,

'nonceStr': data.nonceStr,

'package': data.package,

'signType': data.signType,

'paySign': data.paySign,

success: function (res) { //支付成功,提示用户

wx.showToast({

title: '支付成功',

icon: 'success',

duration: 2000,

})

},

fail: function (res) { //支付失败,提示失败原因

wx.showToast({

title: res.errMsg,

icon: '../../images/icon_wrong.png',

duration: 2000,

})

}

})

}

~~~

要查询微信支付结果,可参考下一章:[异步接收支付结果](asynchronous_reception_of_payment_results.md) 章节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值