payjs教程_jsapi和native支付的区别

payjs教程_jsapi和native支付的区别frompayjsimportPayJS#也可根据个人习惯选择使用Payjs/PAYJS/payjsfrompayjsimportPayJSNotify#也可根据个人习惯选择使用

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

from payjs import PayJS # 也可根据个人习惯选择使用 Payjs/PAYJS/payjs
from payjs import PayJSNotify # 也可根据个人习惯选择使用 PayjsNotify/PAYJSNotify

MCHID = '这里是商户号'
KEY = '这里是商户密钥'

# 初始化
p = PayJS(MCHID, KEY)

# 扫码支付
OUT_TRADE_NO = '2017TEST' # 外部订单号(自己的支付系统的订单号,请保证唯一)
TOTAL_FEE = 1 # 支付金额,单位为分,金额最低 0.01 元最多 10000 元
BODY = '测试支付' # 订单标题
NOTIFY_URL = 'https://pay.singee.site/empty/' # Notify 网址
ATTACH = 'info' # Notify 内容
r = p.QRPay(out_trade_no=OUT_TRADE_NO, total_fee=TOTAL_FEE, body=BODY, notify_url=NOTIFY_URL, attach=ATTACH)
if r:
print(r.code_url) # 二维码地址(weixin:// 开头,请使用此地址构建二维码)
print(r.qrcode) # 二维码地址(https:// 开头,为二维码图片的地址)
print(r.payjs_order_id) # 订单号(PAYJS 的)
else:
print(r.STATUS_CODE) # HTTP 请求状态码
print(r.ERROR_NO) # 错误码
print(r.error_msg) # 错误信息
print(r)

# 构造收银台支付网址(仅构造链接,请使用浏览器 302 到这个网址,无法预检查调用是否成功)
c = p.get_cashier_url(out_trade_no=OUT_TRADE_NO, total_fee=TOTAL_FEE, body=BODY, callback_url=CALLBACK_URL, notify_url=NOTIFY_URL, attach=ATTACH)
print(c)

# JSApi 支付
OPENID = '这里填写支付用户的 OpenID' # 支付用户在 PayJS 端的 OpenID,可通过 get_openid 获取
j = p.JSApiPay(out_trade_no=OUT_TRADE_NO, total_fee=TOTAL_FEE, openid=OPENID, body=BODY, notify_url=NOTIFY_URL, attach=ATTACH)
if j:
print(j.jsapi) # 用于发起支付的支付参数
else:
print(j.STATUS_CODE) # HTTP 请求状态码
print(j.ERROR_NO) # 错误码
print(j.error_msg) # 错误信息
print(j)

# 刷卡支付
AUTH_CODE = '这里填写用户侧 18 位数字' # 用户的支付条码或二维码所对应的数字
m = p.MicroPay(out_trade_no=OUT_TRADE_NO, total_fee=TOTAL_FEE, auth_code=AUTH_CODE, body=BODY)
print(m)

# 订单查询
s = p.check_status(payjs_order_id=r.payjs_order_id)
if s:
print(s.paid) # 是否已支付
else:
print(s.error_msg) # 错误信息
print(s)

# 订单关闭
t = p.close(r.payjs_order_id)
if t:
print('Success')
else:
print('Error')
print(t.return_msg)

# 订单退款
t = p.refund(r.payjs_order_id)
if t:
print('Success')
else:
print('Error')
print(t.return_msg)

# 获取用户 OpenId
o = p.get_openid(callback_url=CALLBACK_URL)
print(o)

# 回调验证
n = PayJSNotify(KEY, '回调内容(str 或 dict)')
print(n)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167964.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python读取csv文件,将文件中第一列显示出来

    python读取csv文件,将文件中第一列显示出来文件:stu_info.csv代码:importcsv#导入csv模块try:file=open(‘stu_info.csv’,’r’)#打开文件exceptFileNotFoundError:print(‘文件不存在’)else:stus=csv.reader(file)#读取文件内容forstu…

    2025年6月14日
    2
  • 传统图像降噪算法之BM3D原理详解

    传统图像降噪算法之BM3D原理详解       图像降噪是一个十分具有实用价值的研究方向,因为噪声总是无处不在的。当处于比较昏暗的环境时,噪声将极大地影响着我们所拍摄的图像。如今,随着深度学习算法以及相关硬件的不断发展,深度卷积网络同样在图像降噪领域占据了主流,并且代表了该领域最优异的成绩。但是,深度神经网络同样有着其缺点,例如模型过于庞大而计算复杂度过高,以及缺乏一些理论上的解释性,当然这些缺点正不断地得到弥补。为了更好地理解图像降噪的基本原理,我们有必要回过头来仔细研

    2022年6月7日
    45
  • Boost.Lockfree官方文档[通俗易懂]

    Boost.Lockfree官方文档[通俗易懂]目录介绍与动机简介与术语非阻塞数据结构的性质非阻塞数据结构的性能阻塞行为的来源数据结构数据结构配置示例队列栈无等待单生产者/单消费者队列脚注介绍与动机简介与术语术语“非阻塞”表示并发数据结构,该结构不使用传统的同步原语(例如警卫程序)来确保线程安全。MauriceHerlihy和NirShavit(比较“多处理器编程的艺术”)区分了3种类型的非阻塞数据结构,每种结构具有不同的属性:如果保证每个并发操作都可以在有限的步骤中完成,则数据.

    2022年7月19日
    27
  • C#用什么开发_hbase写数据流程

    C#用什么开发_hbase写数据流程最近公司程序需要嵌入各个浏览器的插件。首先

    2025年5月28日
    2
  • LoadRunner教程03:界面分析[通俗易懂]

    LoadRunner教程03:界面分析[通俗易懂]一、virtualusergeneratorLoadRunner拥有各种Vuser类型,每一类型都适合于特定的负载测试环境。这样就能够使用Vuser精确模拟真实世界的情形。Vuser在方案中执行的操作是用Vuser脚本描述的。Vuser脚本的结构的内容因Vuser类型的不同而不同。注意:VuGen仅能录制Windows平台上的会话。但录制的Vuser脚本既可以在Window平台上运

    2022年5月23日
    34
  • 如何打开.ziw格式文件?(附赠)win10将程序右键加到“发送到”

    如何打开.ziw格式文件?(附赠)win10将程序右键加到“发送到”如何打开.ziw文件

    2022年10月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号