Django对接支付宝实现支付宝充值金币功能示例

  

很多网站里都有金币,积分之类的虚拟货币,获取这些往往需要充值。那么问题来了,如何在Django中对接支付宝实现支付宝充值金币的功能呢?网上很多资料都是电商的,那些都会带有订单系统之类比较复杂,而充值金币功能不需要实现那么多功能。

  

<>强效果图如下:

  

 Django对接支付宝实现支付宝充值金币功能示例

  

 Django对接支付宝实现支付宝充值金币功能示例

  

 Django对接支付宝实现支付宝充值金币功能示例

  

现在就来实现Django对接支付宝支付功能吧!

  

<>强登录支付宝开放平台

  

点击进入蚂蚁金服开放平台https://open.alipay.com/platform/home.htm

  

进入支付宝沙箱环境https://openhome.alipay.com/platform/appDaily.htm& # 63;标签=info

  

 Django对接支付宝实现支付宝充值金币功能示例

  

如图,这里是你沙箱环境的配置,左侧沙箱工具有沙箱支付宝安卓版下载,沙箱账号是你的测试账号。

  

下载支付宝开放平台开发助手

  

点击打开下载链接

  

 Django对接支付宝实现支付宝充值金币功能示例

  

打开工具,生成密钥,然后妥善保管好! !

  

 Django对接支付宝实现支付宝充值金币功能示例

  

 Django对接支付宝实现支付宝充值金币功能示例

  

<>强保存密钥

  

 Django对接支付宝实现支付宝充值金币功能示例

  

把刚刚那个应用公钥2048重命名为:pub_2048.txt,把应用私钥2048重命名为:private_2048.txt,把这两个文件放在项目目录下。

  

注意:密钥的开始和结束一定要加上如下的字符串! ! !

        - - - - - - - - - - -开始私钥   这里粘贴里面的密钥   - - - - -端私钥——      

 Django对接支付宝实现支付宝充值金币功能示例

  

<强>复制支付宝的公钥并保存

  

 Django对接支付宝实现支付宝充值金币功能示例

  

把这段支付宝公钥复制,重命名为alipay_key_2048.txt,保存到项目目录中,注意加上如下字符串

        - - - - - - - - - - -开始私钥   这里粘贴里面的密钥   - - - - -端私钥——      

<强>设置公钥

  

把刚刚的pub_2048.txt里面的字符串复制到如下:

  

 Django对接支付宝实现支付宝充值金币功能示例

  

<强>调试支付宝支付接口

        从datetime进口datetime         从加密。PublicKey进口RSA   从加密。签名进口PKCS1_v1_5   从加密。散列进口SHA256   urllib。解析进口quote_plus   从base64进口decodebytes encodebytes      进口json         支付宝类(对象):   ”“”   支付宝支付接口   ”“”      def __init__(自我、appid app_notify_url app_private_key_path,   alipay_public_key_path、return_url debug=False):   自我。appid=appid   自我。app_notify_url=app_notify_url   自我。app_private_key_path=app_private_key_path   自我。app_private_key=没有   自我。return_url=return_url   张开(self.app_private_key_path)外交政策:   自我。app_private_key=RSA.importKey (fp.read ())      自我。alipay_public_key_path=alipay_public_key_path   张开(self.alipay_public_key_path)外交政策:   自我。alipay_public_key=RSA.import_key (fp.read ())      如果调试是真的:   自我。__gateway=" https://openapi.alipaydev.com/gateway.do "   其他:   自我。__gateway=" https://openapi.alipay.com/gateway.do "      def direct_pay(自我、主题out_trade_no、total_amount return_url=None, * * kwargs):   biz_content={   “主题”:主题,   “out_trade_no”: out_trade_no,   “total_amount”: total_amount,   :“product_code FAST_INSTANT_TRADE_PAY”,   #“qr_pay_mode”: 4   }      biz_content.update (kwargs)   data=https://www.yisu.com/zixun/self.build_body (“alipay.trade.page.pay”, biz_content self.return_url)   返回self.sign_data(数据)      def build_body(自我,方法、biz_content return_url=None):   data=https://www.yisu.com/zixun/{“app_id”: self.appid,   “方法”:方法,   “字符集”:“utf - 8”,   :“sign_type RSA2”,   “时间戳”:datetime.now ()。Y strftime (“% - % - % d % H: % m: % S”),   “版本”:“1.0”,   “biz_content”: biz_content   }      如果return_url不是没有:   [" notify_url "]=self.app_notify_url数据   [" return_url "]=self.return_url数据      返回数据      def sign_data(自我、数据):   数据。流行(“迹象”,没有一个)   #排序后的字符串   unsigned_items=self.ordered_data(数据)   unsigned_string="和" . join (“{0}={1}”。格式为k (k、v), v unsigned_items)   符号=self.sign (unsigned_string.encode (“utf - 8”))   # ordered_items=self.ordered_data(数据)   quoted_string="和" . join (“{0}={1}”。格式(k, quote_plus (v)) k、v unsigned_items)      #获得最终的订单信息字符串   signed_string=quoted_string + ",标志=" + quote_plus(签名)   返回signed_string      def ordered_data(自我、数据):   complex_keys=[]   关键,价值data.items ():   如果isinstance(价值、dict类型):   complex_keys.append(关键)      #将字典类型的数据倾倒出来   在complex_keys关键:   (例子)=json数据。转储(数据(关键),分隔符=(',',':'))      返回排序([k (k、v), v在data.items ()))      def标志(自我,unsigned_string):   #开始计算签名   关键=self.app_private_key   签名者=PKCS1_v1_5.new(键)   签名=signer.sign (SHA256.new (unsigned_string))   # base64编码,转换为unicode表示并移除回车   符号=encodebytes(签名).decode (use utf8) .replace (" \ n ", " ")   返回信号      def _verify(自我,raw_content,签名):   #开始计算签名   关键=self.alipay_public_key   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Django对接支付宝实现支付宝充值金币功能示例