当前位置:   article > 正文

qt调用python文件(支付宝沙盒)以及整体打包(1)_qt接入支付宝沙箱

qt接入支付宝沙箱

qt调用python文件函数以及整体打包(1)

qt调用python文件函数以及整体打包(1)

*新建qt工程调用python****文件

1、新建一个qt工程(方便调试,第一次建议选择qt控制台应用)

在这里插入图片描述

2、一直点击下一步,我选择mingw,选择msvc2015后期会与mingw有一个地方不一样

3、右键工程名字,add new->python->python file ->名字随便起(回合原始文件冲突)
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MbPIlCv1-1642774886920)(images/btgH_VPUpufzN6AsttAOrtGF0bUZoYYrnAj9p2fvq14.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O3zJ93uc-1642774886921)(images/H9uFPfARm4-cjb9LYpZV8E6E282Agz-q_B70RCQEpfI.png)]

4、在qt的pro文件里添加python的include和libs

INCLUDEPATH +=./python39/include/   
LIBS += -L./python39/libs \
        -l_tkinter\
        -lpython3\
        -lpython39

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5、在main.cpp里面添加

#include <math.h>
#include <Python.h>
#include "QDebug"
#include <iostream>
using namespace std;
#include <QCoreApplication>
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Py_SetPythonHome(L"./python39/");
    Py_Initialize();
    if ( !Py_IsInitialized() )
    {
        qDebug() <<'2';
    }
    PyObject* pModule = PyImport_ImportModule("test_1");  // 这里的test_1就是创建的python文件
    if (!pModule) {
            cout<< "Cant open python file!\n" << endl;
            qDebug() <<'3';
        }
    PyObject* pFunhello= PyObject_GetAttrString(pModule,"hello");  // 这里的hellow就是python文件定义的函数
 
    if(!pFunhello){
        cout<<"Get function hello failed"<<endl;
        qDebug() <<'4';
    }
    PyObject_CallFunction(pFunhello,NULL);
    Py_Finalize();
    return a.exec();
}
  • 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

6、在test_1.py中添加

def hello():
    print('2')
  • 1
  • 2

7、点击编译会报错,把我分享的python39文件夹复制过去,然后再次点击编译,成功,如果没有用我给的python环境会出现以下问题(具体参考https://blog.csdn.net/alxe_made/article/details/83382159)

8、点击运行,会出现can’t open python file ,原因是我们需要把我们的c++代码调用的python文件地址是相对路径,所有需要把python文件复制到build文件夹里

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B5TwJMmF-1642774886922)(images/XKRu82FsqMigJGEL8W2Zynqy4HsRq4ic0ySlOqBjNGc.png)]

9、修改完之后,重新运行即可成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-670PI4OB-1642774886922)(images/-iqOK3zPdYlWxkrrRASOgTSAE88LdbEGctz8lXY0zc4.png)]

*qt工程调用支付宝的python****支付文件(此教程与上面的有些许区别)

1、因为支付宝的python文件里面需要导入alipay的sdk,所以当我直接们import alipay时,也会报can’t open python file,因为这个alipay不在当前文件夹下面,所以需要我们手动复制到相同文件夹,此外我们还需要复制pymysql,rsa两个文件夹(如下图所示)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3pUECKbh-1642774886923)(images/pz2fi5SKGBfv3G5w4tHwqV9IKFEoVT_j0R4ejZGJ7LI.png)]

2、登录支付宝的沙盒https://openhome.alipay.com/platform/appDaily.htm

个人支付宝是扫码即可,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ecfa1A3E-1642774886924)(images/arAqfWesAFp3sU5hXfVtSxdBcS0Gbkp1qNGOL0RpF5k.png)]

3、我们需要自定义密钥(如下图),生成密钥的网站为https://miniu.alipay.com/keytool/create

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g9afGv1d-1642774886925)(images/QwzC4cFrv860KKhoHCm8VRk-iCoQxhX9d7-1X6Ev7gU.png)]

4、如下图选项,点击生成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GJIC07Yt-1642774886926)(images/INyjVShY-Kd0MZN4B5DsO6RQ4z2e6Oxxi1d_Y6PzQx4.png)]

5、将生成的应用公钥复制到下图的框内,保存设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H6lLkb95-1642774886926)(images/x3BCrqHQR7cUOz7Ix61YAOjBPgh3xBNhirQ3QhpaOAw.png)]

6、完成后会出现下方的图,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P1dFSgnl-1642774886927)(images/9PC-DV_X8fFu9EEImKuka1_NpOGTVb9JB3KkOAxnxVQ.png)]

7、复制支付宝的公钥和应用私钥以及APPID到我们的python代码中(如下图所示)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-joGri11j-1642774886927)(images/b80FPRQ3XV7qrfvtmPB3xgJ4irNsIZPa3Ji6kZAXXog.png)]

8、主要代码介绍

第一行的pay(订单号,金钱,订单主题,订单超时时间)

第二和第三行就是生成二维码的信息

第四行的if是判断有无支付成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kt83PBkF-1642774886927)(images/1eF0R3aeIF0W9wKaQTjOvu8BCn6Fa3-uYDGS9V3eeaw.png)]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/742785
推荐阅读
相关标签
  

闽ICP备14008679号