支払結果の保存

2513 ワード

フロントエンドページはこのデータをバックエンドに送信し、バックエンドは支払い結果を検証して保存します.
1.バックエンドインタフェースの設計
要求方式:PUT/payment/status/?アリペイパラメータ
要求パラメータ:クエリー文字列パラメータ、上の表を参照
返却データ:JSON
戻り値
を選択します.
必要かどうか
説明
trade_id
str
いいえ
支付宝流水号
2.バックエンド実装
payment/views.pyでのビューの作成
class PaymentStatusView(APIView):
    """      """ def put(self, request): data = request.query_params.dict() signature = data.pop("sign") alipay = AliPay( appid=settings.ALIPAY_APPID, app_notify_url=None, #     url app_private_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/app_private_key.pem"), alipay_public_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/alipay_public_key.pem"), #       ,           ,        , sign_type="RSA2", # RSA    RSA2 debug=settings.ALIPAY_DEBUG #   False ) success = alipay.verify(data, signature) if success: #      order_id = data.get('out_trade_no') #          trade_id = data.get('trade_no') Payment.objects.create( order_id=order_id, trade_id=trade_id ) OrderInfo.objects.filter(order_id=order_id, status=OrderInfo.ORDER_STATUS_ENUM['UNPAID']).update(status=OrderInfo.ORDER_STATUS_ENUM["UNCOMMENT"]) return Response({'trade_id': trade_id}) else: return Response({'message': '    '}, status=status.HTTP_403_FORBIDDEN)

転載先:https://www.cnblogs.com/hzlnice/p/9393151.html