♦先看本节效果图
详细说明请看微信支付官方开发文档:
1. 用户在小程序内下单,选择微信支付;
2. 商户在小程序中调用小程序登录API,获得参数code;
3. 小程序端向商户后台发起接口调用,并将code及订单相关参数一起发送到商户后台。
4. 商户后台接收小程序发送的code和订单相关参数,并结合appid,secret两个参数,获取openid;
5. 商户后台根据订单信息,调用统一下单接口;
6. 统一下单接口返回预支付信息,商户后台获取预支付信息,并进行再次签名,返回支付参数(5个参数和sign)给小程序;
7. 小程序获得支付参数,发起支付请求;
8. 用户输入支付密码,支付完成;
9. 微信后台向商户后台发出异步通知,同时给小程序回调支付结果;
10.商户后台接收微信发送到异步通知,并进行相关业务处理,并返回SUCCESS或FAIL的标志以告知微信;
11.小程序获取支付回调结果,并向商户后台发起接口请求,获取订单状态;并进行支付成功或失败对应的页面跳转。
业务流程图
♦核心代码就下面这些
♦新建Pay.php文件
//支付接口
class Pay {
/*
* 小程序微信支付*/
protected $appid;
protected $mch_id;
protected $key;
protected $openid;
protected $out_trade_no;
protected $body;
protected $total_fee;
function __construct($appid, $openid, $mch_id, $key,$out_trade_no,$body,$total_fee) {
$this->appid = $appid;
$this->openid = $openid;
$this->mch_id = $mch_id;
$this->key = $key;
$this->out_trade_no = $out_trade_no;
$this->body = $body;
$this->total_fee = $total_fee;
}
public function pay() {
//统一下单接口
$return = $this->weixinapp();
return $return;
}
//统一下单接口
private function unifiedorder() {
$url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
$parameters = array(
'appid' => $this->appid, //小程序ID
'mch_id' => $this->mch_id, //商户号
'nonce_str' => $this->createNoncestr(), //随机字符串
'body' => $this->body,
'out_trade_no'=> $this->out_trade_no,
//'total_fee' => floatval(0.01 * 100), //总金额 单位 分
'total_fee' => $thi