1,要使用微擎特定的小程序框架

https://gitee.com/we7coreteam/wxapp

2,必须正确的配置siteinfo

https://www.kancloud.cn/qq188872170/xcx/673488

var siteinfo = {
“m”: \’yhjd_fhjs\’,
“uniacid”: “2”,
“acid”: “2”,
“multiid”: “0”,
“version”: “1.01”,
“siteroot”: “https://02.zcwlkj.cn/app/index.php”,
\’method_design\’: \’3\’
};
module.exports = siteinfo;
 
3,发起支付的页面,必须有m参数
appInfo.util.request({
\’url\’: \’entry/wxapp/pay\’, //调用wxapp.php中的doPagePay方法获取支付参数
data: {
orderid: params.ordertid,
fee: params.fee,
openid: appInfo.globalData.openid,
m: appInfo.siteInfo.m
},
\’cachetime\’: \’0\’,
success(res) {
console.log(res);
}
});
4,PHP端生成支付参数——————wxapp.php文件就是专门用来写这个小程序支付逻辑的
class We7WxappDemoModuleWxapp extends WeModuleWxapp {
    public function doPagePay() {
        global $_GPC, $_W;
        //获取订单号,保证在业务模块中唯一即可
        $orderid = intval($_GPC[\’orderid\’]);
        //构造支付参数
        $order = array(
            \’tid\’ => $orderid,
            \’user\’ => $_W[\’openid\’], //用户OPENID
            \’fee\’ => floatval($fee), //金额
            \’title\’ => \’小程序支付示例\’,
        );
        //生成支付参数,返回给小程序端
        $pay_params = $this->pay($order);
        if (is_error($pay_params)) {
            return $this->result(1, \’支付失败,请重试\’);
        }
        return $this->result(0, \’\’, $pay_params);
    }
}
小程序端发起支付
app.util.request({
    \’url\’: \’entry/wxapp/pay\’, //调用wxapp.php中的doPagePay方法获取支付参数
    data: {
        orderid: options.orderid,
    },
    \’cachetime\’: \’0\’,
    success(res) {
        if (res.data && res.data.data && !res.data.errno) {
            //发起支付
            wx.requestPayment({
                \’timeStamp\’: res.data.data.timeStamp,
                \’nonceStr\’: res.data.data.nonceStr,
                \’package\’: res.data.data.package,
                \’signType\’: \’MD5\’,
                \’paySign\’: res.data.data.paySign,
                \’success\’: function (res) {
                    //执行支付成功提示
                },
                \’fail\’: function (res) {
                    backApp()
                }
            })
        }
    },
    fail(res) {
        wx.showModal({
            title: \’系统提示\’,
            content: res.data.message ? res.data.message : \’错误\’,
            showCancel: false,
            success: function (res) {
                if (res.confirm) {
                    backApp()
                }
            }
        })
    }
})
验证支付结果
和模块一样,验证代码写在 payResult() 函数中即可。
 
 
微擎退款功能——
1,微擎的支付订单存储在ims_core_paylog中,
2,退款订单存储在ims_core_refundlog中
3,支付和退款,都必须配置参数,退款要配置文件
证书:
使用微信退款功能需要上传双向证书。
证书下载方式:
微信商户平台(pay.weixin.qq.com)–>账户中心–>账户设置–>API安全–>证书下载。
我们仅用到apiclient_cert.pem 和 apiclient_key.pem这两个证书
 
  1. //首先load模块函数
  2. load()->model(\'refund\');
  3. //创建退款订单
  4. //$tid 模块内订单id
  5. //$module 需要退款的模块
  6. //$fee 退款金额
  7. //$reason 退款原因
  8. //成功返回退款单id,失败返回error结构错误
  9. $refund_id = refund_create_order($tid, $module, $fee, $reason);
  10. if (is_error($refund_id)) {
  11. itoast($refund_id[\'message\'], referer(), \'error\');
  12. }
  13. //发起退款
  14. $refund_result = refund($refund_id);
  15. if (is_error($refund_result)) {
  16. itoast($refund_result[\'message\'], referer(), \'error\');
  17. } else {
  18. pdo_update(\'core_refundlog\', array(\'status\' => 1), array(\'id\' => $refund_id));
  19. //XXX(这里继续写自己的其他逻辑)
  20. itoast(\'退款成功\', referer(), \'info\');
  21. }

版权声明:本文为bluestear原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/bluestear/p/11247523.html